daily update
[deliverable/binutils-gdb.git] / bfd / cpu-i386.c
index f679a183ebac1110be1b3d22a08e692d6ef08eb7..c4f41c50c2c7ee18c3e723a0b0375d0a55f5f997 100644 (file)
@@ -1,6 +1,6 @@
 /* BFD support for the Intel 386 architecture.
    Copyright 1992, 1994, 1995, 1996, 1998, 2000, 2001, 2002, 2004, 2005,
-   2007, 2009
+   2007, 2009, 2010, 2011
    Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 #include "bfd.h"
 #include "libbfd.h"
 
+static const bfd_arch_info_type *
+bfd_i386_compatible (const bfd_arch_info_type *a,
+                    const bfd_arch_info_type *b)
+{
+  const bfd_arch_info_type *compat = bfd_default_compatible (a, b);
+
+  /* Don't allow mixing x64_32 with x86_64.  */
+  if (compat && a->bits_per_address != b->bits_per_address)
+    compat = NULL;
+
+  return compat;
+}
+
 static const bfd_arch_info_type bfd_x64_32_arch_intel_syntax =
 {
   64, /* 64 bits in a word */
@@ -35,7 +48,7 @@ static const bfd_arch_info_type bfd_x64_32_arch_intel_syntax =
   "i386:x64-32:intel",
   3,
   FALSE,
-  bfd_default_compatible,
+  bfd_i386_compatible,
   bfd_default_scan,
   0
 };
@@ -51,7 +64,7 @@ static const bfd_arch_info_type bfd_x86_64_arch_intel_syntax =
   "i386:x86-64:intel",
   3,
   FALSE,
-  bfd_default_compatible,
+  bfd_i386_compatible,
   bfd_default_scan,
   &bfd_x64_32_arch_intel_syntax,
 };
@@ -67,7 +80,7 @@ static const bfd_arch_info_type bfd_i386_arch_intel_syntax =
   "i386:intel",
   3,
   TRUE,
-  bfd_default_compatible,
+  bfd_i386_compatible,
   bfd_default_scan,
   &bfd_x86_64_arch_intel_syntax
 };
@@ -83,7 +96,7 @@ static const bfd_arch_info_type i8086_arch =
   "i8086",
   3,
   FALSE,
-  bfd_default_compatible,
+  bfd_i386_compatible,
   bfd_default_scan,
   &bfd_i386_arch_intel_syntax
 };
@@ -99,7 +112,7 @@ static const bfd_arch_info_type bfd_x64_32_arch =
   "i386:x64-32",
   3,
   FALSE,
-  bfd_default_compatible,
+  bfd_i386_compatible,
   bfd_default_scan,
   &i8086_arch
 };
@@ -115,7 +128,7 @@ static const bfd_arch_info_type bfd_x86_64_arch =
   "i386:x86-64",
   3,
   FALSE,
-  bfd_default_compatible,
+  bfd_i386_compatible,
   bfd_default_scan,
   &bfd_x64_32_arch
 };
@@ -131,7 +144,7 @@ const bfd_arch_info_type bfd_i386_arch =
   "i386",
   3,
   TRUE,
-  bfd_default_compatible,
+  bfd_i386_compatible,
   bfd_default_scan,
   &bfd_x86_64_arch
 };
This page took 0.024311 seconds and 4 git commands to generate.