This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

PATCH: Updated version of x86_64-pc-mingw32 support of gcc.


Hi,

here is the updated version of my previous patch. Now the problems in 
explow.c for DARWIN are solved. Some of these patches also eliminate some 
trailing whitespaces as GNAT wants, therefore sorry about the mess. Also I 
added the patch for the new pragma command macro_push/macro_pop within 
this patch, because it is necessary for my to use my headers and crt (an 
inoffical build, which may is getting merged to MinGW - as I hope). 
Currently there are two open points for the complete support in gcc. MS 
passes floating points in XMM and standard register. Currently I pass them 
just in the standard one. The other open point is, that va-incomings need 
to copy the register arguments at the stack on to the caller reserved 
area. But by this version, you are able to build a runtime and translate 
easy programs (not using va_list).

You can build the cross compiler itself, by configuring for this target 
and using "make all-gcc" "make install-gcc". For the libgcc you need 
runtime headers, which are hopefull soon available too. Dont miss to use 
also the patch I posted allready to gcc by subject "Fw: PATCH: Redefining 
OUTGOING_REG_PARM_STACK_SPACE (sorry to fast sent :))", because this 
target needs a different handling of the outgoing register parameters as 
other i386 targets are using.

I hope, there is somebody to verify this patch and may commit.

Regards,
 i.A. Kai Tietz

ChangeLog:
2007-03-01  Kai Tietz   <kai.tietz@onevision.com>

        * libgcc/config.host: Add support for an x86_64-mingw* target.
        * gcc/doc/tm.texi: Add comment for HANDLE_PRAGMA_PUSH_POP_MACRO
          (OUTGOING_REG_PARM_STACK_SPACE): Adjust comment for value
        * gcc/explow.c: (convert_memory_address) Introduced stack 
alignment for x86_64-* (for mingw)
        * gcc/config.gcc: Add support for an x86_64-mingw* target.
        * gcc/config.host: Likewise
        * gcc/config/i386/i386.h: (LONG_TYPE_SIZE) x86_64-mingw needs 
32-bit size
          (call_used_regs): Adjustments for target
          (REGPARM_MAX): Likewise
          (OUTGOING_REG_PARM_STACK_SPACE): Added conditional target define 
for x86_64-pc-mingw32
          (REG_PARM_STACK_SPACE): Changed for x86_64-pc-mingw32 target
          (SSE_REGPARM_MAX): Likewise
        * gcc/config/i386/cygming.h: (DWARF2_DEBUGGING_INFO) for 
x86_64-mingw needs to be valued 1
          (DWARF2_UNWIND_INFO): Likewise
          (PREFERRED_DEBUGGING_TYPE): for x86_64-mingw it needs to be 
DWARF2_DEBUG by default
          (DBX_REGISTER_NUMBER): Have to use dbx64_register_map for 
x86_64-mingw
          (SIZE_TYPE): Needs to be "long long unsigned int" for 
x86_64-mingw
          (PTRDIFF_TYPE): Needs to be "long long int" for x86_64-mingw
          (POINTER_SIZE: Needs to be 64 for x86_64-mingw
          (HANDLE_PRAGMA_PUSH_POP_MACRO): New macro
          (TARGET_SUBTARGET_DEFAULT): Defined proper for x86_64-mingw
        * gcc/config/i386/i386.md: (allocate_stack64) New
          (*movdi_1_rex64): Ensure pushed arguments are 64-bit relocatable 
for x86_64-mingw required by PE
        * gcc/config/i386/cygwin.asm: Dummy adjustments for target build 
of x86_64-mingw
        * gcc/config/i386/i386.opt: (64BIT_MS_ABI) New
        * gcc/config/i386/mingw32.h: Adjustments for target x86_64-mingw
          (EXTRA_OS_CPP_BUILTINS): Added predefined macro 
_INTEGRAL_MAX_BITS with the value of bitsize of a pointer
          (WIN64,_WIN64,__MINGW64__): New predefined macros for 
x86_64-mingw target
          (STANDARD_INCLUDE_DIR,STANDARD_STARTFILE_PREFIX_1,): Include for 
x86_64-mingw from different place
          (HANDLE_PRAGMA_PUSH_POP_MACRO): Introduce to be true for new 
target
        * gcc/config/i386/i386.c: x86_64-mingw calling convention and 
enabling mingw specific code for it.
        * gcc/config.build: Add x86_64-mingw target
        * fixincludes/mkfixinc.sh: Add x86_64-mingw target
        * gcc/unwind-generic.h: Patch for supporting x86_64-pc-mingw32
        * gcc/c-pragma.c: Support of pragma macro_push/macro_pop

Patches:

----------------------------------------
  Kai Tietz - Software engineering
  OneVision Software Entwicklungs GmbH & Co KG
  Dr.-Leo-Ritter-Str. 9, 93049 Regensburg, Germany
  Phone: +49-941-78004-0
  FAX:   +49-941-78004-489
  WWW:   http://www.OneVision.com

Attachment: libgcc_config.host.diff
Description: Binary data

Attachment: gcc_config.build.diff
Description: Binary data

Attachment: gcc_config.gcc.diff
Description: Binary data

Attachment: gcc_config.host.diff
Description: Binary data

Attachment: gcc_config_i386_cygming.h.diff
Description: Binary data

Attachment: gcc_config_i386_cygwin.asm.diff
Description: Binary data

Attachment: gcc_config_i386_i386.c.diff
Description: Binary data

Attachment: gcc_config_i386_i386.h.diff
Description: Binary data

Attachment: gcc_config_i386_i386.md.diff
Description: Binary data

Attachment: gcc_config_i386_i386.opt.diff
Description: Binary data

Attachment: gcc_config_i386_mingw32.h.diff
Description: Binary data

Attachment: gcc_c-pragma.c.diff
Description: Binary data

Attachment: gcc_doc_tm.texi.diff
Description: Binary data

Attachment: gcc_explow.c.diff
Description: Binary data

Attachment: gcc_unwind-generice.h.diff
Description: Binary data

Attachment: fixincludes_mkfixinc.sh.diff
Description: Binary data


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]