Do not assume that either bfd is an archive
authorNick Clifton <nickc@redhat.com>
Fri, 27 Aug 2004 07:39:19 +0000 (07:39 +0000)
committerNick Clifton <nickc@redhat.com>
Fri, 27 Aug 2004 07:39:19 +0000 (07:39 +0000)
ld/ChangeLog
ld/emultempl/pe.em

index a8ec6506a5e5a5d356d91051f302d3382ff2f444..80d662ea761b0fa060ca51a40c08a2c97efadfd0 100644 (file)
@@ -1,3 +1,8 @@
+2004-08-27  Nick Clifton  <nickc@redhat.com>
+
+       * emultempl/pe.em (after_open): Do not assume that either bfd is
+       an archive. 
+
 2004-08-26  Alan Modra  <amodra@bigpond.net.au>
 
        * ldlang.c (lang_init): Don't compare with TRUE.
index 7c5b2d0d1ab352a24142210171dd449fef6acbab..09916911015fda3026a853c932792af1ba551511 100644 (file)
@@ -1096,17 +1096,19 @@ gld_${EMULATION_NAME}_after_open (void)
                          continue;
 
                        other_bfd = blhe->u.def.section->owner;
+#define bfd_filename(bfd) ((bfd)->my_archive ? bfd_get_filename ((bfd)->my_archive) : bfd_get_filename (bfd))
 
-                       if (strcmp (is->the_bfd->my_archive->filename,
-                                   other_bfd->my_archive->filename) == 0)
+                       if (strcmp (bfd_filename (is->the_bfd),
+                                   bfd_filename (other_bfd)) == 0)
                          continue;
 
-                       /* Rename this implib to match the other.  */
-                       n = (char *) xmalloc (strlen (other_bfd->my_archive->filename) + 1);
+                       /* Rename this implib to match the other one.  */
+                       n = xmalloc (strlen (bfd_filename (other_bfd)) + 1);
 
-                       strcpy (n, other_bfd->my_archive->filename);
+                       strcpy (n, bfd_filename (other_bfd));
 
-                       is->the_bfd->my_archive->filename = n;
+                       bfd_filename (is->the_bfd) = n;
+#undef bfd_filename
                      }
 
                    free (relocs);