mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-20 01:50:24 +08:00
ELF: emit symbol table when there are relocations
Even when there are no symbols (e.g. all relocations being against absolute values), a symbol table (with just the first placeholder entry) needs to be emitted. Otherwise tools like objdump won't properly process the relocations. The respective checks in assign_section_numbers() and _bfd_elf_compute_section_file_positions() support also this view. Oddly enough so far HAS_RELOC was only set when reading in an object file, but not when generating one anew; the flag would only have been cleared when no relocations were found (anymore). While there also amend the affected function's leading comment to also mention gas.
This commit is contained in:
@ -3674,7 +3674,7 @@ elf_get_reloc_section (asection *reloc_sec)
|
||||
/* Assign all ELF section numbers. The dummy first section is handled here
|
||||
too. The link/info pointers for the standard section types are filled
|
||||
in here too, while we're at it. LINK_INFO will be 0 when arriving
|
||||
here for objcopy, and when using the generic ELF linker. */
|
||||
here for gas, objcopy, and when using the generic ELF linker. */
|
||||
|
||||
static bool
|
||||
assign_section_numbers (bfd *abfd, struct bfd_link_info *link_info)
|
||||
@ -3717,9 +3717,11 @@ assign_section_numbers (bfd *abfd, struct bfd_link_info *link_info)
|
||||
reloc_count += sec->reloc_count;
|
||||
}
|
||||
|
||||
/* Clear HAS_RELOC if there are no relocations. */
|
||||
/* Set/clear HAS_RELOC depending on whether there are relocations. */
|
||||
if (reloc_count == 0)
|
||||
abfd->flags &= ~HAS_RELOC;
|
||||
else
|
||||
abfd->flags |= HAS_RELOC;
|
||||
}
|
||||
|
||||
for (sec = abfd->sections; sec; sec = sec->next)
|
||||
|
Reference in New Issue
Block a user