PR ld/21900: MIPS: Fix relocation processing with undefined symbols
authorJames Cowgill <james.cowgill@mips.com>
Sat, 3 Mar 2018 15:49:21 +0000 (15:49 +0000)
committerMaciej W. Rozycki <macro@mips.com>
Sat, 3 Mar 2018 15:49:21 +0000 (15:49 +0000)
commitdfb93f11587ca08b820c7c785278366f2505cfd1
tree19952490ddd453f8fb532d608c92012da84b0c18
parentb9671caf8fe1abd737846edf7dcd627870f986cc
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.
bfd/ChangeLog
bfd/elfxx-mips.c
ld/ChangeLog
ld/testsuite/ld-mips-elf/mips-elf.exp
ld/testsuite/ld-mips-elf/undefined-warn.d [new file with mode: 0644]
ld/testsuite/ld-mips-elf/undefined.s