Mailing-List: contact cygwin-apps-help AT sourceware DOT cygnus DOT com; run by ezmlm Sender: cygwin-apps-owner AT sourceware DOT cygnus DOT com List-Subscribe: List-Archive: List-Post: List-Help: , Delivered-To: mailing list cygwin-apps AT sources DOT redhat DOT com Message-ID: <20010624235820.48557.qmail@web14507.mail.yahoo.com> Date: Mon, 25 Jun 2001 09:58:20 +1000 (EST) From: =?iso-8859-1?q?Danny=20Smith?= Subject: Fwd: Patch: MinGW fastcall support To: mingw-dvlpr AT lists DOT sourceforge DOT net, cygwin-apps AT cygwin DOT com MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="0-1025202362-993427100=:45504" Content-Transfer-Encoding: 8bit --0-1025202362-993427100=:45504 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Content-Disposition: inline I have asked Eric to submit patches to binutils and gcc-patches. Any comments? Danny --- Eric Kohl wrote: > From: "Eric Kohl" > To: "Danny Smith" > Subject: Patch: MinGW fastcall support > Date: Sun, 24 Jun 2001 20:34:37 +0200 > > Hello, Danny! > > I have just completed patches that implement fastcall support to the > current > mingw version (gcc-2.95.3-4 and binutils-2.11.90). > > The 'gcc' patch is based on a patch I found on the net. The original > patch > (from July 2000) implemented argument passing via ecx and edx, but > function > labels we not generated correctly. I added the code to generate > decorated > fastcall symbols. > > The binutils patch enables 'as' to handle fastcall symbols. It also > extends > 'dlltool' to create import libraries and export tables that contain > fastcall > functions. > > These patches were successfully tested with a modified version of the > ReactOS source code. The current cvs source treats fastcall functions > as > stdcall functions. > > Please apply these patches to the mingw source tree. > > Best regards, > Eric Kohl > > > Change log for fastcall_gcc.diff: > > gcc/ChangeLog: > > * gcc/config/i386/crtdll.h: > (CPP_PREDEFINES): Add fastcall attributes. > > * gcc/config/i386/cygwin.h: > (CPP_SPEC): Add fastcall attributes. > (I386_PE_STRIP_ENCODING): Return length of internal fastcall prefix > (+). > (ASM_OUTPUT_LABELREF): Convert internal fastcall symbol to official > fastcall > symbol. > > * gcc/config/i386/mingw32.h: > (CPP_PREDEFINES): Add fastcall attributes. > > * gcc/config/i386/win-nt.h: > (CPP_PREDEFINES): Add fastcall attributes. > (ENCODE_SECTION_INFO): Decorate fastcall function. > > * gcc/config/i386/i386.c: > (i386_valid_type_attribute_p): Accept 'fastcall' as a valid type > attribute. > (i386_return_pops_args): Fastcall functions pop the stack. > (init_cumulative_args): Reserve two registers and enable swapping of > eax and > ecx. > (function_arg): Swap eax and ecx. > > * gcc/config/i386/i386.h: > (CUMULATIVE_ARGS): Add flag to indicate register swapping. > > * gcc/config/i386/winnt.h: > (gen_fastcall_suffix): New function. Decorates a label name with a > preliminary fastcall prefix (+) > and the stdcall suffix. > (i386_pe_encode_section_info): Calls gen_fastcall_suffix() if a > symbol has a > fastcall attribute. > > > > ChangeLog for fastcall_binutils.diff: > > binutils/ChangeLog: > > * binutils/deflex.l: > Accept at-sign as first character of an ID. > > * binutils/dlltool.c: > (scan_drectve_symbol): Search for last at-sign instead of first. > (scan_filtered_symbol): Search for last at-sign instead of first. > (gen_exp_file): Generate microsoft-compatible fastcall symbols. > (xlate): Undecorate fastcall symbol. > (make_label): Decorate fastcall symbol. > (make_one_lib_file): Generate microsoft-compatible fastcall symbols. > > * gas/config/te-pe.h: > (AT_LEX): Accept at-sign (@) as first character of a label. > > > ATTACHMENT part 2 application/x-compressed name=fastcall-patches.tgz _____________________________________________________________________________ http://messenger.yahoo.com.au - Yahoo! Messenger - Voice chat, mail alerts, stock quotes and favourite news and lots more! --0-1025202362-993427100=:45504 Content-Type: application/x-gzip-compressed; name="fastcall-patches.tgz" Content-Transfer-Encoding: base64 Content-Description: fastcall-patches.tgz Content-Disposition: attachment; filename="fastcall-patches.tgz" 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 mPGclJIi3JcHAlmWiG9vDP2GKjO0F9JpPCJRJDfDoMcVV9pQCqLSzPdoje+o 4vYOv/QlNkYKjjRwzLkHuUKe1w80kNJagrL4CJrvGdcW5I7zOK1p2rdRRinD OoQdL3yMGggpTBA5Mt0ewPBiQkOGc+IiTI3CQpc5pqaL8TQrNtMOz2X5CLh6 Kl544iRhzHQNH8IxBYrHU1DNxIB/Io8cgluW5kLUOLIFcRksWyAtDZ1VoKbk ZnhG6buMAb1hKnEfRKu+7WumTEZ4XvTu3TuRbTuuPcawcxFEJkTbx+EI5bts VnwGMituWoaFfkubyOQV+cYBW8Nh++Kki2pC9d2wBChvLnszeQUnTZ1S8OWc +dhVOKFksctwwlkM3nP/kPQVAjkflYfiBRRik8oLCmsMEasQoQ+NKg4Weo2w jxJHznx+08TkECBLsatGF9mqrIDHSYyNw4u6j+bNRNkqCdnR3JnqYTYR5qap FSWiZ9j5Z/vpyfLhhV3UlAs6DHJtjCxh7lBYHYTijjYhDY7KNjCxMSrg9To6 KAqIgFsNjcPj8bdvu0xFKBWtTGoHhwpJR5JzueitAJetwYV60r/qnbUGv0EJ lLzYgHaXet4m38MVCM0vHEVTBD1LYuKb5T9anV6SFwL6IRDyg9A8oYZpN3ml ktN5nSJvJHpBeUVgFWGrsO0db0+2iiChi4LM3ZPOaKheovZf9TojgfxdDrjw IM/HTqnIHBXeSHozx2S8fsbPYtrh5aZO77wvRJLlmia2hJrC/9+O+j7+NsKA I7ptHIsxuDY/jjHWKxnTvfzM6q0/tMVS+rYf+ic4wtFeus3HPM3zNbmI7HWC ociJZFbRTHr2Q1THalEroy1OdOavIjl9p4ru08py8YXmfuW+g5+SeDbcMn65 z2d0LEAZMHW6volxBKOqLX+3x/9iuh+VjDGdF/9zypsJ2C69or7zV6Ha/+nL WZu2aZu2aZu2aZu2aZu2aZu2aZu2aZu2aZu2aZu2aT/Q/g9BMMEkAFAAAA== --0-1025202362-993427100=:45504--