Only give FDE encoding warnings if --eh-frame-hdr was specified.
authorSandra Loosemore <sandra@codesourcery.com>
Thu, 5 Dec 2019 21:20:12 +0000 (13:20 -0800)
committerSandra Loosemore <sandra@codesourcery.com>
Thu, 5 Dec 2019 21:20:12 +0000 (13:20 -0800)
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.

bfd/ChangeLog
bfd/elf-eh-frame.c

index f81477551903b0cf510041b8c354fde71bfb27b3..c1bba0cac160406d9bd5300d64995ccbb42afe68 100644 (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
index c2cb77bb1103b3fdd34eb916bb1f4a43f435d745..b622ffcee2aa1dbd8b875b7122d3f307eb118c13 100644 (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;