bfd/
authorRoland McGrath <roland@gnu.org>
Mon, 26 Aug 2013 22:18:07 +0000 (22:18 +0000)
committerRoland McGrath <roland@gnu.org>
Mon, 26 Aug 2013 22:18:07 +0000 (22:18 +0000)
* archures.c (bfd_mach_i386_nacl, bfd_mach_i386_i386_nacl): New macros.
(bfd_mach_x86_64_nacl, bfd_mach_x64_32_nacl): New macros.
* cpu-i386.c (bfd_arch_i386_onebyte_nop_fill): New function.
(bfd_i386_nacl_arch): New variable.
(bfd_x86_64_nacl_arch, bfd_x64_32_nacl_arch): New variables.
(bfd_x64_32_arch_intel_syntax): Link them into the list.
* bfd-in2.h: Regenerate.

ld/
* emulparams/elf_i386_nacl.sh (ARCH): Set to i386:nacl.
* emulparams/elf_x86_64_nacl.sh (ARCH): Set to i386:x86-64:nacl.
* emulparams/elf32_x86_64_nacl.sh (ARCH): Set to i386:x64-32:nacl.

ld/testsuite/
* ld-x86-64/x86-64.exp (Mixed x86_64 and i386 input test 1):
Loosen string match to admit i386:x86-64*.
(Mixed x86_64 and i386 input test 2): Likewise.
* ld-x86-64/ilp32-2.d: Likewise.
* ld-x86-64/ilp32-3.d: Likewise.
* ld-x86-64/lp64-2.d: Likewise.
* ld-x86-64/lp64-3.d: Likewise.
* ld-x86-64/ia32-2.d: Likewise, and i386.* too.
* ld-x86-64/ia32-3.d: Likewise.

16 files changed:
bfd/ChangeLog
bfd/archures.c
bfd/bfd-in2.h
bfd/cpu-i386.c
ld/ChangeLog
ld/emulparams/elf32_x86_64_nacl.sh
ld/emulparams/elf_i386_nacl.sh
ld/emulparams/elf_x86_64_nacl.sh
ld/testsuite/ChangeLog
ld/testsuite/ld-x86-64/ia32-2.d
ld/testsuite/ld-x86-64/ia32-3.d
ld/testsuite/ld-x86-64/ilp32-2.d
ld/testsuite/ld-x86-64/ilp32-3.d
ld/testsuite/ld-x86-64/lp64-2.d
ld/testsuite/ld-x86-64/lp64-3.d
ld/testsuite/ld-x86-64/x86-64.exp

index ebae60d..815503b 100644 (file)
@@ -1,5 +1,15 @@
 2013-08-26  Roland McGrath  <mcgrathr@google.com>
 
+       * archures.c (bfd_mach_i386_nacl, bfd_mach_i386_i386_nacl): New macros.
+       (bfd_mach_x86_64_nacl, bfd_mach_x64_32_nacl): New macros.
+       * cpu-i386.c (bfd_arch_i386_onebyte_nop_fill): New function.
+       (bfd_i386_nacl_arch): New variable.
+       (bfd_x86_64_nacl_arch, bfd_x64_32_nacl_arch): New variables.
+       (bfd_x64_32_arch_intel_syntax): Link them into the list.
+       * bfd-in2.h: Regenerate.
+
+2013-08-26  Roland McGrath  <mcgrathr@google.com>
+
        * elf-nacl.c (nacl_modify_segment_map): Fix logic reordering the
        elf_segment_map list.  If an executable segment is page-aligned
        but does not end with a full page, then append a fake section into
index d00b0e1..53962bf 100644 (file)
@@ -189,9 +189,13 @@ DESCRIPTION
 .#define bfd_mach_i386_i386            (1 << 2)
 .#define bfd_mach_x86_64               (1 << 3)
 .#define bfd_mach_x64_32               (1 << 4)
+.#define bfd_mach_i386_nacl            (1 << 5)
 .#define bfd_mach_i386_i386_intel_syntax (bfd_mach_i386_i386 | bfd_mach_i386_intel_syntax)
 .#define bfd_mach_x86_64_intel_syntax  (bfd_mach_x86_64 | bfd_mach_i386_intel_syntax)
 .#define bfd_mach_x64_32_intel_syntax  (bfd_mach_x64_32 | bfd_mach_i386_intel_syntax)
