+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.
if (!mips_elf_record_got_page_entry (info, abfd, r_symndx,
addend))
return FALSE;
- break;
}
/* Fall through. */
+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.
}
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"
--- /dev/null
+ .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)
--- /dev/null
+ .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)
}
# 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]
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
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
}
}
}