* pe-dll.c (generate_reloc): Don't emit a base reloc for an
authorDave Korn <dave.korn@artimi.com>
Thu, 13 Oct 2011 02:34:36 +0000 (02:34 +0000)
committerDave Korn <dave.korn@artimi.com>
Thu, 13 Oct 2011 02:34:36 +0000 (02:34 +0000)
underlying BFD reloc that will be discarded in eh_frame data.

ld/ChangeLog
ld/pe-dll.c

index 6f959bba2b52b8909b2e535db1f0e3151e53cf22..4a3eb3bf12de77e2d22c00b309e34c98bae32f98 100644 (file)
@@ -1,3 +1,8 @@
+2011-10-13  Dave Korn  <dave.korn.cygwin@gmail.com>
+
+       * pe-dll.c (generate_reloc): Don't emit a base reloc for an
+       underlying BFD reloc that will be discarded in eh_frame data.
+
 2011-10-10  Nick Clifton  <nickc@redhat.com>
 
        * po/bg.po: Updated Bulgarian translation.
index 7848063f211dcdbee109b7d0379232171b5f934c..ce0ab5d2ea79e24fd8aa0ecf9d763e3ed71dd9dd 100644 (file)
@@ -1395,6 +1395,15 @@ generate_reloc (bfd *abfd, struct bfd_link_info *info)
                      else if (!blhe || blhe->type != bfd_link_hash_defined)
                        continue;
                    }
+                 /* Nor for Dwarf FDE references to discarded sections.  */
+                 else if (bfd_is_abs_section (sym->section->output_section))
+                   {
+                     /* We only ignore relocs from .eh_frame sections, as
+                        they are discarded by the final link rather than
+                        resolved against the kept section.  */
+                     if (!strcmp (s->name, ".eh_frame"))
+                       continue;
+                   }
 
                  reloc_data[total_relocs].vma = sec_vma + relocs[i]->address;