+.#define bfd_mach_i386_i386_nacl       (bfd_mach_i386_i386 | bfd_mach_i386_nacl)
+.#define bfd_mach_x86_64_nacl          (bfd_mach_x86_64 | bfd_mach_i386_nacl)
+.#define bfd_mach_x64_32_nacl          (bfd_mach_x64_32 | bfd_mach_i386_nacl)
 .  bfd_arch_l1om,   {* Intel L1OM *}
 .#define bfd_mach_l1om                 (1 << 5)
 .#define bfd_mach_l1om_intel_syntax    (bfd_mach_l1om | bfd_mach_i386_intel_syntax)
index 0cf9a29..41f7a68 100644 (file)
@@ -7,7 +7,7 @@
 
 /* Main header file for the bfd library -- portable access to object files.
 
-   Copyright 1990-2013 2013 Free Software Foundation, Inc.
+   Copyright 1990-2013 Free Software Foundation, Inc.
 
    Contributed by Cygnus Support.
 
@@ -1944,9 +1944,13 @@ enum bfd_architecture
 #define bfd_mach_i386_i386             (1 << 2)
 #define bfd_mach_x86_64                (1 << 3)
 #define bfd_mach_x64_32                (1 << 4)
+#define bfd_mach_i386_nacl             (1 << 5)
 #define bfd_mach_i386_i386_intel_syntax (bfd_mach_i386_i386 | bfd_mach_i386_intel_syntax)
 #define bfd_mach_x86_64_intel_syntax   (bfd_mach_x86_64 | bfd_mach_i386_intel_syntax)
 #define bfd_mach_x64_32_intel_syntax   (bfd_mach_x64_32 | bfd_mach_i386_intel_syntax)
+#define bfd_mach_i386_i386_nacl        (bfd_mach_i386_i386 | bfd_mach_i386_nacl)
+#define bfd_mach_x86_64_nacl           (bfd_mach_x86_64 | bfd_mach_i386_nacl)
+#define bfd_mach_x64_32_nacl           (bfd_mach_x64_32 | bfd_mach_i386_nacl)
   bfd_arch_l1om,   /* Intel L1OM */
 #define bfd_mach_l1om                  (1 << 5)
 #define bfd_mach_l1om_intel_syntax     (bfd_mach_l1om | bfd_mach_i386_intel_syntax)
index 6174612..2a6bb97 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, 2010, 2011
+   2007, 2009, 2010, 2011, 2013
    Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -119,6 +119,71 @@ bfd_arch_i386_long_nop_fill (bfd_size_type count,
   return bfd_arch_i386_fill (count, code, TRUE);
 }
 
+/* Fill the buffer with zero, or one-byte nop instructions if CODE is TRUE.  */
+
+static void *
+bfd_arch_i386_onebyte_nop_fill (bfd_size_type count,
+                               bfd_boolean is_bigendian ATTRIBUTE_UNUSED,
+                               bfd_boolean code)
+{
+  void *fill = bfd_malloc (count);
+  if (fill != NULL)
+    memset (fill, code ? 0x90 : 0, count);
+  return fill;
+}
+
+
+static const bfd_arch_info_type bfd_x64_32_nacl_arch =
+{
+  64, /* 64 bits in a word */
+  64, /* 64 bits in an address */
+  8,  /* 8 bits in a byte */
+  bfd_arch_i386,
+  bfd_mach_x64_32_nacl,
+  "i386",
+  "i386:x64-32:nacl",
+  3,
+  FALSE,
+  bfd_i386_compatible,
+  bfd_default_scan,
+  bfd_arch_i386_onebyte_nop_fill,
+  NULL
+};
+
+static const bfd_arch_info_type bfd_x86_64_nacl_arch =
+{
+  64, /* 64 bits in a word */
+  64, /* 64 bits in an address */
+  8,  /* 8 bits in a byte */
+  bfd_arch_i386,
+  bfd_mach_x86_64_nacl,
+  "i386",
+  "i386:x86-64:nacl",
+  3,
+  FALSE,
+  bfd_i386_compatible,
+  bfd_default_scan,
+  bfd_arch_i386_onebyte_nop_fill,
+  &bfd_x64_32_nacl_arch
+};
+
+const bfd_arch_info_type bfd_i386_nacl_arch =
+{
+  32,  /* 32 bits in a word */
+  32,  /* 32 bits in an address */
+  8,   /* 8 bits in a byte */
+  bfd_arch_i386,
+  bfd_mach_i386_i386_nacl,
+  "i386",
+  "i386:nacl",
+  3,
+  TRUE,
+  bfd_i386_compatible,
+  bfd_default_scan,
+  bfd_arch_i386_onebyte_nop_fill,
+  &bfd_x86_64_nacl_arch
+};
+
 static const bfd_arch_info_type bfd_x64_32_arch_intel_syntax =
 {
   64, /* 64 bits in a word */
@@ -133,7 +198,7 @@ static const bfd_arch_info_type bfd_x64_32_arch_intel_syntax =
   bfd_i386_compatible,
   bfd_default_scan,
   bfd_arch_i386_long_nop_fill,
-  0
+  &bfd_i386_nacl_arch
 };
 
 static const bfd_arch_info_type bfd_x86_64_arch_intel_syntax =
