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 886bd89e2a5a366b618d79b8cdc26d0134ebb1c4..55fd8e386daf2ca407ac7f6af1933a0656076f60 100644 (file)
@@ -1,3 +1,9 @@
+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
index bf4359dad148d030532e58d4b18e6ebe15406872..aa9d787927e9509234dae424902a5a643c63a05d 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)
        {