From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9458 invoked by alias); 4 May 2010 08:33:39 -0000 Received: (qmail 9438 invoked by uid 22791); 4 May 2010 08:33:35 -0000 X-SWARE-Spam-Status: No, hits=0.0 required=5.0 tests=AWL,BAYES_00,TW_FX,URIBL_BLACK X-Spam-Check-By: sourceware.org Received: from mel.act-europe.fr (HELO mel.act-europe.fr) (212.99.106.210) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 04 May 2010 08:33:27 +0000 Received: from localhost (localhost [127.0.0.1]) by filtered-smtp.eu.adacore.com (Postfix) with ESMTP id F404ECB0282 for ; Tue, 4 May 2010 10:33:24 +0200 (CEST) Received: from mel.act-europe.fr ([127.0.0.1]) by localhost (smtp.eu.adacore.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id gG9F+-ngUkxp for ; Tue, 4 May 2010 10:33:24 +0200 (CEST) Received: from ulanbator.act-europe.fr (ulanbator.act-europe.fr [10.10.1.67]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by mel.act-europe.fr (Postfix) with ESMTP id DE75BCB01F6 for ; Tue, 4 May 2010 10:33:24 +0200 (CEST) From: Tristan Gingold Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable Subject: [Patch]: Enable vms/ia64 archives Date: Tue, 04 May 2010 08:33:00 -0000 Message-Id: <60B78494-7ADF-45FE-BC2F-88B4B18F0100@adacore.com> To: binutils Mime-Version: 1.0 (Apple Message framework v1078) X-IsSubscribed: yes Mailing-List: contact binutils-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: binutils-owner@sourceware.org X-SW-Source: 2010-05/txt/msg00022.txt.bz2 Hi, this patch enables the use of vms archives on ia64/vms. The VMS specific p= art is trivial (all the work was already committed), but there is an neighborhood issue: I think we don'= t want to include the vms archive stuff while building for ia64-linux (or hpux). There is already a = per vector define flag, but it was not added for all sources and not defined when --enable-targets=3Dal= l was set. With this patch, havevecs is now separated from tdefaults and added to INCLUDES flags. Furt= hermore the macro HAVE_all_vecs is defined with --enable-targets=3Dall. Using conditional di= rective, the VMS stuff in elfxx-ia64.c is compiled only when the VMS vector is selected (either by= its own or through --enable-targets=3Dall). To check this approach, I have build for ia64-openvms, ia64-linux and with = --enable-targets=3Dall. Ok for mainline ? Tristan. bfd/ 2010-05-04 Tristan Gingold * vms-lib.c (_bfd_vms_lib_ia64_archive_p): New function. * libbfd-in.h (_bfd_vms_lib_ia64_archive_p): Add prototype. * libbfd.h: Regenerate. * configure.in (havevecs): Define HAVE_all_vecs when --enable-targets=3Dall is set. Use AC_SUBST on it. (tdefaults): Do not add havevecs. (bfd_elf64_ia64_vms_vec): Add vms-lib.lo and vms-misc.lo * configure: Regenerate. * Makefile.in (tdefaults): Remove this unused variable. (HAVEVECS): New variable. (INCLUDES): Add HAVEVECS. * elfxx-ia64.c: Use #if/#endif around vms specific code. (bfd_elfNN_archive_p, bfd_elfNN_archive_slurp_armap, bfd_elfNN_archive_slurp_extended_name_table, bfd_elfNN_archive_construct_extended_name_table, bfd_elfNN_archive_truncate_arname, bfd_elfNN_archive_write_armap, bfd_elfNN_archive_read_ar_hdr, bfd_elfNN_archive_write_ar_hdr, bfd_elfNN_archive_openr_next_archived_file, bfd_elfNN_archive_get_elt_at_index, bfd_elfNN_archive_generic_stat_arch_elt, bfd_elfNN_archive_update_armap_timestamp): Define to use vms archives. diff --git a/bfd/Makefile.in b/bfd/Makefile.in index 7134a70..1c8ee65 100644 --- a/bfd/Makefile.in +++ b/bfd/Makefile.in @@ -309,7 +309,6 @@ target_cpu =3D @target_cpu@ target_noncanonical =3D @target_noncanonical@ target_os =3D @target_os@ target_vendor =3D @target_vendor@ -tdefaults =3D @tdefaults@ top_build_prefix =3D @top_build_prefix@ top_builddir =3D @top_builddir@ top_srcdir =3D @top_srcdir@ @@ -982,7 +981,9 @@ ALL_BACKENDS =3D @all_backends@ BFD_BACKENDS =3D @bfd_backends@ BFD_MACHINES =3D @bfd_machines@ TDEFAULTS =3D @tdefaults@ -INCLUDES =3D @HDEFINES@ @COREFLAG@ @TDEFINES@ $(CSEARCH) $(CSWITCHES) @INC= INTL@ +HAVEVECS =3D @havevecs@ +INCLUDES =3D @HDEFINES@ @COREFLAG@ @TDEFINES@ $(CSEARCH) $(CSWITCHES) \ + $(HAVEVECS) @INCINTL@ =20 # C source files that correspond to .o's. SOURCE_CFILES =3D \ diff --git a/bfd/configure.in b/bfd/configure.in index 6f05505..dbbadc0 100644 --- a/bfd/configure.in +++ b/bfd/configure.in @@ -801,7 +801,7 @@ do bfd_elf64_ia64_big_vec) tb=3D"$tb elf64-ia64.lo elf64.lo $elf"; target= _size=3D64 ;; bfd_elf64_ia64_hpux_big_vec) tb=3D"$tb elf64-ia64.lo elf64.lo $elf"; t= arget_size=3D64 ;; bfd_elf64_ia64_little_vec) tb=3D"$tb elf64-ia64.lo elf64.lo $elf"; tar= get_size=3D64 ;; - bfd_elf64_ia64_vms_vec) tb=3D"$tb elf64-ia64.lo elf64.lo $elf"; target= _size=3D64 ;; + bfd_elf64_ia64_vms_vec) tb=3D"$tb elf64-ia64.lo elf64.lo vms-lib.lo vm= s-misc.lo $elf"; target_size=3D64 ;; bfd_elf64_little_generic_vec) tb=3D"$tb elf64-gen.lo elf64.lo $elf"; t= arget_size=3D64 ;; bfd_elf64_littlemips_vec) tb=3D"$tb elf64-mips.lo elf64.lo elfxx-mips= .lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=3D64 ;; bfd_elf64_mmix_vec) tb=3D"$tb elf64-mmix.lo elf64.lo $elf" target_siz= e=3D64 ;; @@ -992,7 +992,7 @@ if test x${all_targets} =3D xtrue ; then bfd_backends=3D"${bfd_backends}"' $(ALL_BACKENDS)' bfd_machines=3D"${bfd_machines}"' $(ALL_MACHINES)' selvecs=3D - havevecs=3D + havevecs=3D-DHAVE_all_vecs selarchs=3D test -n "$assocvecs" && assocvecs=3D`echo $assocvecs | sed -e 's/^/\&/' -e 's/ \(.\)/,\&\1/g'` @@ -1077,8 +1077,8 @@ test -n "${defvec}" && tdefaults=3D"${tdefaults} -DDE= FAULT_VECTOR=3D${defvec}" test -n "${selvecs}" && tdefaults=3D"${tdefaults} -DSELECT_VECS=3D'${selve= cs}'" test -n "${assocvecs}" && tdefaults=3D"${tdefaults} -DASSOCIATED_VECS=3D'$= {assocvecs}'" test -n "${selarchs}" && tdefaults=3D"${tdefaults} -DSELECT_ARCHITECTURES= =3D'${selarchs}'" -test -n "${havevecs}" && tdefaults=3D"${tdefaults} ${havevecs}" AC_SUBST(tdefaults) +AC_SUBST(havevecs) =20 dnl AC_CHECK_HEADERS(sys/mman.h) AC_FUNC_MMAP diff --git a/bfd/elfxx-ia64.c b/bfd/elfxx-ia64.c index 7fde3d5..6ee4ac1 100644 --- a/bfd/elfxx-ia64.c +++ b/bfd/elfxx-ia64.c @@ -5723,6 +5723,8 @@ elfNN_hpux_backend_symbol_processing (bfd *abfd ATTRI= BUTE_UNUSED, } } =20 +#if defined (HAVE_bfd_elf64_ia64_vms_vec) || defined (HAVE_all_vecs) + static bfd_boolean elfNN_vms_section_from_shdr (bfd *abfd, Elf_Internal_Shdr *hdr, @@ -5984,6 +5986,7 @@ elfNN_vms_close_and_cleanup (bfd *abfd) =20 return _bfd_generic_close_and_cleanup (abfd); } +#endif /* !(defined (HAVE_bfd_elf64_ia64_vms_vec) || defined (HAVE_all_vec= s)) */ =0C #define TARGET_LITTLE_SYM bfd_elfNN_ia64_little_vec #define TARGET_LITTLE_NAME "elfNN-ia64-little" @@ -6117,6 +6120,7 @@ elfNN_vms_close_and_cleanup (bfd *abfd) #include "elfNN-target.h" =20 /* VMS-specific vectors. */ +#if defined (HAVE_bfd_elf64_ia64_vms_vec) || defined (HAVE_all_vecs) =20 #undef TARGET_LITTLE_SYM #define TARGET_LITTLE_SYM bfd_elfNN_ia64_vms_vec @@ -6160,4 +6164,34 @@ elfNN_vms_close_and_cleanup (bfd *abfd) #undef elfNN_bed #define elfNN_bed elfNN_ia64_vms_bed =20 +/* Use VMS-style archives. */ + +#undef bfd_elfNN_archive_p +#define bfd_elfNN_archive_p _bfd_vms_lib_ia64_archive_p + +#define bfd_elfNN_archive_slurp_armap \ + _bfd_vms_lib_slurp_armap +#define bfd_elfNN_archive_slurp_extended_name_table \ + _bfd_vms_lib_slurp_extended_name_table +#define bfd_elfNN_archive_construct_extended_name_table \ + _bfd_vms_lib_construct_extended_name_table +#define bfd_elfNN_archive_truncate_arname \ + _bfd_vms_lib_truncate_arname +#define bfd_elfNN_archive_write_armap \ + _bfd_vms_lib_write_armap +#define bfd_elfNN_archive_read_ar_hdr \ + _bfd_vms_lib_read_ar_hdr +#define bfd_elfNN_archive_write_ar_hdr \ + _bfd_vms_lib_write_ar_hdr +#define bfd_elfNN_archive_openr_next_archived_file \ + _bfd_vms_lib_openr_next_archived_file +#define bfd_elfNN_archive_get_elt_at_index \ + _bfd_vms_lib_get_elt_at_index +#define bfd_elfNN_archive_generic_stat_arch_elt \ + _bfd_vms_lib_generic_stat_arch_elt +#define bfd_elfNN_archive_update_armap_timestamp \ + _bfd_vms_lib_update_armap_timestamp + #include "elfNN-target.h" + +#endif /* !(defined (HAVE_bfd_elf64_ia64_vms_vec) || defined (HAVE_all_vec= s)) */ diff --git a/bfd/libbfd-in.h b/bfd/libbfd-in.h index 89d0df6..5e636a3 100644 --- a/bfd/libbfd-in.h +++ b/bfd/libbfd-in.h @@ -375,6 +375,7 @@ extern int _bfd_vms_lib_generic_stat_arch_elt (bfd *, s= truct stat *); extern symindex _bfd_vms_lib_find_symbol (bfd *, const char *); extern bfd *_bfd_vms_lib_get_imagelib_file (bfd *); extern const bfd_target *_bfd_vms_lib_alpha_archive_p (bfd *abfd); +extern const bfd_target *_bfd_vms_lib_ia64_archive_p (bfd *abfd); extern bfd_boolean _bfd_vms_lib_mkarchive (bfd *abfd); =20 /* Routines to use for BFD_JUMP_TABLE_SYMBOLS where there is no symbol diff --git a/bfd/vms-lib.c b/bfd/vms-lib.c index 0b45a13..3877686 100644 --- a/bfd/vms-lib.c +++ b/bfd/vms-lib.c @@ -619,6 +619,14 @@ _bfd_vms_lib_alpha_archive_p (bfd *abfd) return _bfd_vms_lib_archive_p (abfd, vms_lib_alpha); } =20 +/* Standard function for ia64 libraries. */ + +const bfd_target * +_bfd_vms_lib_ia64_archive_p (bfd *abfd) +{ + return _bfd_vms_lib_archive_p (abfd, vms_lib_ia64); +} + /* Standard function for text libraries. */ =20 static const bfd_target *