index 27b4be7..b834138 100644 (file)
@@ -1,3 +1,9 @@
+2013-08-26  Roland McGrath  <mcgrathr@google.com>
+
+       * emulparams/elf_i386_nacl.sh (ARCH): Set to i386:nacl.
+       * emulparams/elf_x86_64_nacl.sh (ARCH): Set to i386:x86-64:nacl.
+       * emulparams/elf32_x86_64_nacl.sh (ARCH): Set to i386:x64-32:nacl.
+
 2013-08-23  Roland McGrath  <mcgrathr@google.com>
 
        * emulparams/elf_nacl.sh (nacl_rodata_addr): Don't add in
index 4570ef9..ea98b28 100644 (file)
@@ -1,3 +1,4 @@
 . ${srcdir}/emulparams/elf32_x86_64.sh
 . ${srcdir}/emulparams/elf_nacl.sh
 OUTPUT_FORMAT="elf32-x86-64-nacl"
+ARCH="i386:x64-32:nacl"        # The :nacl just means one-byte nops for code fill.
index 81992d7..294f7f5 100644 (file)
@@ -1,3 +1,4 @@
 . ${srcdir}/emulparams/elf_i386.sh
 . ${srcdir}/emulparams/elf_nacl.sh
 OUTPUT_FORMAT="elf32-i386-nacl"
+ARCH="i386:nacl"       # The :nacl just means one-byte nops for code fill.
index 7c79eee..a6966bd 100644 (file)
@@ -1,3 +1,4 @@
 . ${srcdir}/emulparams/elf_x86_64.sh
 . ${srcdir}/emulparams/elf_nacl.sh
 OUTPUT_FORMAT="elf64-x86-64-nacl"
+ARCH="i386:x86-64:nacl"        # The :nacl just means one-byte nops for code fill.
index 3adba9b..f27092f 100644 (file)
@@ -1,5 +1,17 @@
 2013-08-26  Roland McGrath  <mcgrathr@google.com>
 
+       * ld-x86-64/x86-64.exp (Mixed x86_64 and i386 input test 1):
+       Loosen string match to admit i386:x86-64*.
+       (Mixed x86_64 and i386 input test 2): Likewise.
+       * ld-x86-64/ilp32-2.d: Likewise.
+       * ld-x86-64/ilp32-3.d: Likewise.
+       * ld-x86-64/lp64-2.d: Likewise.
+       * ld-x86-64/lp64-3.d: Likewise.
+       * ld-x86-64/ia32-2.d: Likewise, and i386.* too.
+       * ld-x86-64/ia32-3.d: Likewise.
+
+2013-08-26  Roland McGrath  <mcgrathr@google.com>
+
        * ld-x86-64/ilp32-4-nacl.d: Loosen .shstrtab line regexp to match
        any file offset.
        * ld-x86-64/tlsbin-nacl.rd: Update expected code segment PT_LOAD.
index 3a180b5..cea4927 100644 (file)
@@ -1,4 +1,4 @@
 #source: dummy.s
 #as: --32
 #ld: -m elf_i386 tmpdir/start32.o tmpdir/foox32.o
