gas: missing (re-)initialization of local variable in fixup_segment()
At the very least this has been causing bogus diagnostics, e.g. .text .data .long .bss - . .long -.text .bss yielding Error: can't resolve `0' {.bss section} - `.text' {.text section} instead of Error: can't resolve `0' {*ABS* section} - `.text' {.text section} In particular for targets overriding any of TC_FORCE_RELOCATION_* & Co or for ones setting md_register_arithmetic to true the problems may be worse.
This commit is contained in:
parent
bd3d1480a8
commit
da0835aebe
@ -1,3 +1,8 @@
|
|||||||
|
2021-04-06 Jan Beulich <jbeulich@suse.com>
|
||||||
|
|
||||||
|
* write.c (fixup_segment): Move add_symbol_segment declaration
|
||||||
|
into main loop.
|
||||||
|
|
||||||
2021-04-05 Alan Modra <amodra@gmail.com>
|
2021-04-05 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
* configure.ac: Don't check for string.h, strings.h, stdlib.h,
|
* configure.ac: Don't check for string.h, strings.h, stdlib.h,
|
||||||
|
@ -922,7 +922,6 @@ fixup_segment (fixS *fixP, segT this_segment)
|
|||||||
{
|
{
|
||||||
valueT add_number;
|
valueT add_number;
|
||||||
fragS *fragP;
|
fragS *fragP;
|
||||||
segT add_symbol_segment = absolute_section;
|
|
||||||
|
|
||||||
if (fixP != NULL && abs_section_sym == NULL)
|
if (fixP != NULL && abs_section_sym == NULL)
|
||||||
abs_section_sym = section_symbol (absolute_section);
|
abs_section_sym = section_symbol (absolute_section);
|
||||||
@ -953,6 +952,8 @@ fixup_segment (fixS *fixP, segT this_segment)
|
|||||||
|
|
||||||
for (; fixP; fixP = fixP->fx_next)
|
for (; fixP; fixP = fixP->fx_next)
|
||||||
{
|
{
|
||||||
|
segT add_symbol_segment = absolute_section;
|
||||||
|
|
||||||
#ifdef DEBUG5
|
#ifdef DEBUG5
|
||||||
fprintf (stderr, "\nprocessing fixup:\n");
|
fprintf (stderr, "\nprocessing fixup:\n");
|
||||||
print_fixup (fixP);
|
print_fixup (fixP);
|
||||||
|
Loading…
Reference in New Issue
Block a user