Don't allow mixing x64_32 with x86_64.
bfd/ 2011-01-03 H.J. Lu <hongjiu.lu@intel.com> * cpu-i386.c (bfd_i386_compatible): New. (bfd_x64_32_arch_intel_syntax): Replace bfd_default_compatible with bfd_i386_compatible. (bfd_x86_64_arch_intel_syntax): Likewise. (bfd_i386_arch_intel_syntax): Likewise. (i8086_arch): Likewise. (bfd_x64_32_arch): Likewise. (bfd_x86_64_arch): Likewise. (bfd_i386_arch): Likewise. ld/testsuite/ 2011-01-03 H.J. Lu <hongjiu.lu@intel.com> * ld-x86-64/dummy.s: New. * ld-x86-64/foo.s: Likewise. * ld-x86-64/ia32-1.d: Likewise. * ld-x86-64/ia32-2.d: Likewise. * ld-x86-64/ia32-3.d: Likewise. * ld-x86-64/ilp32-1.d: Likewise. * ld-x86-64/ilp32-2.d: Likewise. * ld-x86-64/ilp32-3.d: Likewise. * ld-x86-64/lp64-1.d: Likewise. * ld-x86-64/lp64-2.d: Likewise. * ld-x86-64/lp64-3.d: Likewise. * ld-x86-64/start.s: Likewise. * ld-x86-64/x86-64.exp: Run ilp32-1, ilp32-2, ilp32-3, ia32-1, ia32-2, ia32-3, lp64-1, lp64-2 and lp64-3.
This commit is contained in:
parent
47a50e5b13
commit
889a4d3e74
16 changed files with 171 additions and 9 deletions
|
@ -1,3 +1,15 @@
|
||||||
|
2011-01-03 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
* cpu-i386.c (bfd_i386_compatible): New.
|
||||||
|
(bfd_x64_32_arch_intel_syntax): Replace bfd_default_compatible
|
||||||
|
with bfd_i386_compatible.
|
||||||
|
(bfd_x86_64_arch_intel_syntax): Likewise.
|
||||||
|
(bfd_i386_arch_intel_syntax): Likewise.
|
||||||
|
(i8086_arch): Likewise.
|
||||||
|
(bfd_x64_32_arch): Likewise.
|
||||||
|
(bfd_x86_64_arch): Likewise.
|
||||||
|
(bfd_i386_arch): Likewise.
|
||||||
|
|
||||||
For older changes see ChangeLog-2010
|
For older changes see ChangeLog-2010
|
||||||
|
|
||||||
Local Variables:
|
Local Variables:
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* BFD support for the Intel 386 architecture.
|
/* BFD support for the Intel 386 architecture.
|
||||||
Copyright 1992, 1994, 1995, 1996, 1998, 2000, 2001, 2002, 2004, 2005,
|
Copyright 1992, 1994, 1995, 1996, 1998, 2000, 2001, 2002, 2004, 2005,
|
||||||
2007, 2009
|
2007, 2009, 2010, 2011
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of BFD, the Binary File Descriptor library.
|
This file is part of BFD, the Binary File Descriptor library.
|
||||||
|
@ -24,6 +24,19 @@
|
||||||
#include "bfd.h"
|
#include "bfd.h"
|
||||||
#include "libbfd.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 =
|
static const bfd_arch_info_type bfd_x64_32_arch_intel_syntax =
|
||||||
{
|
{
|
||||||
64, /* 64 bits in a word */
|
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",
|
"i386:x64-32:intel",
|
||||||
3,
|
3,
|
||||||
FALSE,
|
FALSE,
|
||||||
bfd_default_compatible,
|
bfd_i386_compatible,
|
||||||
bfd_default_scan,
|
bfd_default_scan,
|
||||||
0
|
0
|
||||||
};
|
};
|
||||||
|
@ -51,7 +64,7 @@ static const bfd_arch_info_type bfd_x86_64_arch_intel_syntax =
|
||||||
"i386:x86-64:intel",
|
"i386:x86-64:intel",
|
||||||
3,
|
3,
|
||||||
FALSE,
|
FALSE,
|
||||||
bfd_default_compatible,
|
bfd_i386_compatible,
|
||||||
bfd_default_scan,
|
bfd_default_scan,
|
||||||
&bfd_x64_32_arch_intel_syntax,
|
&bfd_x64_32_arch_intel_syntax,
|
||||||
};
|
};
|
||||||
|
@ -67,7 +80,7 @@ static const bfd_arch_info_type bfd_i386_arch_intel_syntax =
|
||||||
"i386:intel",
|
"i386:intel",
|
||||||
3,
|
3,
|
||||||
TRUE,
|
TRUE,
|
||||||
bfd_default_compatible,
|
bfd_i386_compatible,
|
||||||
bfd_default_scan,
|
bfd_default_scan,
|
||||||
&bfd_x86_64_arch_intel_syntax
|
&bfd_x86_64_arch_intel_syntax
|
||||||
};
|
};
|
||||||
|
@ -83,7 +96,7 @@ static const bfd_arch_info_type i8086_arch =
|
||||||
"i8086",
|
"i8086",
|
||||||
3,
|
3,
|
||||||
FALSE,
|
FALSE,
|
||||||
bfd_default_compatible,
|
bfd_i386_compatible,
|
||||||
bfd_default_scan,
|
bfd_default_scan,
|
||||||
&bfd_i386_arch_intel_syntax
|
&bfd_i386_arch_intel_syntax
|
||||||
};
|
};
|
||||||
|
@ -99,7 +112,7 @@ static const bfd_arch_info_type bfd_x64_32_arch =
|
||||||
"i386:x64-32",
|
"i386:x64-32",
|
||||||
3,
|
3,
|
||||||
FALSE,
|
FALSE,
|
||||||
bfd_default_compatible,
|
bfd_i386_compatible,
|
||||||
bfd_default_scan,
|
bfd_default_scan,
|
||||||
&i8086_arch
|
&i8086_arch
|
||||||
};
|
};
|
||||||
|
@ -115,7 +128,7 @@ static const bfd_arch_info_type bfd_x86_64_arch =
|
||||||
"i386:x86-64",
|
"i386:x86-64",
|
||||||
3,
|
3,
|
||||||
FALSE,
|
FALSE,
|
||||||
bfd_default_compatible,
|
bfd_i386_compatible,
|
||||||
bfd_default_scan,
|
bfd_default_scan,
|
||||||
&bfd_x64_32_arch
|
&bfd_x64_32_arch
|
||||||
};
|
};
|
||||||
|
@ -131,7 +144,7 @@ const bfd_arch_info_type bfd_i386_arch =
|
||||||
"i386",
|
"i386",
|
||||||
3,
|
3,
|
||||||
TRUE,
|
TRUE,
|
||||||
bfd_default_compatible,
|
bfd_i386_compatible,
|
||||||
bfd_default_scan,
|
bfd_default_scan,
|
||||||
&bfd_x86_64_arch
|
&bfd_x86_64_arch
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,3 +1,21 @@
|
||||||
|
2011-01-03 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
* ld-x86-64/dummy.s: New.
|
||||||
|
* ld-x86-64/foo.s: Likewise.
|
||||||
|
* ld-x86-64/ia32-1.d: Likewise.
|
||||||
|
* ld-x86-64/ia32-2.d: Likewise.
|
||||||
|
* ld-x86-64/ia32-3.d: Likewise.
|
||||||
|
* ld-x86-64/ilp32-1.d: Likewise.
|
||||||
|
* ld-x86-64/ilp32-2.d: Likewise.
|
||||||
|
* ld-x86-64/ilp32-3.d: Likewise.
|
||||||
|
* ld-x86-64/lp64-1.d: Likewise.
|
||||||
|
* ld-x86-64/lp64-2.d: Likewise.
|
||||||
|
* ld-x86-64/lp64-3.d: Likewise.
|
||||||
|
* ld-x86-64/start.s: Likewise.
|
||||||
|
|
||||||
|
* ld-x86-64/x86-64.exp: Run ilp32-1, ilp32-2, ilp32-3, ia32-1,
|
||||||
|
ia32-2, ia32-3, lp64-1, lp64-2 and lp64-3.
|
||||||
|
|
||||||
2011-01-02 H.J. Lu <hongjiu.lu@intel.com>
|
2011-01-02 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
PR ld/12001
|
PR ld/12001
|
||||||
|
|
1
ld/testsuite/ld-x86-64/dummy.s
Normal file
1
ld/testsuite/ld-x86-64/dummy.s
Normal file
|
@ -0,0 +1 @@
|
||||||
|
# Dummy
|
3
ld/testsuite/ld-x86-64/foo.s
Normal file
3
ld/testsuite/ld-x86-64/foo.s
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
.globl foo
|
||||||
|
foo:
|
||||||
|
mov %eax, %ebx
|
16
ld/testsuite/ld-x86-64/ia32-1.d
Normal file
16
ld/testsuite/ld-x86-64/ia32-1.d
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
#source: dummy.s
|
||||||
|
#as: --32
|
||||||
|
#ld: -m elf_i386 tmpdir/start32.o tmpdir/foo32.o
|
||||||
|
#readelf: -h
|
||||||
|
|
||||||
|
ELF Header:
|
||||||
|
Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
|
||||||
|
Class: ELF32
|
||||||
|
Data: 2's complement, little endian
|
||||||
|
Version: 1 \(current\)
|
||||||
|
OS/ABI: UNIX - System V
|
||||||
|
ABI Version: 0
|
||||||
|
Type: EXEC \(Executable file\)
|
||||||
|
Machine: Intel 80386
|
||||||
|
Version: 0x1
|
||||||
|
#pass
|
4
ld/testsuite/ld-x86-64/ia32-2.d
Normal file
4
ld/testsuite/ld-x86-64/ia32-2.d
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
#source: dummy.s
|
||||||
|
#as: --32
|
||||||
|
#ld: -m elf_i386 tmpdir/start32.o tmpdir/foon32.o
|
||||||
|
#error: .*i386:x64-32 architecture of input file `tmpdir/foon32.o' is incompatible with i386 output
|
4
ld/testsuite/ld-x86-64/ia32-3.d
Normal file
4
ld/testsuite/ld-x86-64/ia32-3.d
Normal file
|
@ -0,0 +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
|
16
ld/testsuite/ld-x86-64/ilp32-1.d
Normal file
16
ld/testsuite/ld-x86-64/ilp32-1.d
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
#source: dummy.s
|
||||||
|
#as: --n32
|
||||||
|
#ld: -m elf32_x86_64 tmpdir/startn32.o tmpdir/foon32.o
|
||||||
|
#readelf: -h
|
||||||
|
|
||||||
|
ELF Header:
|
||||||
|
Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
|
||||||
|
Class: ELF32
|
||||||
|
Data: 2's complement, little endian
|
||||||
|
Version: 1 \(current\)
|
||||||
|
OS/ABI: UNIX - System V
|
||||||
|
ABI Version: 0
|
||||||
|
Type: EXEC \(Executable file\)
|
||||||
|
Machine: Advanced Micro Devices X86-64
|
||||||
|
Version: 0x1
|
||||||
|
#pass
|
4
ld/testsuite/ld-x86-64/ilp32-2.d
Normal file
4
ld/testsuite/ld-x86-64/ilp32-2.d
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
#source: dummy.s
|
||||||
|
#as: --n32
|
||||||
|
#ld: -m elf32_x86_64 tmpdir/startn32.o tmpdir/foo32.o
|
||||||
|
#error: .*i386 architecture of input file `tmpdir/foo32.o' is incompatible with i386:x64-32 output
|
4
ld/testsuite/ld-x86-64/ilp32-3.d
Normal file
4
ld/testsuite/ld-x86-64/ilp32-3.d
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
#source: dummy.s
|
||||||
|
#as: --n32
|
||||||
|
#ld: -m elf32_x86_64 tmpdir/startn32.o tmpdir/foo64.o
|
||||||
|
#error: .*i386:x86-64 architecture of input file `tmpdir/foo64.o' is incompatible with i386:x64-32 output
|
16
ld/testsuite/ld-x86-64/lp64-1.d
Normal file
16
ld/testsuite/ld-x86-64/lp64-1.d
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
#source: dummy.s
|
||||||
|
#as: --64
|
||||||
|
#ld: -m elf_x86_64 tmpdir/start64.o tmpdir/foo64.o
|
||||||
|
#readelf: -h
|
||||||
|
|
||||||
|
ELF Header:
|
||||||
|
Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
|
||||||
|
Class: ELF64
|
||||||
|
Data: 2's complement, little endian
|
||||||
|
Version: 1 \(current\)
|
||||||
|
OS/ABI: UNIX - System V
|
||||||
|
ABI Version: 0
|
||||||
|
Type: EXEC \(Executable file\)
|
||||||
|
Machine: Advanced Micro Devices X86-64
|
||||||
|
Version: 0x1
|
||||||
|
#pass
|
4
ld/testsuite/ld-x86-64/lp64-2.d
Normal file
4
ld/testsuite/ld-x86-64/lp64-2.d
Normal file
|
@ -0,0 +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
|
4
ld/testsuite/ld-x86-64/lp64-3.d
Normal file
4
ld/testsuite/ld-x86-64/lp64-3.d
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
#source: dummy.s
|
||||||
|
#as: --64
|
||||||
|
#ld: -m elf_x86_64 tmpdir/start64.o tmpdir/foon32.o
|
||||||
|
#error: .*i386:x64-32 architecture of input file `tmpdir/foon32.o' is incompatible with i386:x86-64 output
|
3
ld/testsuite/ld-x86-64/start.s
Normal file
3
ld/testsuite/ld-x86-64/start.s
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
.globl _start
|
||||||
|
_start:
|
||||||
|
jmp foo
|
|
@ -1,5 +1,6 @@
|
||||||
# Expect script for ld-x86_64 tests
|
# Expect script for ld-x86_64 tests
|
||||||
# Copyright (C) 2002, 2005, 2006, 2007, 2008, 2009 Free Software Foundation
|
# Copyright (C) 2002, 2005, 2006, 2007, 2008, 2009, 2010, 2011
|
||||||
|
# Free Software Foundation
|
||||||
#
|
#
|
||||||
# This file is part of the GNU Binutils.
|
# This file is part of the GNU Binutils.
|
||||||
#
|
#
|
||||||
|
@ -140,4 +141,43 @@ if { ![istarget "x86_64-*-linux*"] } {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ![ld_assemble $as "--n32 $srcdir/$subdir/start.s" tmpdir/startn32.o] {
|
||||||
|
unresolved "Build ILP32 start.o"
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if ![ld_assemble $as "--32 $srcdir/$subdir/start.s" tmpdir/start32.o] {
|
||||||
|
unresolved "Build ia32 start.o"
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if ![ld_assemble $as "--64 $srcdir/$subdir/start.s" tmpdir/start64.o] {
|
||||||
|
unresolved "Build LP64 start.o"
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if ![ld_assemble $as "--n32 $srcdir/$subdir/foo.s" tmpdir/foon32.o] {
|
||||||
|
unresolved "Build ILP32 foo.o"
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if ![ld_assemble $as "--32 $srcdir/$subdir/foo.s" tmpdir/foo32.o] {
|
||||||
|
unresolved "Build ia32 foo.o"
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if ![ld_assemble $as "--64 $srcdir/$subdir/foo.s" tmpdir/foo64.o] {
|
||||||
|
unresolved "Build LP64 foo.o"
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
run_dump_test "compressed1"
|
run_dump_test "compressed1"
|
||||||
|
run_dump_test "ilp32-1"
|
||||||
|
run_dump_test "ilp32-2"
|
||||||
|
run_dump_test "ilp32-3"
|
||||||
|
run_dump_test "ia32-1"
|
||||||
|
run_dump_test "ia32-2"
|
||||||
|
run_dump_test "ia32-3"
|
||||||
|
run_dump_test "lp64-1"
|
||||||
|
run_dump_test "lp64-2"
|
||||||
|
run_dump_test "lp64-3"
|
||||||
|
|
Loading…
Reference in a new issue