-#error: .*i386:x64-32 architecture of input file `tmpdir/foox32.o' is incompatible with i386 output
+#error: .*i386:x64-32.* architecture of input file `tmpdir/foox32.o' is incompatible with i386.* output
index 1528399..ecd8b2e 100644 (file)
@@ -1,4 +1,4 @@
 #source: dummy.s
 #as: --32
 #ld: -m elf_i386 tmpdir/start32.o tmpdir/foo64.o
-#error: .*i386:x86-64 architecture of input file `tmpdir/foo64.o' is incompatible with i386 output
+#error: .*i386:x86-64.* architecture of input file `tmpdir/foo64.o' is incompatible with i386.* output
index 19fc671..65b5298 100644 (file)
@@ -1,4 +1,4 @@
 #source: dummy.s
 #as: --x32
 #ld: -m elf32_x86_64 tmpdir/startx32.o tmpdir/foo32.o
-#error: .*i386 architecture of input file `tmpdir/foo32.o' is incompatible with i386:x64-32 output
+#error: .*i386 architecture of input file `tmpdir/foo32.o' is incompatible with i386:x64-32.* output
index fdd9065..b05e531 100644 (file)
@@ -1,4 +1,4 @@
 #source: dummy.s
 #as: --x32
 #ld: -m elf32_x86_64 tmpdir/startx32.o tmpdir/foo64.o
-#error: .*i386:x86-64 architecture of input file `tmpdir/foo64.o' is incompatible with i386:x64-32 output
+#error: .*i386:x86-64 architecture of input file `tmpdir/foo64.o' is incompatible with i386:x64-32.* output
index fde3202..7515881 100644 (file)
@@ -1,4 +1,4 @@
 #source: dummy.s
 #as: --64
 #ld: -m elf_x86_64 tmpdir/start64.o tmpdir/foo32.o
-#error: .*i386 architecture of input file `tmpdir/foo32.o' is incompatible with i386:x86-64 output
+#error: .*i386 architecture of input file `tmpdir/foo32.o' is incompatible with i386:x86-64.* output
index c89fbc4..e60efeb 100644 (file)
@@ -1,4 +1,4 @@
 #source: dummy.s
 #as: --64
 #ld: -m elf_x86_64 tmpdir/start64.o tmpdir/foox32.o
-#error: .*i386:x64-32 architecture of input file `tmpdir/foox32.o' is incompatible with i386:x86-64 output
+#error: .*i386:x64-32 architecture of input file `tmpdir/foox32.o' is incompatible with i386:x86-64.* output
index 0fd0312..8ca2da7 100644 (file)
@@ -1,5 +1,5 @@
 # Expect script for ld-x86_64 tests
-#   Copyright (C) 2002, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
+#   Copyright (C) 2002, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
 #   Free Software Foundation
 #
 # This file is part of the GNU Binutils.
@@ -163,7 +163,7 @@ global ld
 set test_name "Mixed x86_64 and i386 input test 1"
 set test mixed1
 if { ![ld_simple_link $ld tmpdir/$test "-m$emul tmpdir/${test}a.o tmpdir/${test}b.o"] } {
-    if [string match "*i386 architecture of input file `tmpdir/${test}b.o' is incompatible with i386:x86-64 output*" $link_output] {
+    if [string match "*i386 architecture of input file `tmpdir/${test}b.o' is incompatible with i386:x86-64* output*" $link_output] {
        pass "$test_name"
     } {
        fail "$test_name"
@@ -173,7 +173,7 @@ if { ![ld_simple_link $ld tmpdir/$test "-m$emul tmpdir/${test}a.o tmpdir/${test}
 set test_name "Mixed x86_64 and i386 input test 2"
 set test mixed2
 if { ![ld_simple_link $ld tmpdir/$test "-m$emul tmpdir/${test}a.o tmpdir/${test}b.o"] } {
-    if [string match "*i386 architecture of input file `tmpdir/${test}b.o' is incompatible with i386:x86-64 output*" $link_output] {
+    if [string match "*i386 architecture of input file `tmpdir/${test}b.o' is incompatible with i386:x86-64* output*" $link_output] {
        pass "$test_name"
     } {
        fail "$test_name"