* elfxx-mips.c (_bfd_mips_elf_check_relocs): Record both local and
	global GOT entries for GOT_PAGE relocations against global symbols.

ld/testsuite/
	* lib/ld-lib.exp (run_ld_link_tests): Simplify pass/fail logic.
	Fail if the link command fails and if no test rules are defined.
	* ld-mips-elf/reloc-6a.s, ld-mips-elf/reloc-6b.s: New tests.
	* ld-mips-elf/mips-elf.exp: Run them.
This commit is contained in:
Richard Sandiford 2011-05-15 18:52:01 +00:00
parent 75fc9810e3
commit 77c56f443d
7 changed files with 54 additions and 21 deletions

View File

@ -1,3 +1,8 @@
2011-05-15 Richard Sandiford <rdsandiford@googlemail.com>
* elfxx-mips.c (_bfd_mips_elf_check_relocs): Record both local and
global GOT entries for GOT_PAGE relocations against global symbols.
2011-05-13 Bernd Schmidt <bernds@codesourcery.com>
* config.bfd (tic6x-*-elf, tic6x-*-uclinux): New.

View File

@ -7743,7 +7743,6 @@ _bfd_mips_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
if (!mips_elf_record_got_page_entry (info, abfd, r_symndx,
addend))
return FALSE;
break;
}
/* Fall through. */

View File

@ -1,3 +1,10 @@
2011-05-15 Richard Sandiford <rdsandiford@googlemail.com>
* lib/ld-lib.exp (run_ld_link_tests): Simplify pass/fail logic.
Fail if the link command fails and if no test rules are defined.
* ld-mips-elf/reloc-6a.s, ld-mips-elf/reloc-6b.s: New tests.
* ld-mips-elf/mips-elf.exp: Run them.
2011-05-13 Bernd Schmidt <bernds@codesourcery.com>
* ld-tic6x/dsbt.ld (OUTPUT_FORMAT): Add.

View File

@ -298,6 +298,18 @@ if {$has_newabi} {
}
run_dump_test "reloc-4"
run_dump_test "reloc-5"
if { $has_newabi } {
run_ld_link_tests {
{"reloc test 6a" "-shared"
"-n32" "reloc-6a.s"
{}
"reloc-6a.so"}
{"reloc test 6b" "tmpdir/reloc-6a.so"
"-n32" "reloc-6b.s"
{}
"reloc-6b"}
}
}
if {$has_newabi && $linux_gnu} {
run_dump_test "eh-frame1-n32"

View File

@ -0,0 +1,11 @@
.globl us
.globl gs
us:
gs:
ls:
lw $4,%got_page(us)($gp)
addiu $4,$4,%got_ofst(us)
lw $4,%got_page(gs)($gp)
addiu $4,$4,%got_ofst(gs)
lw $4,%got_page(ls)($gp)
addiu $4,$4,%got_ofst(ls)

View File

@ -0,0 +1,11 @@
.globl __start
.globl gs
__start:
gs:
ls:
lw $4,%got_page(us)($gp)
addiu $4,$4,%got_ofst(us)
lw $4,%got_page(gs)($gp)
addiu $4,$4,%got_ofst(gs)
lw $4,%got_page(ls)($gp)
addiu $4,$4,%got_ofst(ls)

View File

@ -978,26 +978,21 @@ proc run_ld_link_tests { ldtests } {
}
# Catch assembler errors.
if { $is_unresolved != 0 } {
if { $is_unresolved } {
unresolved $testname
continue
}
if { [regexp ".*\\.a$" $binfile] } {
if { ![ar_simple_create $ar $ld_options $binfile "$objfiles"] } {
fail $testname
set failed 1
} else {
set failed 0
}
} elseif { ![ld_simple_link $ld $binfile "-L$srcdir/$subdir $ld_options $objfiles"] } {
set maybe_failed 1
set ld_output "$exec_output"
} else {
set failed 0
}
if { $failed == 0 } {
if { !$failed } {
foreach actionlist $actions {
set action [lindex $actionlist 0]
set progopts [lindex $actionlist 1]
@ -1034,10 +1029,7 @@ proc run_ld_link_tests { ldtests } {
break
}
set maybe_failed 0
} elseif { $maybe_failed != 0 } {
set failed 1
break
} elseif { $dump_prog != "" } {
} elseif { !$maybe_failed && $dump_prog != "" } {
set dumpfile [lindex $actionlist 2]
set binary $dump_prog
@ -1079,18 +1071,14 @@ proc run_ld_link_tests { ldtests } {
remote_file host delete "dump.out"
}
}
if { $failed != 0 } {
fail $testname
} else { if { $is_unresolved == 0 } {
pass $testname
} }
}
# Catch action errors.
if { $is_unresolved != 0 } {
if { $is_unresolved } {
unresolved $testname
continue
} elseif { $maybe_failed || $failed } {
fail $testname
} else {
pass $testname
}
}
}