Find one .eh_frame section for --eh-frame-hdr.
authorH.J. Lu <hjl.tools@gmail.com>
Sun, 22 Aug 2010 20:21:21 +0000 (20:21 +0000)
committerH.J. Lu <hjl.tools@gmail.com>
Sun, 22 Aug 2010 20:21:21 +0000 (20:21 +0000)
2010-08-22  H.J. Lu  <hongjiu.lu@intel.com>

PR ld/11937
* emultempl/elf32.em (_after_open): Find one .eh_frame section
for --eh-frame-hdr.

ld/ChangeLog
ld/emultempl/elf32.em

index 886bd89..55fd8e3 100644 (file)
@@ -1,6 +1,12 @@
 2010-08-22  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR ld/11937
+       * emultempl/elf32.em (_after_open): Find one .eh_frame section
+       for --eh-frame-hdr.
+
+2010-08-22  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR ld/11937
        * emultempl/elf32.em (_after_open): Find an ELF input for
        --build-id and --eh-frame-hdr.
 
index bf4359d..aa9d787 100644 (file)
@@ -1132,11 +1132,16 @@ gld${EMULATION_NAME}_after_open (void)
        {
          if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
            elfbfd = abfd;
-         s = bfd_get_section_by_name (abfd, ".eh_frame");
-          if (s && s->size > 8 && !bfd_is_abs_section (s->output_section))
-            warn_eh_frame = TRUE;
-          if (elfbfd && warn_eh_frame)
-            break;
+         if (!warn_eh_frame)
+           {
+             s = bfd_get_section_by_name (abfd, ".eh_frame");
+             warn_eh_frame
+               = (s
+                  && s->size > 8
+                  && !bfd_is_abs_section (s->output_section));
+           }
+         if (elfbfd && warn_eh_frame)
+           break;
        }
       if (elfbfd)
        {