aboutsummaryrefslogtreecommitdiff
path: root/bfd/vms-lib.c
diff options
context:
space:
mode:
authorTristan Gingold <gingold@adacore.com>2012-04-17 10:51:07 +0000
committerTristan Gingold <gingold@adacore.com>2012-04-17 10:51:07 +0000
commitda03bf4d5bf7cdf56a85d10b85b05028649f94f7 (patch)
tree0adc0e39dcb080fa25e2abf41f7f56ee3085b813 /bfd/vms-lib.c
parentd22260241bfa41c701365adf714a6cc04c4810d8 (diff)
downloadgdb-da03bf4d5bf7cdf56a85d10b85b05028649f94f7.zip
gdb-da03bf4d5bf7cdf56a85d10b85b05028649f94f7.tar.gz
gdb-da03bf4d5bf7cdf56a85d10b85b05028649f94f7.tar.bz2
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.<
Diffstat (limited to 'bfd/vms-lib.c')
-rw-r--r--bfd/vms-lib.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/bfd/vms-lib.c b/bfd/vms-lib.c
index 7869695..a0649d0 100644
--- a/bfd/vms-lib.c
+++ b/bfd/vms-lib.c
@@ -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;