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>
|
2021-01-21 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
PR 27221
|
PR 27221
|
||||||
|
@ -737,7 +737,9 @@ resolve_reloc_expr_symbols (void)
|
|||||||
prevent the offset from overflowing the relocated field,
|
prevent the offset from overflowing the relocated field,
|
||||||
unless it has enough bits to cover the whole address
|
unless it has enough bits to cover the whole address
|
||||||
space. */
|
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
|
&& (sec->use_rela_p
|
||||||
|| (howto->partial_inplace
|
|| (howto->partial_inplace
|
||||||
&& (!howto->pc_relative
|
&& (!howto->pc_relative
|
||||||
|
Loading…
Reference in New Issue
Block a user