This is the mail archive of the binutils@sourceware.cygnus.com 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]

Re: GNU-ld behaviour does not match native linker behaviour


Hi Ian,

: Actually, that suggests a different approach.  Instead of replacing
: compute_and_write_armap, just have that function call a new BFD target
: function to decide whether to include a symbol in the archive map.  In
: that case we would make the decision based on the archive member.

Yes - I like this idea.  Ok - so what do you think of this patch ?

This patch:

  * Changes the default ELF linker so that an archive element will be
    linked in if it has a symbol in the archive map which is currently
    considered to be a common symbol.

  * Adds a new field to the bfd_target structure called
    _bfd_allow_commons_in_armap.

  * Fixes all of the current BFD targets to initialise this new field
    to false, except the default ELF target which initialises it to
    true.

Cheers
	Nick

1999-12-09  Nick Clifton  <nickc@cygnus.com>

	* elflink.h (elf_link_add_archive_symbols): Add an archive
        element even if contains a symbol which is currently only
        considered to be a common.

	* targets.c (struct bfd_target): Add new field
	_bfd_allow_commons_in_armap.
	* bfd-in2.h:Regenerate.

	* libbfd-in2.h (_bfd_noarchive_allow_commons_in_armap):
	Define.
	 (_bfd_archive_bsd_allow_commons_in_armap): Define.
	* libbfd.h: Regenerate.

	* elfxx-target.h: If using COFF archive map, override
	definition of allow_commons_in_armap and replace with
	bfd_false.

	* archive.c (bfd_compute_and_write_armap): Do not place common
	symbols into the archive map unless _bfd_allow_commons_in_armap
	returns true.

	* aout-target.h (MY_allow_commons_in_armap): Define.
	* aout-tic30.h (MY_allow_commons_in_armap): Define.
	* bfd.c (bfd_allow_commons_in_armap): Define.
	* coff-alpha.h (alpha_ecoff_allow_commons_in_armap): Define.
	* coff-rs6000.h (xcoff_allow_commons_in_armap): Define.
	* elf64-mips.c (bfd_elf64_allow_commons_in_armap): Define.
	* ieee.c (ieee_ecoff_allow_commons_in_armap): Define.
	* libecoff.h (_bfd_ecoff_allow_commons_in_armap): Define.
	* oasys.c (oasys_allow_commons_in_armap): Define.
	* som.c (som_allow_commons_in_armap): Define.
	* vms.c (vms_allow_commons_in_armap): Define.


