Commit 94f64249 by Kai Tietz Committed by Kai Tietz

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
parent 90829bcb
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> 2010-05-07 Steven Bosscher <steven@gcc.gnu.org>
* lto.h (struct lto_file_struct): Document offset member. * lto.h (struct lto_file_struct): Document offset member.
......
...@@ -379,9 +379,10 @@ validate_file (lto_coff_file *coff_file) ...@@ -379,9 +379,10 @@ validate_file (lto_coff_file *coff_file)
return false; 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"); error ("not a 32-bit COFF object file");
return false; return false;
} }
......
...@@ -79,11 +79,13 @@ along with GCC; see the file COPYING3. If not see ...@@ -79,11 +79,13 @@ along with GCC; see the file COPYING3. If not see
/* COFF header machine codes. */ /* COFF header machine codes. */
#define IMAGE_FILE_MACHINE_I386 (0x014c) #define IMAGE_FILE_MACHINE_I386 (0x014c)
#define IMAGE_FILE_MACHINE_ADM64 (0x8664)
/* Known header magics for validation, as an array initialiser. */ /* Known header magics for validation, as an array initialiser. */
#define COFF_KNOWN_MACHINES \ #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 /* 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 currently specific to PE-COFF, which is the only LTO-COFF format at the
......
...@@ -1019,6 +1019,12 @@ lto_build_c_type_nodes (void) ...@@ -1019,6 +1019,12 @@ lto_build_c_type_nodes (void)
uintmax_type_node = long_unsigned_type_node; uintmax_type_node = long_unsigned_type_node;
signed_size_type_node = long_integer_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 else
gcc_unreachable (); gcc_unreachable ();
...@@ -1062,6 +1068,11 @@ lto_init (void) ...@@ -1062,6 +1068,11 @@ lto_init (void)
set_sizetype (long_unsigned_type_node); set_sizetype (long_unsigned_type_node);
size_type_node = 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 else
gcc_unreachable (); gcc_unreachable ();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment