forked from Imagelibrary/binutils-gdb
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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user