aboutsummaryrefslogtreecommitdiff
path: root/ld/testsuite/ld-mips-elf/mips-elf.exp
diff options
context:
space:
mode:
authorJames Cowgill <james.cowgill@mips.com>2018-03-03 15:49:21 +0000
committerMaciej W. Rozycki <macro@mips.com>2018-03-03 15:49:21 +0000
commitdfb93f11587ca08b820c7c785278366f2505cfd1 (patch)
tree19952490ddd453f8fb532d608c92012da84b0c18 /ld/testsuite/ld-mips-elf/mips-elf.exp
parentb9671caf8fe1abd737846edf7dcd627870f986cc (diff)
downloadgdb-dfb93f11587ca08b820c7c785278366f2505cfd1.zip
gdb-dfb93f11587ca08b820c7c785278366f2505cfd1.tar.gz
gdb-dfb93f11587ca08b820c7c785278366f2505cfd1.tar.bz2
PR ld/21900: MIPS: Fix relocation processing with undefined symbols
Currently, when `mips_elf_calculate_relocation' is asked to relocate an undefined symbol, it reports an error or a warning and immediately returns without performing the relocation. This is fine if the link fails, but if unresolved_syms_in_objects == RM_GENERATE_WARNING, the link will continue and output some unrelocated code, which is a regression from commit e7e2196da3f0 ("MIPS/BFD: Correctly report undefined relocations"). Fix this by continuing after calling the `undefined_symbol' hook unless this is an error condition. bfd/ PR ld/21900 * elfxx-mips.c (mips_elf_calculate_relocation): Only return after calling `undefined_symbol' hook if this is an error condition. Assume the value of 0 for the symbol requested otherwise. ld/ PR ld/21900 * testsuite/ld-mips-elf/undefined-warn.d: New test. * testsuite/ld-mips-elf/undefined.s: Add padding at the end. * testsuite/ld-mips-elf/mips-elf.exp: Run the new test.
Diffstat (limited to 'ld/testsuite/ld-mips-elf/mips-elf.exp')
-rw-r--r--ld/testsuite/ld-mips-elf/mips-elf.exp1
1 files changed, 1 insertions, 0 deletions
diff --git a/ld/testsuite/ld-mips-elf/mips-elf.exp b/ld/testsuite/ld-mips-elf/mips-elf.exp
index 144b007..95d677e 100644
--- a/ld/testsuite/ld-mips-elf/mips-elf.exp
+++ b/ld/testsuite/ld-mips-elf/mips-elf.exp
@@ -995,6 +995,7 @@ if { $linux_gnu } {
}
run_dump_test "undefined"
+run_dump_test "undefined-warn"
# Test the conversion from jr to b
if { $linux_gnu } {