2012-04-17 Tristan Gingold <gingold@adacore.com>
authorTristan Gingold <gingold@adacore.com>
Tue, 17 Apr 2012 10:51:07 +0000 (10:51 +0000)
committerTristan Gingold <gingold@adacore.com>
Tue, 17 Apr 2012 10:51:07 +0000 (10:51 +0000)
* vms-lib.c (_bfd_vms_lib_get_module): Append .obj extension to
member of an object archive.<

bfd/ChangeLog
bfd/vms-lib.c

index da0ebeed615b936afc7a2bce0f1338a0c534c053..787100281000ec71024ad30f7e9cd163dfc94d2a 100644 (file)
@@ -1,3 +1,8 @@
+2012-04-17  Tristan Gingold  <gingold@adacore.com>
+
+       * vms-lib.c (_bfd_vms_lib_get_module): Append .obj extension to
+       member of an object archive.<
+
 2012-04-17  Tristan Gingold  <gingold@adacore.com>
 
        * vms-lib.c (MAX_EKEYLEN): Define.
index 78696951f2f478783a8e8fdb63bbe2ef8b875a73..a0649d0d98437a5fbc71199b048418d99313a1ac 100644 (file)
@@ -1296,6 +1296,7 @@ _bfd_vms_lib_get_module (bfd *abfd, unsigned int modidx)
   struct lib_tdata *tdata = bfd_libdata (abfd);
   bfd *res;
   file_ptr file_off;
+  char *name;
 
   /* Sanity check.  */
   if (modidx >= tdata->nbr_modules)
@@ -1357,7 +1358,25 @@ _bfd_vms_lib_get_module (bfd *abfd, unsigned int modidx)
       res->origin = file_off + tdata->mhd_size;
     }
 
-  res->filename = tdata->modules[modidx].name;
+  /* Set filename.  */
+  name = tdata->modules[modidx].name;
+  switch (tdata->type)
+    {
+    case LBR__C_TYP_IOBJ:
+    case LBR__C_TYP_EOBJ:
+      /* For object archives, append .obj to mimic standard behaviour.  */
+      {
+       size_t namelen = strlen (name);
+       char *name1 = bfd_alloc (res, namelen + 4 + 1);
+       memcpy (name1, name, namelen);
+       strcpy (name1 + namelen, ".obj");
+       name = name1;
+      }
+      break;
+    default:
+      break;
+    }
+  res->filename = name;
 
   tdata->cache[modidx] = res;