This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[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;
  


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]