Index: elflink.h
===================================================================
RCS file: /cvs/cvsfiles/devo/bfd/elflink.h,v
retrieving revision 1.137
diff -p -r1.137 elflink.h
*** elflink.h	1999/09/06 01:58:44	1.137
--- elflink.h	1999/12/09 20:30:35
*************** elf_link_add_archive_symbols (abfd, info
*** 200,206 ****
  	  if (h == NULL)
  	    continue;
  
! 	  if (h->root.type != bfd_link_hash_undefined)
  	    {
  	      if (h->root.type != bfd_link_hash_undefweak)
  		defined[i] = true;
--- 200,225 ----
  	  if (h == NULL)
  	    continue;
  
! 	  /* We have changed the GNU archiver so that it will only place
! 	     non-common symbols into its archive map.  Thus if we come across
! 	     a symbol in the archive map, which is currently considered to be
! 	     a common symbol, we can safely assume that we should link the
! 	     element in, in order to get in the definition of the symbol.
! 	     
! 	     Previous versions of the archiver would place common symbols into
! 	     the archive map.  This meant that in order to only link in an
! 	     element if it contained a *definition* of a common symbol, it
! 	     would be necessary to read in the element and scan its symbol
! 	     table - a slow and wasteful process.
! 
! 	     In fact previous versions of this code did not even do that,
! 	     instead it just unilaterally ignored any symbols in the archive
! 	     map which were currently marked as common.  So in order to link
! 	     in an archive element containing the definition of a common
! 	     symbol it was necessary to have that element also contain the
! 	     defintion of a currently undefined symbol.  */
! 	  if (h->root.type != bfd_link_hash_undefined
! 	      && h->root.type != bfd_link_hash_common)
  	    {
  	      if (h->root.type != bfd_link_hash_undefweak)
  		defined[i] = true;

Index: bfd-in2.h
===================================================================
RCS file: /cvs/cvsfiles/devo/bfd/bfd-in2.h,v
retrieving revision 1.354
diff -p -r1.354 bfd-in2.h
*** bfd-in2.h	1999/12/01 10:28:34	1.354
--- bfd-in2.h	1999/12/09 20:30:36
*************** bfd_set_private_flags PARAMS ((bfd *abfd
*** 2884,2889 ****
--- 2884,2892 ----
  #define bfd_update_armap_timestamp(abfd) \
          BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd))
  
+ #define bfd_allow_commons_in_armap(abfd) \
+         BFD_SEND (abfd, _bfd_allow_commons_in_armap, (abfd))
+ 
  #define bfd_set_arch_mach(abfd, arch, mach)\
          BFD_SEND ( abfd, _bfd_set_arch_mach, (abfd, arch, mach))
  
*************** CAT(NAME,_read_ar_hdr),\
*** 3091,3097 ****
  CAT(NAME,_openr_next_archived_file),\
  CAT(NAME,_get_elt_at_index),\
  CAT(NAME,_generic_stat_arch_elt),\
! CAT(NAME,_update_armap_timestamp)
    boolean  (*_bfd_slurp_armap) PARAMS ((bfd *));
    boolean  (*_bfd_slurp_extended_name_table) PARAMS ((bfd *));
    boolean  (*_bfd_construct_extended_name_table)
--- 3094,3101 ----
  CAT(NAME,_openr_next_archived_file),\
  CAT(NAME,_get_elt_at_index),\
  CAT(NAME,_generic_stat_arch_elt),\
! CAT(NAME,_update_armap_timestamp), \
! CAT(NAME,_allow_commons_in_armap)
    boolean  (*_bfd_slurp_armap) PARAMS ((bfd *));
    boolean  (*_bfd_slurp_extended_name_table) PARAMS ((bfd *));
    boolean  (*_bfd_construct_extended_name_table)
*************** CAT(NAME,_update_armap_timestamp)
*** 3102,3114 ****
                                struct orl *map,
                                unsigned int orl_count, 
                                int stridx));
!   PTR (*_bfd_read_ar_hdr_fn) PARAMS ((bfd *));
    bfd *    (*openr_next_archived_file) PARAMS ((bfd *arch, bfd *prev));
  #define bfd_get_elt_at_index(b,i) BFD_SEND(b, _bfd_get_elt_at_index, (b,i))
    bfd *    (*_bfd_get_elt_at_index) PARAMS ((bfd *, symindex));
    int      (*_bfd_stat_arch_elt) PARAMS ((bfd *, struct stat *));
    boolean  (*_bfd_update_armap_timestamp) PARAMS ((bfd *));
! 
     /* Entry points used for symbols.  */
  #define BFD_JUMP_TABLE_SYMBOLS(NAME)\
  CAT(NAME,_get_symtab_upper_bound),\
--- 3106,3119 ----
                                struct orl *map,
                                unsigned int orl_count, 
                                int stridx));
!   PTR      (*_bfd_read_ar_hdr_fn) PARAMS ((bfd *));
    bfd *    (*openr_next_archived_file) PARAMS ((bfd *arch, bfd *prev));
  #define bfd_get_elt_at_index(b,i) BFD_SEND(b, _bfd_get_elt_at_index, (b,i))
    bfd *    (*_bfd_get_elt_at_index) PARAMS ((bfd *, symindex));
    int      (*_bfd_stat_arch_elt) PARAMS ((bfd *, struct stat *));
    boolean  (*_bfd_update_armap_timestamp) PARAMS ((bfd *));
