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

View File

@ -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>
PR 25029

View File

@ -1532,19 +1532,23 @@ _bfd_elf_discard_section_eh_frame
don't create the binary search table,
since it is affected by runtime relocations. */
hdr_info->u.dwarf.table = FALSE;
if (num_warnings_issued < 10)
/* Only warn if --eh-frame-hdr was specified. */
if (info->eh_frame_hdr_type != 0)
{
_bfd_error_handler
/* xgettext:c-format */
(_("FDE encoding in %pB(%pA) prevents .eh_frame_hdr"
" table being created"), abfd, sec);
num_warnings_issued ++;
}
else if (num_warnings_issued == 10)
{
_bfd_error_handler
(_("further warnings about FDE encoding preventing .eh_frame_hdr generation dropped"));
num_warnings_issued ++;
if (num_warnings_issued < 10)
{
_bfd_error_handler
/* xgettext:c-format */
(_("FDE encoding in %pB(%pA) prevents .eh_frame_hdr"
" table being created"), abfd, sec);
num_warnings_issued ++;
}
else if (num_warnings_issued == 10)
{
_bfd_error_handler
(_("further warnings about FDE encoding preventing .eh_frame_hdr generation dropped"));
num_warnings_issued ++;
}
}
}
ent->removed = 0;