This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
[VMS/committed]: Set extension to archive member
- From: Tristan Gingold <gingold at adacore dot com>
- To: binutils Development <binutils at sourceware dot org>
- Date: Tue, 17 Apr 2012 12:50:51 +0200
- Subject: [VMS/committed]: Set extension to archive member
Hi,
VMS archives member names doesn't have extension (only the 'basename' is stored).
But this is not the usual convention for ar, and some tools (libtool) expect that extracted
members of an archive to have the standard object extension.
This patch implements this behaviour, thus making VMS archives more UNIX friendly.
Committed on trunk.
Tristan.
bfd/
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.<
Index: vms-lib.c
===================================================================
RCS file: /cvs/src/src/bfd/vms-lib.c,v
retrieving revision 1.21
diff -c -p -r1.21 vms-lib.c
*** vms-lib.c 17 Apr 2012 10:28:19 -0000 1.21
--- vms-lib.c 17 Apr 2012 10:47:01 -0000
*************** _bfd_vms_lib_get_module (bfd *abfd, unsi
*** 1296,1301 ****
--- 1296,1302 ----
struct lib_tdata *tdata = bfd_libdata (abfd);
bfd *res;
file_ptr file_off;
+ char *name;
/* Sanity check. */
if (modidx >= tdata->nbr_modules)
*************** _bfd_vms_lib_get_module (bfd *abfd, unsi
*** 1357,1363 ****
res->origin = file_off + tdata->mhd_size;
}
! res->filename = tdata->modules[modidx].name;
tdata->cache[modidx] = res;
--- 1358,1382 ----
res->origin = file_off + tdata->mhd_size;
}
! /* 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;