!   boolean  (*_bfd_allow_commons_in_armap) PARAMS ((bfd *));
! 	     
     /* Entry points used for symbols.  */
  #define BFD_JUMP_TABLE_SYMBOLS(NAME)\
  CAT(NAME,_get_symtab_upper_bound),\

Index: libbfd-in.h
===================================================================
RCS file: /cvs/cvsfiles/devo/bfd/libbfd-in.h,v
retrieving revision 1.99
diff -p -r1.99 libbfd-in.h
*** libbfd-in.h	1999/07/23 22:12:05	1.99
--- libbfd-in.h	1999/12/09 20:30:36
*************** extern boolean _bfd_nocore_core_file_mat
*** 211,216 ****
--- 211,217 ----
    ((bfd *(*) PARAMS ((bfd *, symindex))) bfd_nullvoidptr)
  #define _bfd_noarchive_generic_stat_arch_elt bfd_generic_stat_arch_elt
  #define _bfd_noarchive_update_armap_timestamp bfd_false
+ #define _bfd_noarchive_allow_commons_in_armap bfd_true
  
  /* Routines to use for BFD_JUMP_TABLE_ARCHIVE to get BSD style
     archives.  Use BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_bsd).  */
*************** extern boolean _bfd_archive_bsd_construc
*** 229,234 ****
--- 230,236 ----
  #define _bfd_archive_bsd_generic_stat_arch_elt \
    bfd_generic_stat_arch_elt
  extern boolean _bfd_archive_bsd_update_armap_timestamp PARAMS ((bfd *));
+ #define _bfd_achive_bsd_allow_commons_in_armap bfd_true
  
  /* Routines to use for BFD_JUMP_TABLE_ARCHIVE to get COFF style
     archives.  Use BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff).  */
*************** extern boolean _bfd_archive_coff_constru
*** 247,252 ****
--- 249,255 ----
  #define _bfd_archive_coff_generic_stat_arch_elt \
    bfd_generic_stat_arch_elt
  #define _bfd_archive_coff_update_armap_timestamp bfd_true
+ #define _bfd_archive_coff_allow_commons_in_armap bfd_true
  
  /* Routines to use for BFD_JUMP_TABLE_SYMBOLS where there is no symbol
     support.  Use BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols).  */

Index: libbfd.h
===================================================================
RCS file: /cvs/cvsfiles/devo/bfd/libbfd.h,v
retrieving revision 1.232
diff -p -r1.232 libbfd.h
*** libbfd.h	1999/11/28 03:41:05	1.232
--- libbfd.h	1999/12/09 20:30:36
*************** extern boolean _bfd_nocore_core_file_mat
*** 211,216 ****
--- 211,217 ----
    ((bfd *(*) PARAMS ((bfd *, symindex))) bfd_nullvoidptr)
  #define _bfd_noarchive_generic_stat_arch_elt bfd_generic_stat_arch_elt
  #define _bfd_noarchive_update_armap_timestamp bfd_false
+ #define _bfd_noarchive_allow_commons_in_armap bfd_true
  
  /* Routines to use for BFD_JUMP_TABLE_ARCHIVE to get BSD style
     archives.  Use BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_bsd).  */
*************** extern boolean _bfd_archive_bsd_construc
*** 229,234 ****
--- 230,236 ----
  #define _bfd_archive_bsd_generic_stat_arch_elt \
    bfd_generic_stat_arch_elt
  extern boolean _bfd_archive_bsd_update_armap_timestamp PARAMS ((bfd *));
+ #define _bfd_archive_bsd_allow_commons_in_armap bfd_true
  
  /* Routines to use for BFD_JUMP_TABLE_ARCHIVE to get COFF style
     archives.  Use BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff).  */
*************** extern boolean _bfd_archive_coff_constru
*** 247,252 ****
--- 249,255 ----
  #define _bfd_archive_coff_generic_stat_arch_elt \
    bfd_generic_stat_arch_elt
  #define _bfd_archive_coff_update_armap_timestamp bfd_true
