diff options
author | Ian Lance Taylor <ian@airs.com> | 1996-12-31 19:46:37 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 1996-12-31 19:46:37 +0000 |
commit | 148437ec14d18450dcfa0ebe7cfa2db57e263392 (patch) | |
tree | a953bda7330b884fa25a988597df2eab8f586944 | |
parent | a5094cb9d5435a88738bf32b2ec662ceab2c32f4 (diff) | |
download | gdb-148437ec14d18450dcfa0ebe7cfa2db57e263392.zip gdb-148437ec14d18450dcfa0ebe7cfa2db57e263392.tar.gz gdb-148437ec14d18450dcfa0ebe7cfa2db57e263392.tar.bz2 |
* 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.
-rw-r--r-- | bfd/ChangeLog | 10 | ||||
-rw-r--r-- | bfd/bfd-in.h | 10 | ||||
-rw-r--r-- | bfd/bfd-in2.h | 8 | ||||
-rw-r--r-- | bfd/elf.c | 2 | ||||
-rw-r--r-- | bfd/elflink.h | 27 |
5 files changed, 47 insertions, 10 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index a8a3372..971d7e6 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -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 diff --git a/bfd/bfd-in.h b/bfd/bfd-in.h index fadbd04..7378e41 100644 --- a/bfd/bfd-in.h +++ b/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 *)); diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h index 2c15807..d93a1f1 100644 --- a/bfd/bfd-in2.h +++ b/bfd/bfd-in2.h @@ -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); diff --git a/bfd/elflink.h b/bfd/elflink.h index 3086a4b..81dcc9b 100644 --- a/bfd/elflink.h +++ b/bfd/elflink.h @@ -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; |