mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-27 03:51:15 +08:00
* 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:
parent
a5094cb9d5
commit
148437ec14
@ -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
|
||||
|
10
bfd/bfd-in.h
10
bfd/bfd-in.h
@ -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 *));
|
||||
|
||||
|
@ -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 *));
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user