+ #define _bfd_archive_coff_allow_commons_in_armap bfd_true
  
  /* Routines to use for BFD_JUMP_TABLE_SYMBOLS where there is no symbol
     support.  Use BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols).  */

Index: elfxx-target.h
===================================================================
RCS file: /cvs/cvsfiles/devo/bfd/elfxx-target.h,v
retrieving revision 1.44
diff -p -r1.44 elfxx-target.h
*** elfxx-target.h	1999/11/26 01:57:46	1.44
--- elfxx-target.h	1999/12/09 20:30:37
*************** const bfd_target TARGET_BIG_SYM =
*** 477,482 ****
--- 477,489 ----
  #ifdef bfd_elfNN_archive_functions
        BFD_JUMP_TABLE_ARCHIVE (bfd_elfNN_archive),
  #else
+   /* For ELF based targets we do not want to put common symbols into the
+      archive map.  This is a change from the old behaviour, and it is
+      being done because of a corresponding change in the linker, whereby
+      it will link in any archive element that contains a symbol which is
+      currently common.  (See elflink.h:elf_link_add_archive_symbol).  */
+ #undef  _bfd_archive_coff_allow_commons_in_armap
+ #define _bfd_archive_coff_allow_commons_in_armap bfd_false
        BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),
  #endif
        BFD_JUMP_TABLE_SYMBOLS (bfd_elfNN),
*************** const bfd_target TARGET_LITTLE_SYM =
*** 572,577 ****
--- 579,586 ----
  #ifdef bfd_elfNN_archive_functions
        BFD_JUMP_TABLE_ARCHIVE (bfd_elfNN_archive),
  #else
+ #undef  _bfd_archive_coff_allow_commons_in_armap
+ #define _bfd_archive_coff_allow_commons_in_armap bfd_false
        BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),
  #endif
        BFD_JUMP_TABLE_SYMBOLS (bfd_elfNN),

