* elflink.h (NAME(bfd_elf,size_dynamic_sections)): Add

filter_shlib and auxiliary_filter_shlib parameters.
	* elf.c (_bfd_elf_print_private_bfd_data): Handle DT_AUXILIARY and
	DT_FILTER.
	* bfd-in.h (bfd_elf32_size_dynamic_sections): Update declaration.
	(bfd_elf64_size_dynamic_sections): Likewise.
	* bfd-in2.h: Rebuild.
This commit is contained in:
Ian Lance Taylor 1996-12-31 19:46:37 +00:00
parent a5094cb9d5
commit 148437ec14
5 changed files with 47 additions and 10 deletions

View File

@ -1,3 +1,13 @@
Tue Dec 31 14:44:50 1996 Ian Lance Taylor <ian@cygnus.com>
* elflink.h (NAME(bfd_elf,size_dynamic_sections)): Add
filter_shlib and auxiliary_filter_shlib parameters.
* elf.c (_bfd_elf_print_private_bfd_data): Handle DT_AUXILIARY and
DT_FILTER.
* bfd-in.h (bfd_elf32_size_dynamic_sections): Update declaration.
(bfd_elf64_size_dynamic_sections): Likewise.
* bfd-in2.h: Rebuild.
Mon Dec 30 18:48:52 1996 Ian Lance Taylor <ian@cygnus.com>
* xcofflink.c (xcoff_build_ldsyms): When exporting all defined

View File

@ -199,7 +199,7 @@ typedef enum bfd_format {
to another, and are not necessarily correct). */
/* No flags. */
#define NO_FLAGS 0x00
#define BFD_NO_FLAGS 0x00
/* BFD contains relocation entries. */
#define HAS_RELOC 0x01
@ -605,11 +605,11 @@ extern boolean bfd_elf64_record_link_assignment
extern struct bfd_link_needed_list *bfd_elf_get_needed_list
PARAMS ((bfd *, struct bfd_link_info *));
extern boolean bfd_elf32_size_dynamic_sections
PARAMS ((bfd *, const char *, const char *, boolean,
struct bfd_link_info *, struct sec **));
PARAMS ((bfd *, const char *, const char *, boolean, const char *,
const char *, struct bfd_link_info *, struct sec **));
extern boolean bfd_elf64_size_dynamic_sections
PARAMS ((bfd *, const char *, const char *, boolean,
struct bfd_link_info *, struct sec **));
PARAMS ((bfd *, const char *, const char *, boolean, const char *,
const char *, struct bfd_link_info *, struct sec **));
extern void bfd_elf_set_dt_needed_name PARAMS ((bfd *, const char *));
extern const char *bfd_elf_get_dt_soname PARAMS ((bfd *));

View File

@ -605,11 +605,11 @@ extern boolean bfd_elf64_record_link_assignment
extern struct bfd_link_needed_list *bfd_elf_get_needed_list
PARAMS ((bfd *, struct bfd_link_info *));
extern boolean bfd_elf32_size_dynamic_sections
PARAMS ((bfd *, const char *, const char *, boolean,
struct bfd_link_info *, struct sec **));
PARAMS ((bfd *, const char *, const char *, boolean, const char *,
const char *, struct bfd_link_info *, struct sec **));
extern boolean bfd_elf64_size_dynamic_sections
PARAMS ((bfd *, const char *, const char *, boolean,
struct bfd_link_info *, struct sec **));
PARAMS ((bfd *, const char *, const char *, boolean, const char *,
const char *, struct bfd_link_info *, struct sec **));
extern void bfd_elf_set_dt_needed_name PARAMS ((bfd *, const char *));
extern const char *bfd_elf_get_dt_soname PARAMS ((bfd *));

View File

@ -473,6 +473,8 @@ _bfd_elf_print_private_bfd_data (abfd, farg)
case DT_DEBUG: name = "DEBUG"; break;
case DT_TEXTREL: name = "TEXTREL"; break;
case DT_JMPREL: name = "JMPREL"; break;
case DT_AUXILIARY: name = "AUXILIARY"; stringp = true; break;
case DT_FILTER: name = "FILTER"; stringp = true; break;
}
fprintf (f, " %-11s ", name);

View File

@ -1352,11 +1352,14 @@ static const size_t elf_buckets[] =
boolean
NAME(bfd_elf,size_dynamic_sections) (output_bfd, soname, rpath,
export_dynamic, info, sinterpptr)
export_dynamic, filter_shlib,
auxiliary_filter_shlib, info, sinterpptr)
bfd *output_bfd;
const char *soname;
const char *rpath;
boolean export_dynamic;
const char *filter_shlib;
const char *auxiliary_filter_shlib;
struct bfd_link_info *info;
asection **sinterpptr;
{
@ -1426,6 +1429,28 @@ NAME(bfd_elf,size_dynamic_sections) (output_bfd, soname, rpath,
return false;
}
if (filter_shlib != NULL)
{
bfd_size_type indx;
indx = _bfd_stringtab_add (elf_hash_table (info)->dynstr,
filter_shlib, true, true);
if (indx == (bfd_size_type) -1
|| ! elf_add_dynamic_entry (info, DT_FILTER, indx))
return false;
}
if (auxiliary_filter_shlib != NULL)
{
bfd_size_type indx;
indx = _bfd_stringtab_add (elf_hash_table (info)->dynstr,
auxiliary_filter_shlib, true, true);
if (indx == (bfd_size_type) -1
|| ! elf_add_dynamic_entry (info, DT_AUXILIARY, indx))
return false;
}
/* Find all symbols which were defined in a dynamic object and make
the backend pick a reasonable value for them. */
eif.failed = false;