mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-27 20:14:06 +08:00
PR27228, .reloc wrong symbol emitted for undefined local symbol
Local symbols are of course supposed to be defined by their object file, but in other cases a local symbol is promoted to global by gas if undefined and referenced. This patch stops gas wrongly replacing a local undefined symbol with the undefined section symbol, resulting in a .reloc undefined local symbol being emitted as global. PR 27228 * write.c (resolve_reloc_expr_symbols): Don't assume local symbol is defined.
This commit is contained in:
parent
b10bae1875
commit
68fcee4fa7
@ -1,3 +1,9 @@
|
||||
2021-01-24 Alan Modra <amodra@gmail.com>
|
||||
|
||||
PR 27228
|
||||
* write.c (resolve_reloc_expr_symbols): Don't assume local symbol
|
||||
is defined.
|
||||
|
||||
2021-01-21 Alan Modra <amodra@gmail.com>
|
||||
|
||||
PR 27221
|
||||
|
@ -737,7 +737,9 @@ resolve_reloc_expr_symbols (void)
|
||||
prevent the offset from overflowing the relocated field,
|
||||
unless it has enough bits to cover the whole address
|
||||
space. */
|
||||
if (S_IS_LOCAL (sym) && !symbol_section_p (sym)
|
||||
if (S_IS_LOCAL (sym)
|
||||
&& S_IS_DEFINED (sym)
|
||||
&& !symbol_section_p (sym)
|
||||
&& (sec->use_rela_p
|
||||
|| (howto->partial_inplace
|
||||
&& (!howto->pc_relative
|
||||
|
Loading…
Reference in New Issue
Block a user