Index: archive.c
===================================================================
RCS file: /cvs/cvsfiles/devo/bfd/archive.c,v
retrieving revision 1.145
diff -p -r1.145 archive.c
*** archive.c	1999/09/16 20:26:44	1.145
--- archive.c	1999/12/09 20:30:37
*************** _bfd_compute_and_write_armap (arch, elen
*** 1855,1870 ****
  		{
  		  flagword flags = (syms[src_count])->flags;
  		  asection *sec = syms[src_count]->section;
  
! 		  if ((flags & BSF_GLOBAL ||
! 		       flags & BSF_WEAK ||
! 		       flags & BSF_INDIRECT ||
! 		       bfd_is_com_section (sec))
! 		      && ! bfd_is_und_section (sec))
  		    {
! 		      size_t namelen;
! 		      struct orl *new_map;
! 
  		      /* This symbol will go into the archive header */
  		      if (orl_count == orl_max)
  			{
--- 1855,1873 ----
  		{
  		  flagword flags = (syms[src_count])->flags;
  		  asection *sec = syms[src_count]->section;
+ 		  size_t namelen;
+ 		  struct orl *new_map;
  
! 		  if (bfd_is_und_section (sec))
! 		    continue;
! 		  else if (bfd_is_com_section (sec))
  		    {
! 		      if (! bfd_allow_commons_in_armap (arch))
! 			continue;
! 		    }
! 		  else if ((flags & (BSF_GLOBAL | BSF_WEAK | BSF_INDIRECT)) == 0)
! 		    continue;
! 		  
  		      /* This symbol will go into the archive header */
  		      if (orl_count == orl_max)
  			{
*************** _bfd_compute_and_write_armap (arch, elen
*** 1893,1899 ****
  
  		      stridx += namelen + 1;
  		      ++orl_count;
- 		    }
  		}
  	    }
  
--- 1896,1901 ----

Index: aout-target.h
===================================================================
RCS file: /cvs/cvsfiles/devo/bfd/aout-target.h,v
retrieving revision 1.78
diff -p -r1.78 aout-target.h
*** aout-target.h	1999/07/23 22:11:28	1.78
--- aout-target.h	1999/12/09 20:30:37
*************** MY_bfd_final_link (abfd, info)
*** 421,426 ****
--- 421,429 ----
  #ifndef MY_update_armap_timestamp
  #define MY_update_armap_timestamp _bfd_archive_bsd_update_armap_timestamp
  #endif
+ #ifndef MY_allow_commons_in_armap
+ #define MY_allow_commons_in_armap _bfd_archive_bsd_allow_commons_in_armap
+ #endif
  
  /* No core file defined here -- configure in trad-core.c separately.  */
  #ifndef	MY_core_file_failing_command

Index: aout-tic30.c
===================================================================
RCS file: /cvs/cvsfiles/devo/bfd/aout-tic30.c,v
retrieving revision 1.5
diff -p -r1.5 aout-tic30.c
*** aout-tic30.c	1999/07/23 22:11:28	1.5
--- aout-tic30.c	1999/12/09 20:30:37
*************** tic30_aout_set_arch_mach (abfd, arch, ma
*** 851,856 ****
--- 851,859 ----
  #ifndef MY_update_armap_timestamp
  #define MY_update_armap_timestamp _bfd_archive_bsd_update_armap_timestamp
  #endif
+ #ifndef MY_allow_commons_in_armap
+ #define MY_allow_commons_in_armap _bfd_archive_bsd_allow_commons_in_armap
+ #endif
  
  /* No core file defined here -- configure in trad-core.c separately.  */
  #ifndef	MY_core_file_failing_command

Index: bfd.c
===================================================================
RCS file: /cvs/cvsfiles/devo/bfd/bfd.c,v
retrieving revision 1.129
diff -p -r1.129 bfd.c
*** bfd.c	1999/07/23 22:11:33	1.129
--- bfd.c	1999/12/09 20:30:37
*************** DESCRIPTION
*** 1039,1044 ****
--- 1039,1047 ----
  .#define bfd_update_armap_timestamp(abfd) \
  .        BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd))
  .
+ .#define bfd_allow_commons_in_armap(abfd) \
+ .        BFD_SEND (abfd, _bfd_allow_commons_in_armap, (abfd))
+ .
  .#define bfd_set_arch_mach(abfd, arch, mach)\
  .        BFD_SEND ( abfd, _bfd_set_arch_mach, (abfd, arch, mach))
  .

Index: coff-alpha.c
===================================================================
RCS file: /cvs/cvsfiles/devo/bfd/coff-alpha.c,v
retrieving revision 1.72
diff -p -r1.72 coff-alpha.c
*** coff-alpha.c	1999/07/19 07:53:38	1.72
--- coff-alpha.c	1999/12/09 20:30:38
*************** alpha_adjust_headers (abfd, fhdr, ahdr)
*** 2036,2041 ****
--- 2036,2043 ----
  #define alpha_ecoff_write_armap _bfd_ecoff_write_armap
  #define alpha_ecoff_generic_stat_arch_elt _bfd_ecoff_generic_stat_arch_elt
  #define alpha_ecoff_update_armap_timestamp _bfd_ecoff_update_armap_timestamp
+ #define alpha_ecoff_allow_commons_in_armap _bfd_true
+ 
  
  /* A compressed file uses this instead of ARFMAG.  */
  
Index: coff-rs6000.c
===================================================================
RCS file: /cvs/cvsfiles/devo/bfd/coff-rs6000.c,v
retrieving revision 1.63
diff -p -r1.63 coff-rs6000.c
*** coff-rs6000.c	1999/07/23 22:11:34	1.63
--- coff-rs6000.c	1999/12/09 20:30:38
*************** struct xcoff_ar_hdr
*** 694,699 ****
--- 694,700 ----
  /* XCOFF archives do not have a timestamp.  */
  
  #define xcoff_update_armap_timestamp bfd_true
+ #define xcoff_allow_commons_in_armap bfd_true
  
  /* Read in the armap of an XCOFF archive.  */
  
Index: elf64-mips.c
===================================================================
RCS file: /cvs/cvsfiles/devo/bfd/elf64-mips.c,v
retrieving revision 1.16
diff -p -r1.16 elf64-mips.c
*** elf64-mips.c	1999/07/23 22:12:03	1.16
--- elf64-mips.c	1999/12/09 20:30:39
*************** const struct elf_size_info mips_elf64_si
*** 2186,2190 ****
--- 2186,2191 ----
  					_bfd_archive_coff_generic_stat_arch_elt
  #define bfd_elf64_archive_update_armap_timestamp \
  				_bfd_archive_coff_update_armap_timestamp
+ #define _bfd_elf64_allow_commons_in_armap bfd_false
  
  #include "elf64-target.h"

Index: ieee.c
===================================================================
RCS file: /cvs/cvsfiles/devo/bfd/ieee.c,v
retrieving revision 1.129
diff -p -r1.129 ieee.c
*** ieee.c	1999/07/23 22:12:05	1.129
--- ieee.c	1999/12/09 20:30:39
*************** ieee_bfd_debug_info_accumulate (abfd, se
*** 3893,3898 ****
--- 3893,3899 ----
     bfd_true)
  #define ieee_read_ar_hdr bfd_nullvoidptr
  #define ieee_update_armap_timestamp bfd_true
+ #define ieee_allow_commons_in_armap bfd_true
  #define ieee_get_elt_at_index _bfd_generic_get_elt_at_index
  
  #define ieee_bfd_is_local_label_name bfd_generic_is_local_label_name

Index: libecoff.h
===================================================================
RCS file: /cvs/cvsfiles/devo/bfd/libecoff.h,v
retrieving revision 1.51
diff -p -r1.51 libecoff.h
*** libecoff.h	1997/04/30 16:12:22	1.51
--- libecoff.h	1999/12/09 20:30:39
*************** extern boolean _bfd_ecoff_write_armap
*** 295,300 ****
--- 295,301 ----
  #define _bfd_ecoff_get_elt_at_index _bfd_generic_get_elt_at_index
  #define _bfd_ecoff_generic_stat_arch_elt bfd_generic_stat_arch_elt
  #define _bfd_ecoff_update_armap_timestamp bfd_true
+ #define _bfd_ecoff_allow_commons_in_armap bfd_true
  
  extern long _bfd_ecoff_get_symtab_upper_bound PARAMS ((bfd *abfd));
  extern long _bfd_ecoff_get_symtab PARAMS ((bfd *abfd, asymbol **alocation));

Index: oasys.c
===================================================================
RCS file: /cvs/cvsfiles/devo/bfd/oasys.c,v
retrieving revision 1.99
diff -p -r1.99 oasys.c
*** oasys.c	1999/07/23 22:12:12	1.99
--- oasys.c	1999/12/09 20:30:39
*************** oasys_sizeof_headers (abfd, exec)
*** 1458,1463 ****
--- 1458,1464 ----
  #define oasys_read_ar_hdr bfd_nullvoidptr
  #define oasys_get_elt_at_index _bfd_generic_get_elt_at_index
  #define oasys_update_armap_timestamp bfd_true
+ #define oasys_allow_commons_in_armap bfd_true
  
  #define oasys_bfd_is_local_label_name bfd_generic_is_local_label_name
  #define oasys_get_lineno _bfd_nosymbols_get_lineno

Index: som.c
===================================================================
RCS file: /cvs/cvsfiles/devo/bfd/som.c,v
retrieving revision 1.180
diff -p -r1.180 som.c
*** som.c	1999/09/19 18:22:58	1.180
--- som.c	1999/12/09 20:30:41
*************** som_bfd_link_split_section (abfd, sec)
*** 6229,6234 ****
--- 6229,6235 ----
  #define som_construct_extended_name_table \
    _bfd_archive_coff_construct_extended_name_table
  #define som_update_armap_timestamp	bfd_true
+ #define som_allow_commons_in_armap	bfd_true
  #define som_bfd_print_private_bfd_data  _bfd_generic_bfd_print_private_bfd_data
  
  #define som_get_lineno                  _bfd_nosymbols_get_lineno

Index: targets.c
===================================================================
RCS file: /cvs/cvsfiles/devo/bfd/targets.c,v
retrieving revision 1.275
diff -p -r1.275 targets.c
*** targets.c	1999/09/28 22:33:52	1.275
--- targets.c	1999/12/09 20:30:41
*************** The general target vector.
*** 317,323 ****
  .CAT(NAME,_openr_next_archived_file),\
  .CAT(NAME,_get_elt_at_index),\
  .CAT(NAME,_generic_stat_arch_elt),\
! .CAT(NAME,_update_armap_timestamp)
  .  boolean  (*_bfd_slurp_armap) PARAMS ((bfd *));
  .  boolean  (*_bfd_slurp_extended_name_table) PARAMS ((bfd *));
  .  boolean  (*_bfd_construct_extended_name_table)
--- 317,324 ----
  .CAT(NAME,_openr_next_archived_file),\
  .CAT(NAME,_get_elt_at_index),\
  .CAT(NAME,_generic_stat_arch_elt),\
! .CAT(NAME,_update_armap_timestamp), \
! .CAT(NAME,_allow_commons_in_armap)
  .  boolean  (*_bfd_slurp_armap) PARAMS ((bfd *));
  .  boolean  (*_bfd_slurp_extended_name_table) PARAMS ((bfd *));
  .  boolean  (*_bfd_construct_extended_name_table)
*************** The general target vector.
*** 328,339 ****
  .                              struct orl *map,
  .                              unsigned int orl_count, 
  .                              int stridx));
! .  PTR (*_bfd_read_ar_hdr_fn) PARAMS ((bfd *));
  .  bfd *    (*openr_next_archived_file) PARAMS ((bfd *arch, bfd *prev));
  .#define bfd_get_elt_at_index(b,i) BFD_SEND(b, _bfd_get_elt_at_index, (b,i))
  .  bfd *    (*_bfd_get_elt_at_index) PARAMS ((bfd *, symindex));
  .  int      (*_bfd_stat_arch_elt) PARAMS ((bfd *, struct stat *));
  .  boolean  (*_bfd_update_armap_timestamp) PARAMS ((bfd *));
  .
  .  {* Entry points used for symbols.  *}
  .#define BFD_JUMP_TABLE_SYMBOLS(NAME)\
--- 329,341 ----
  .                              struct orl *map,
  .                              unsigned int orl_count, 
  .                              int stridx));
