Don't check relocation if input ELF object ID doesn't match output.

bfd/

2010-08-22  H.J. Lu  <hongjiu.lu@intel.com>

	PR ld/11933
	* elflink.c (elf_link_add_object_symbols): Don't check relocation
	if input ELF object ID doesn't match output.

ld/testsuite/

2010-08-22  H.J. Lu  <hongjiu.lu@intel.com>

	PR ld/11933
	* ld-x86-64/mixed1a.s: New.
	* ld-x86-64/mixed1b.s: Likewise.
	* ld-x86-64/mixed2a.s: Likewise.
	* ld-x86-64/mixed2b.s: Likewise.

	* ld-x86-64/x86-64.exp: Text mixed x86_64 and i386 inputs.
This commit is contained in:
H.J. Lu 2010-08-22 19:14:25 +00:00
parent a654efd60a
commit 39334f3a47
8 changed files with 78 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2010-08-22 H.J. Lu <hongjiu.lu@intel.com>
PR ld/11933
* elflink.c (elf_link_add_object_symbols): Don't check relocation
if input ELF object ID doesn't match output.
2010-08-21 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
* configure: Regenerate.

View File

@ -4791,6 +4791,7 @@ error_free_dyn:
if (! dynamic
&& is_elf_hash_table (htab)
&& bed->check_relocs != NULL
&& elf_object_id (abfd) == elf_hash_table_id (htab)
&& (*bed->relocs_compatible) (abfd->xvec, info->output_bfd->xvec))
{
asection *o;

View File

@ -1,3 +1,13 @@
2010-08-22 H.J. Lu <hongjiu.lu@intel.com>
PR ld/11933
* ld-x86-64/mixed1a.s: New.
* ld-x86-64/mixed1b.s: Likewise.
* ld-x86-64/mixed2a.s: Likewise.
* ld-x86-64/mixed2b.s: Likewise.
* ld-x86-64/x86-64.exp: Text mixed x86_64 and i386 inputs.
2010-08-20 Maciej W. Rozycki <macro@codesourcery.com>
* ld-sh/sh.exp: Add missing newline.

View File

@ -0,0 +1,6 @@
.text
.globl _start
.type _start, @function
_start:
cmpq $0, foo(%rip)
.size _start, .-_start

View File

@ -0,0 +1,10 @@
.globl foo
.section .rodata.str1.1,"aMS",@progbits,1
.LC0:
.string "Hello"
.data
.align 4
.type foo, @object
.size foo, 4
foo:
.long .LC0

View File

@ -0,0 +1,7 @@
.text
.p2align 4,,15
.globl _start
.type _start, @function
_start:
movl foo(%rip), %eax
.size _start, .-_start

View File

@ -0,0 +1,7 @@
.globl foo
.data
.align 4
.type foo, @object
.size foo, 4
foo:
.long 1

View File

@ -75,10 +75,41 @@ set x86_64tests {
{"TLS IE->LE transition" "-melf_x86_64"
"--64" {tlsie1.s}
{{objdump -dwr tlsie1.dd}} "tlsie1"}
{"Helper 64bit object 1" "-r -melf_x86_64"
"--64" {mixed1a.s} {} "libmixe1a.o"}
{"Helper 32bit object 1" "-r -melf_i386"
"--32" {mixed1b.s} {} "libmixe1b.o"}
{"Helper 64bit object 2" "-r -melf_x86_64"
"--64" {mixed2a.s} {} "libmixe2a.o"}
{"Helper 32bit object 2" "-r -melf_i386"
"--32" {mixed2b.s} {} "libmixe2b.o"}
}
run_ld_link_tests $x86_64tests
global link_output
global ld
set test_namename "Mixed x86_64 and i386 input test 1"
set test mixed1
if { ![ld_simple_link $ld tmpdir/$test "-melf_x86_64 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] {
pass "$test_name"
} {
fail "$test_name"
}
}
set test_namename "Mixed x86_64 and i386 input test 2"
set test mixed2
if { ![ld_simple_link $ld tmpdir/$test "-melf_x86_64 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] {
pass "$test_name"
} {
fail "$test_name"
}
}
run_dump_test "abs"
run_dump_test "abs-l1om"
run_dump_test "pcrel8"