* ldlang.c (wild): Handle foo.a(.text) by mapping each included

member of foo.a separately.  From Jouke Numan <jnuman@bazis.nl>.
This commit is contained in:
Ian Lance Taylor 1996-03-04 19:12:43 +00:00
parent cb84f0284f
commit 3d0c8fa1d4
2 changed files with 33 additions and 1 deletions

View File

@ -1,3 +1,8 @@
Mon Mar 4 14:11:17 1996 Ian Lance Taylor <ian@cygnus.com>
* ldlang.c (wild): Handle foo.a(.text) by mapping each included
member of foo.a separately. From Jouke Numan <jnuman@bazis.nl>.
Fri Mar 1 10:24:59 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* emultempl/elf32.em (gld${EMULATION_NAME}_find_exp_assignment):

View File

@ -881,7 +881,34 @@ wild (s, section, file, target, output)
else
{
/* Perform the iteration over a single file */
wild_section (s, section, lookup_name (file), output);
f = lookup_name (file);
if (f->the_bfd == NULL
|| ! bfd_check_format (f->the_bfd, bfd_archive))
wild_section (s, section, f, output);
else
{
bfd *member;
/* This is an archive file. We must map each member of the
archive separately. */
member = bfd_openr_next_archived_file (f->the_bfd, (bfd *) NULL);
while (member != NULL)
{
/* When lookup_name is called, it will call the
add_symbols entry point for the archive. For each
element of the archive which is included, BFD will
call ldlang_add_file, which will set the usrdata
field of the member to the lang_input_statement. */
if (member->usrdata != NULL)
{
wild_section (s, section,
(lang_input_statement_type *) member->usrdata,
output);
}
member = bfd_openr_next_archived_file (f->the_bfd, member);
}
}
}
if (section != (char *) NULL
&& strcmp (section, "COMMON") == 0