aboutsummaryrefslogtreecommitdiff
path: root/bfd/elf.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2004-10-11 13:48:36 +0000
committerJakub Jelinek <jakub@redhat.com>2004-10-11 13:48:36 +0000
commit7f1204bb4f7b558ade9e406e33d062df04798966 (patch)
tree808061e02ed32c0828a27b8ce261937b9bb0c313 /bfd/elf.c
parent87e5235d04a80dc2be7d53d442016998ef8fb555 (diff)
downloadfsf-binutils-gdb-7f1204bb4f7b558ade9e406e33d062df04798966.zip
fsf-binutils-gdb-7f1204bb4f7b558ade9e406e33d062df04798966.tar.gz
fsf-binutils-gdb-7f1204bb4f7b558ade9e406e33d062df04798966.tar.bz2
* elf.c (bfd_section_from_shdr): Handle SHT_GNU_LIBLIST.
(special_sections): Add .gnu.liblist and .gnu.conflict. (assign_section_numbers): Handle SHT_GNU_LIBLIST.
Diffstat (limited to 'bfd/elf.c')
-rw-r--r--bfd/elf.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/bfd/elf.c b/bfd/elf.c
index e71c18c..27142a1 100644
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -1739,6 +1739,7 @@ bfd_section_from_shdr (bfd *abfd, unsigned int shindex)
case SHT_INIT_ARRAY: /* .init_array section. */
case SHT_FINI_ARRAY: /* .fini_array section. */
case SHT_PREINIT_ARRAY: /* .preinit_array section. */
+ case SHT_GNU_LIBLIST: /* .gnu.liblist section. */
return _bfd_elf_make_section_from_shdr (abfd, hdr, name);
case SHT_DYNAMIC: /* Dynamic linking information. */
@@ -2132,6 +2133,8 @@ static struct bfd_elf_special_section const special_sections[] =
{ ".rela", 5, -1, SHT_RELA, 0 },
{ ".rel", 4, -1, SHT_REL, 0 },
{ ".stabstr", 5, 3, SHT_STRTAB, 0 },
+ { ".gnu.liblist", 12, 0, SHT_GNU_LIBLIST, SHF_ALLOC },
+ { ".gnu.conflict", 13, 0, SHT_RELA, SHF_ALLOC },
{ NULL, 0, 0, 0, 0 }
};
@@ -2969,6 +2972,17 @@ assign_section_numbers (bfd *abfd)
d->this_hdr.sh_link = elf_section_data (s)->this_idx;
break;
+ case SHT_GNU_LIBLIST:
+ /* sh_link is the section header index of the prelink library
+ list
+ used for the dynamic entries, or the symbol table, or the
+ version strings. */
+ s = bfd_get_section_by_name (abfd, (sec->flags & SEC_ALLOC)
+ ? ".dynstr" : ".gnu.libstr");
+ if (s != NULL)
+ d->this_hdr.sh_link = elf_section_data (s)->this_idx;
+ break;
+
case SHT_HASH:
case SHT_GNU_versym:
/* sh_link is the section header index of the symbol table