diff options
author | Kai Tietz <kai.tietz@onevision.com> | 2010-05-11 15:05:36 +0000 |
---|---|---|
committer | Kai Tietz <ktietz@gcc.gnu.org> | 2010-05-11 17:05:36 +0200 |
commit | 94f6424987ff7c94cc07425d1cce11922ef0ce73 (patch) | |
tree | 6d05e77f721564aad5732a62616235507a19d6f2 /gcc/lto | |
parent | 90829bcb0ca688af71c19ca3c72f4da6cae455fd (diff) | |
download | gcc-94f6424987ff7c94cc07425d1cce11922ef0ce73.zip gcc-94f6424987ff7c94cc07425d1cce11922ef0ce73.tar.gz gcc-94f6424987ff7c94cc07425d1cce11922ef0ce73.tar.bz2 |
lto-coff.c (validate_file): Add x64-coff support.
2010-05-11 Kai Tietz <kai.tietz@onevision.com>
* lto-coff.c (validate_file): Add x64-coff support.
* lto-coff.h (IMAGE_FILE_MACHINE_ADM64): New.
(COFF_KNOWN_MACHINES): Add IMAGE_FILE_MACHINE_ADM64.
* lto-lang.c (lto_build_c_type_nodes): Add check for
'long long unsigned int' for x64-windows.
(lto_init): Likewise.
From-SVN: r159271
Diffstat (limited to 'gcc/lto')
-rw-r--r-- | gcc/lto/ChangeLog | 10 | ||||
-rw-r--r-- | gcc/lto/lto-coff.c | 5 | ||||
-rw-r--r-- | gcc/lto/lto-coff.h | 4 | ||||
-rw-r--r-- | gcc/lto/lto-lang.c | 11 |
4 files changed, 27 insertions, 3 deletions
diff --git a/gcc/lto/ChangeLog b/gcc/lto/ChangeLog index b7f0b7e..a86396a 100644 --- a/gcc/lto/ChangeLog +++ b/gcc/lto/ChangeLog @@ -1,3 +1,13 @@ +2010-05-11 Kai Tietz <kai.tietz@onevision.com> + + * lto-coff.c (validate_file): Add x64-coff support. + * lto-coff.h (IMAGE_FILE_MACHINE_ADM64): New. + (COFF_KNOWN_MACHINES): Add IMAGE_FILE_MACHINE_ADM64. + * lto-lang.c (lto_build_c_type_nodes): Add check for + 'long long unsigned int' for x64-windows. + (lto_init): Likewise. + + 2010-05-07 Steven Bosscher <steven@gcc.gnu.org> * lto.h (struct lto_file_struct): Document offset member. diff --git a/gcc/lto/lto-coff.c b/gcc/lto/lto-coff.c index 1814cfdb..6c15e66 100644 --- a/gcc/lto/lto-coff.c +++ b/gcc/lto/lto-coff.c @@ -379,9 +379,10 @@ validate_file (lto_coff_file *coff_file) return false; } - if (COFF_CHARACTERISTICS != (COFF_CHARACTERISTICS & charact)) + if (mach != IMAGE_FILE_MACHINE_ADM64 + && COFF_CHARACTERISTICS != (COFF_CHARACTERISTICS & charact)) { - /* ECOFF/XCOFF/PE+ support not implemented. */ + /* ECOFF/XCOFF support not implemented. */ error ("not a 32-bit COFF object file"); return false; } diff --git a/gcc/lto/lto-coff.h b/gcc/lto/lto-coff.h index f069d0c..5792f3d 100644 --- a/gcc/lto/lto-coff.h +++ b/gcc/lto/lto-coff.h @@ -79,11 +79,13 @@ along with GCC; see the file COPYING3. If not see /* COFF header machine codes. */ #define IMAGE_FILE_MACHINE_I386 (0x014c) +#define IMAGE_FILE_MACHINE_ADM64 (0x8664) /* Known header magics for validation, as an array initialiser. */ #define COFF_KNOWN_MACHINES \ - { IMAGE_FILE_MACHINE_I386/*, ... add more here when working. */ } + { IMAGE_FILE_MACHINE_I386, \ + IMAGE_FILE_MACHINE_ADM64/*, ... add more here when working. */ } /* COFF object file header, section and symbol flags and types. These are currently specific to PE-COFF, which is the only LTO-COFF format at the diff --git a/gcc/lto/lto-lang.c b/gcc/lto/lto-lang.c index 72149082..35d133b 100644 --- a/gcc/lto/lto-lang.c +++ b/gcc/lto/lto-lang.c @@ -1019,6 +1019,12 @@ lto_build_c_type_nodes (void) uintmax_type_node = long_unsigned_type_node; signed_size_type_node = long_integer_type_node; } + else if (strcmp (SIZE_TYPE, "long long unsigned int") == 0) + { + intmax_type_node = long_long_integer_type_node; + uintmax_type_node = long_long_unsigned_type_node; + signed_size_type_node = long_long_integer_type_node; + } else gcc_unreachable (); @@ -1062,6 +1068,11 @@ lto_init (void) set_sizetype (long_unsigned_type_node); size_type_node = long_unsigned_type_node; } + else if (strcmp (SIZE_TYPE, "long long unsigned int") == 0) + { + set_sizetype (long_long_unsigned_type_node); + size_type_node = long_long_unsigned_type_node; + } else gcc_unreachable (); |