! .  PTR      (*_bfd_read_ar_hdr_fn) PARAMS ((bfd *));
  .  bfd *    (*openr_next_archived_file) PARAMS ((bfd *arch, bfd *prev));
  .#define bfd_get_elt_at_index(b,i) BFD_SEND(b, _bfd_get_elt_at_index, (b,i))
  .  bfd *    (*_bfd_get_elt_at_index) PARAMS ((bfd *, symindex));
  .  int      (*_bfd_stat_arch_elt) PARAMS ((bfd *, struct stat *));
  .  boolean  (*_bfd_update_armap_timestamp) PARAMS ((bfd *));
+ .  boolean  (*_bfd_allow_commons_in_armap) PARAMS ((bfd *));
  .
  .  {* Entry points used for symbols.  *}
  .#define BFD_JUMP_TABLE_SYMBOLS(NAME)\

Index: vms.c
===================================================================
RCS file: /cvs/cvsfiles/devo/bfd/vms.c,v
retrieving revision 1.3
diff -p -r1.3 vms.c
*** vms.c	1999/07/23 22:12:16	1.3
--- vms.c	1999/12/09 20:30:41
*************** static boolean vms_bfd_merge_private_bfd
*** 127,132 ****
--- 127,133 ----
  static boolean vms_bfd_set_private_flags PARAMS ((bfd *abfd, flagword flags));
  
  #define vms_make_empty_symbol _bfd_vms_make_empty_symbol
+ #define vms_allow_commons_in_armap bfd_true
  
  /*===========================================================================*/
  


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