OSDN Git Service

2010-05-11 Kai Tietz <kai.tietz@onevision.com>
authorktietz <ktietz@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 11 May 2010 15:05:36 +0000 (15:05 +0000)
committerktietz <ktietz@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 11 May 2010 15:05:36 +0000 (15:05 +0000)
        * 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@159271 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/lto/ChangeLog
gcc/lto/lto-coff.c
gcc/lto/lto-coff.h
gcc/lto/lto-lang.c

index b7f0b7e..a86396a 100644 (file)
@@ -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.
index 1814cfd..6c15e66 100644 (file)
@@ -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;
     }
index f069d0c..5792f3d 100644 (file)
@@ -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
index 7214908..35d133b 100644 (file)
@@ -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 ();