mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-24 02:24:46 +08:00
Set CPU type in BFD backend for x86_64-nacl* and i?86-nacl* targets
bfd/ * archures.c (bfd_mach_i386_nacl): Fix definition so it doesn't collide with bfd_mach_l1om. * bfd-in2.h: Regenerate. * elf32-i386.c (elf32_i386_nacl_elf_object_p): New function. (elf_backend_object_p): Use that in elf32-i386-nacl definition. * elf64-x86-64.c (elf64_x86_64_nacl_elf_object_p): New function. (elf_backend_object_p): Use that in elf64-x86-64-nacl definition. (elf32_x86_64_nacl_elf_object_p): New function. (elf_backend_object_p): Use that in elf32-x86-64-nacl definition. binutils/ * objdump.c (dump_dwarf): Grok bfd_mach_x86_64_nacl and bfd_mach_x64_32_nacl as equivalent to bfd_mach_x86_64. ld/testsuite/ * ld-x86-64/x86-64.exp (mixed1, mixed2): Loosen error string match so it accepts "i386:nacl" in place of "i386". * 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.
This commit is contained in:
parent
d40af490aa
commit
64b384e1e8
@ -1,3 +1,16 @@
|
||||
2013-11-07 Roland McGrath <mcgrathr@google.com>
|
||||
|
||||
* archures.c (bfd_mach_i386_nacl): Fix definition so it doesn't
|
||||
collide with bfd_mach_l1om.
|
||||
* bfd-in2.h: Regenerate.
|
||||
|
||||
* elf32-i386.c (elf32_i386_nacl_elf_object_p): New function.
|
||||
(elf_backend_object_p): Use that in elf32-i386-nacl definition.
|
||||
* elf64-x86-64.c (elf64_x86_64_nacl_elf_object_p): New function.
|
||||
(elf_backend_object_p): Use that in elf64-x86-64-nacl definition.
|
||||
(elf32_x86_64_nacl_elf_object_p): New function.
|
||||
(elf_backend_object_p): Use that in elf32-x86-64-nacl definition.
|
||||
|
||||
2013-11-05 DJ Delorie <dj@redhat.com>
|
||||
|
||||
* elf32-rl78.c (elf32_rl78_relax_delete_bytes): Make sure relocs
|
||||
|
@ -189,19 +189,19 @@ 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)
|
||||
. bfd_arch_k1om, {* Intel K1OM *}
|
||||
.#define bfd_mach_k1om (1 << 6)
|
||||
.#define bfd_mach_k1om_intel_syntax (bfd_mach_k1om | bfd_mach_i386_intel_syntax)
|
||||
.#define bfd_mach_i386_nacl (1 << 7)
|
||||
.#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_we32k, {* AT&T WE32xxx *}
|
||||
. bfd_arch_tahoe, {* CCI/Harris Tahoe *}
|
||||
. bfd_arch_i860, {* Intel 860 *}
|
||||
|
@ -1946,19 +1946,19 @@ 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)
|
||||
bfd_arch_k1om, /* Intel K1OM */
|
||||
#define bfd_mach_k1om (1 << 6)
|
||||
#define bfd_mach_k1om_intel_syntax (bfd_mach_k1om | bfd_mach_i386_intel_syntax)
|
||||
#define bfd_mach_i386_nacl (1 << 7)
|
||||
#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_we32k, /* AT&T WE32xxx */
|
||||
bfd_arch_tahoe, /* CCI/Harris Tahoe */
|
||||
bfd_arch_i860, /* Intel 860 */
|
||||
|
@ -5296,9 +5296,19 @@ static const struct elf_i386_backend_data elf_i386_nacl_arch_bed =
|
||||
0, /* is_vxworks */
|
||||
};
|
||||
|
||||
static bfd_boolean
|
||||
elf32_i386_nacl_elf_object_p (bfd *abfd)
|
||||
{
|
||||
/* Set the right machine number for a NaCl i386 ELF32 file. */
|
||||
bfd_default_set_arch_mach (abfd, bfd_arch_i386, bfd_mach_i386_i386_nacl);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
#undef elf_backend_arch_data
|
||||
#define elf_backend_arch_data &elf_i386_nacl_arch_bed
|
||||
|
||||
#undef elf_backend_object_p
|
||||
#define elf_backend_object_p elf32_i386_nacl_elf_object_p
|
||||
#undef elf_backend_modify_segment_map
|
||||
#define elf_backend_modify_segment_map nacl_modify_segment_map
|
||||
#undef elf_backend_modify_program_headers
|
||||
@ -5309,6 +5319,7 @@ static const struct elf_i386_backend_data elf_i386_nacl_arch_bed =
|
||||
#include "elf32-target.h"
|
||||
|
||||
/* Restore defaults. */
|
||||
#undef elf_backend_object_p
|
||||
#undef elf_backend_modify_segment_map
|
||||
#undef elf_backend_modify_program_headers
|
||||
#undef elf_backend_final_write_processing
|
||||
|
@ -5348,6 +5348,14 @@ static const struct bfd_elf_special_section
|
||||
|
||||
/* Native Client support. */
|
||||
|
||||
static bfd_boolean
|
||||
elf64_x86_64_nacl_elf_object_p (bfd *abfd)
|
||||
{
|
||||
/* Set the right machine number for a NaCl x86-64 ELF64 file. */
|
||||
bfd_default_set_arch_mach (abfd, bfd_arch_i386, bfd_mach_x86_64_nacl);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
#undef TARGET_LITTLE_SYM
|
||||
#define TARGET_LITTLE_SYM bfd_elf64_x86_64_nacl_vec
|
||||
#undef TARGET_LITTLE_NAME
|
||||
@ -5480,6 +5488,8 @@ static const struct elf_x86_64_backend_data elf_x86_64_nacl_arch_bed =
|
||||
#undef elf_backend_arch_data
|
||||
#define elf_backend_arch_data &elf_x86_64_nacl_arch_bed
|
||||
|
||||
#undef elf_backend_object_p
|
||||
#define elf_backend_object_p elf64_x86_64_nacl_elf_object_p
|
||||
#undef elf_backend_modify_segment_map
|
||||
#define elf_backend_modify_segment_map nacl_modify_segment_map
|
||||
#undef elf_backend_modify_program_headers
|
||||
@ -5491,6 +5501,14 @@ static const struct elf_x86_64_backend_data elf_x86_64_nacl_arch_bed =
|
||||
|
||||
/* Native Client x32 support. */
|
||||
|
||||
static bfd_boolean
|
||||
elf32_x86_64_nacl_elf_object_p (bfd *abfd)
|
||||
{
|
||||
/* Set the right machine number for a NaCl x86-64 ELF32 file. */
|
||||
bfd_default_set_arch_mach (abfd, bfd_arch_i386, bfd_mach_x64_32_nacl);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
#undef TARGET_LITTLE_SYM
|
||||
#define TARGET_LITTLE_SYM bfd_elf32_x86_64_nacl_vec
|
||||
#undef TARGET_LITTLE_NAME
|
||||
@ -5511,7 +5529,7 @@ static const struct elf_x86_64_backend_data elf_x86_64_nacl_arch_bed =
|
||||
|
||||
#undef elf_backend_object_p
|
||||
#define elf_backend_object_p \
|
||||
elf32_x86_64_elf_object_p
|
||||
elf32_x86_64_nacl_elf_object_p
|
||||
|
||||
#undef elf_backend_bfd_from_remote_memory
|
||||
#define elf_backend_bfd_from_remote_memory \
|
||||
|
@ -1,3 +1,8 @@
|
||||
2013-11-07 Roland McGrath <mcgrathr@google.com>
|
||||
|
||||
* objdump.c (dump_dwarf): Grok bfd_mach_x86_64_nacl and
|
||||
bfd_mach_x64_32_nacl as equivalent to bfd_mach_x86_64.
|
||||
|
||||
2013-10-30 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* readelf.c (get_ppc_dynamic_type): Replace PPC_TLSOPT with PPC_OPT.
|
||||
|
@ -2394,8 +2394,10 @@ dump_dwarf (bfd *abfd)
|
||||
{
|
||||
case bfd_mach_x86_64:
|
||||
case bfd_mach_x86_64_intel_syntax:
|
||||
case bfd_mach_x86_64_nacl:
|
||||
case bfd_mach_x64_32:
|
||||
case bfd_mach_x64_32_intel_syntax:
|
||||
case bfd_mach_x64_32_nacl:
|
||||
init_dwarf_regnames_x86_64 ();
|
||||
break;
|
||||
|
||||
|
@ -1,3 +1,12 @@
|
||||
2013-11-07 Roland McGrath <mcgrathr@google.com>
|
||||
|
||||
* ld-x86-64/x86-64.exp (mixed1, mixed2): Loosen error string match
|
||||
so it accepts "i386:nacl" in place of "i386".
|
||||
* 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.
|
||||
|
||||
2013-11-05 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR ld/4409
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -172,7 +172,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"
|
||||
@ -182,7 +182,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"
|
||||
|
Loading…
Reference in New Issue
Block a user