This is the mail archive of the
binutils@sourceware.cygnus.com
mailing list for the binutils project.
Re: GNU-ld behaviour does not match native linker behaviour
- To: ian at zembu dot com
- Subject: Re: GNU-ld behaviour does not match native linker behaviour
- From: Nick Clifton <nickc at cygnus dot com>
- Date: Thu, 9 Dec 1999 12:49:23 -0800
- CC: binutils at sourceware dot cygnus dot com, evelyn_mast at mentorg dot com
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
/*===========================================================================*/