Only give FDE encoding warnings if --eh-frame-hdr was specified.

This bug was observed on nios2-linux-gnu with some C++ programs
linked with -pie or -shared.  The nios2 ABI doesn't include appropriate
relocations in this instance and GCC is also being patched not to pass
--eh-frame-hdr to the linker in those cases.

2019-12-05  Sandra Loosemore  <sandra@codesourcery.com>

        bfd/
        * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Make
        FDE encoding warning conditional.
This commit is contained in:
Sandra Loosemore
2019-12-05 13:20:12 -08:00
parent b858499daf
commit bce7c9d6fb
2 changed files with 23 additions and 12 deletions

@ -1,3 +1,10 @@
2019-12-05 Sandra Loosemore <sandra@codesourcery.com>
Only give FDE encoding warnings if --eh-frame-hdr was specified.
* elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Make
FDE encoding warning conditional.
2019-12-05 Nick Clifton <nickc@redhat.com> 2019-12-05 Nick Clifton <nickc@redhat.com>
PR 25029 PR 25029

@ -1532,6 +1532,9 @@ _bfd_elf_discard_section_eh_frame
don't create the binary search table, don't create the binary search table,
since it is affected by runtime relocations. */ since it is affected by runtime relocations. */
hdr_info->u.dwarf.table = FALSE; hdr_info->u.dwarf.table = FALSE;
/* Only warn if --eh-frame-hdr was specified. */
if (info->eh_frame_hdr_type != 0)
{
if (num_warnings_issued < 10) if (num_warnings_issued < 10)
{ {
_bfd_error_handler _bfd_error_handler
@ -1547,6 +1550,7 @@ _bfd_elf_discard_section_eh_frame
num_warnings_issued ++; num_warnings_issued ++;
} }
} }
}
ent->removed = 0; ent->removed = 0;
hdr_info->u.dwarf.fde_count++; hdr_info->u.dwarf.fde_count++;
ent->u.fde.cie_inf = find_merged_cie (abfd, info, sec, hdr_info, ent->u.fde.cie_inf = find_merged_cie (abfd, info, sec, hdr_info,