Correct .dynsym sh_info
bfd/ * elf-bfd.h (struct elf_link_hash_table): Add local_dynsymcount. * elflink.c (_bfd_elf_link_renumber_dynsyms): Set local_dynsymcount. (bfd_elf_final_link): Set .dynsym sh_info from local_dynsymcount. ld/ * testsuite/ld-tic6x/shlib-1.rd: Correct expected .dynsym sh_info. * testsuite/ld-tic6x/shlib-1b.rd: Likewise. * testsuite/ld-tic6x/shlib-1r.rd: Likewise. * testsuite/ld-tic6x/shlib-1rb.rd: Likewise. * testsuite/ld-tic6x/shlib-app-1.rd: Likewise. * testsuite/ld-tic6x/shlib-app-1b.rd: Likewise. * testsuite/ld-tic6x/shlib-app-1r.rd: Likewise. * testsuite/ld-tic6x/shlib-app-1rb.rd: Likewise. * testsuite/ld-tic6x/shlib-noindex.rd: Likewise. * testsuite/ld-tic6x/static-app-1.rd: Likewise. * testsuite/ld-tic6x/static-app-1b.rd: Likewise. * testsuite/ld-tic6x/static-app-1r.rd: Likewise. * testsuite/ld-tic6x/static-app-1rb.rd: Likewise.
This commit is contained in:
parent
b14bdb3bab
commit
90ac242072
17 changed files with 41 additions and 22 deletions
|
@ -1,3 +1,9 @@
|
|||
2016-08-12 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* elf-bfd.h (struct elf_link_hash_table): Add local_dynsymcount.
|
||||
* elflink.c (_bfd_elf_link_renumber_dynsyms): Set local_dynsymcount.
|
||||
(bfd_elf_final_link): Set .dynsym sh_info from local_dynsymcount.
|
||||
|
||||
2016-08-11 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* elf64-ppc.c (ppc64_elf_adjust_dynamic_symbol): Don't exit with
|
||||
|
|
|
@ -524,6 +524,7 @@ struct elf_link_hash_table
|
|||
/* The number of symbols found in the link which is intended for the
|
||||
mandatory DT_SYMTAB tag (.dynsym section) in .dynamic section. */
|
||||
bfd_size_type dynsymcount;
|
||||
bfd_size_type local_dynsymcount;
|
||||
|
||||
/* The string table of dynamic symbols, which becomes the .dynstr
|
||||
section. */
|
||||
|
|
|
@ -904,6 +904,7 @@ _bfd_elf_link_renumber_dynsyms (bfd *output_bfd,
|
|||
for (p = elf_hash_table (info)->dynlocal; p ; p = p->next)
|
||||
p->dynindx = ++dynsymcount;
|
||||
}
|
||||
elf_hash_table (info)->local_dynsymcount = dynsymcount;
|
||||
|
||||
elf_link_hash_traverse (elf_hash_table (info),
|
||||
elf_link_renumber_hash_table_dynsyms,
|
||||
|
@ -11781,7 +11782,10 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info)
|
|||
{
|
||||
Elf_Internal_Sym sym;
|
||||
bfd_byte *dynsym = elf_hash_table (info)->dynsym->contents;
|
||||
long last_local = 0;
|
||||
|
||||
o = elf_hash_table (info)->dynsym->output_section;
|
||||
elf_section_data (o)->this_hdr.sh_info
|
||||
= elf_hash_table (info)->local_dynsymcount + 1;
|
||||
|
||||
/* Write out the section symbols for the output sections. */
|
||||
if (bfd_link_pic (info)
|
||||
|
@ -11811,8 +11815,6 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info)
|
|||
return FALSE;
|
||||
sym.st_value = s->vma;
|
||||
dest = dynsym + dynindx * bed->s->sizeof_sym;
|
||||
if (last_local < dynindx)
|
||||
last_local = dynindx;
|
||||
bed->s->swap_symbol_out (abfd, &sym, dest, 0);
|
||||
}
|
||||
}
|
||||
|
@ -11845,16 +11847,10 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info)
|
|||
+ e->isym.st_value);
|
||||
}
|
||||
|
||||
if (last_local < e->dynindx)
|
||||
last_local = e->dynindx;
|
||||
|
||||
dest = dynsym + e->dynindx * bed->s->sizeof_sym;
|
||||
bed->s->swap_symbol_out (abfd, &sym, dest, 0);
|
||||
}
|
||||
}
|
||||
|
||||
elf_section_data (elf_hash_table (info)->dynsym->output_section)->this_hdr.sh_info =
|
||||
last_local + 1;
|
||||
}
|
||||
|
||||
/* We get the global symbols from the hash table. */
|
||||
|
|
16
ld/ChangeLog
16
ld/ChangeLog
|
@ -1,3 +1,19 @@
|
|||
2016-08-12 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* testsuite/ld-tic6x/shlib-1.rd: Correct expected .dynsym sh_info.
|
||||
* testsuite/ld-tic6x/shlib-1b.rd: Likewise.
|
||||
* testsuite/ld-tic6x/shlib-1r.rd: Likewise.
|
||||
* testsuite/ld-tic6x/shlib-1rb.rd: Likewise.
|
||||
* testsuite/ld-tic6x/shlib-app-1.rd: Likewise.
|
||||
* testsuite/ld-tic6x/shlib-app-1b.rd: Likewise.
|
||||
* testsuite/ld-tic6x/shlib-app-1r.rd: Likewise.
|
||||
* testsuite/ld-tic6x/shlib-app-1rb.rd: Likewise.
|
||||
* testsuite/ld-tic6x/shlib-noindex.rd: Likewise.
|
||||
* testsuite/ld-tic6x/static-app-1.rd: Likewise.
|
||||
* testsuite/ld-tic6x/static-app-1b.rd: Likewise.
|
||||
* testsuite/ld-tic6x/static-app-1r.rd: Likewise.
|
||||
* testsuite/ld-tic6x/static-app-1rb.rd: Likewise.
|
||||
|
||||
2016-08-12 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* testsuite/ld-undefined/weak-fundef.s: New.
|
||||
|
|
|
@ -4,7 +4,7 @@ Section Headers:
|
|||
\[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al
|
||||
\[ 0\] NULL 00000000 000000 000000 00 0 0 0
|
||||
\[ 1\] \.hash HASH 00008000 001000 000048 04 A 2 0 4
|
||||
\[ 2\] \.dynsym DYNSYM 00008048 001048 0000d0 10 A 3 6 4
|
||||
\[ 2\] \.dynsym DYNSYM 00008048 001048 0000d0 10 A 3 7 4
|
||||
\[ 3\] \.dynstr STRTAB 00008118 001118 000025 00 A 0 0 1
|
||||
\[ 4\] \.rela\.got RELA 00008140 001140 000024 0c AI 2 10 4
|
||||
\[ 5\] \.rela\.neardata RELA 00008164 001164 000018 0c AI 2 11 4
|
||||
|
|
|
@ -4,7 +4,7 @@ Section Headers:
|
|||
\[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al
|
||||
\[ 0\] NULL 00000000 000000 000000 00 0 0 0
|
||||
\[ 1\] \.hash HASH 00008000 001000 000048 04 A 2 0 4
|
||||
\[ 2\] \.dynsym DYNSYM 00008048 001048 0000d0 10 A 3 6 4
|
||||
\[ 2\] \.dynsym DYNSYM 00008048 001048 0000d0 10 A 3 7 4
|
||||
\[ 3\] \.dynstr STRTAB 00008118 001118 000025 00 A 0 0 1
|
||||
\[ 4\] \.rela\.got RELA 00008140 001140 000024 0c AI 2 10 4
|
||||
\[ 5\] \.rela\.neardata RELA 00008164 001164 000018 0c AI 2 11 4
|
||||
|
|
|
@ -4,7 +4,7 @@ Section Headers:
|
|||
\[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al
|
||||
\[ 0\] NULL 00000000 000000 000000 00 0 0 0
|
||||
\[ 1\] \.hash HASH 00008000 001000 000048 04 A 2 0 4
|
||||
\[ 2\] \.dynsym DYNSYM 00008048 001048 0000d0 10 A 3 6 4
|
||||
\[ 2\] \.dynsym DYNSYM 00008048 001048 0000d0 10 A 3 7 4
|
||||
\[ 3\] \.dynstr STRTAB 00008118 001118 000025 00 A 0 0 1
|
||||
\[ 4\] \.rela\.got RELA 00008140 001140 000024 0c AI 2 10 4
|
||||
\[ 5\] \.rela\.neardata RELA 00008164 001164 000018 0c AI 2 11 4
|
||||
|
|
|
@ -4,7 +4,7 @@ Section Headers:
|
|||
\[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al
|
||||
\[ 0\] NULL 00000000 000000 000000 00 0 0 0
|
||||
\[ 1\] \.hash HASH 00008000 001000 000048 04 A 2 0 4
|
||||
\[ 2\] \.dynsym DYNSYM 00008048 001048 0000d0 10 A 3 6 4
|
||||
\[ 2\] \.dynsym DYNSYM 00008048 001048 0000d0 10 A 3 7 4
|
||||
\[ 3\] \.dynstr STRTAB 00008118 001118 000025 00 A 0 0 1
|
||||
\[ 4\] \.rela\.got RELA 00008140 001140 000024 0c AI 2 10 4
|
||||
\[ 5\] \.rela\.neardata RELA 00008164 001164 000018 0c AI 2 11 4
|
||||
|
|
|
@ -4,7 +4,7 @@ Section Headers:
|
|||
\[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al
|
||||
\[ 0\] NULL 00000000 000000 000000 00 0 0 0
|
||||
\[ 1\] \.hash HASH 00008000 001000 000044 04 A 2 0 4
|
||||
\[ 2\] \.dynsym DYNSYM 00008044 001044 0000c0 10 A 3 6 4
|
||||
\[ 2\] \.dynsym DYNSYM 00008044 001044 0000c0 10 A 3 7 4
|
||||
\[ 3\] \.dynstr STRTAB 00008104 001104 000035 00 A 0 0 1
|
||||
\[ 4\] \.rela\.got RELA 0000813c 00113c 000018 0c AI 2 11 4
|
||||
\[ 5\] \.rela\.neardata RELA 00008154 001154 000018 0c AI 2 12 4
|
||||
|
|
|
@ -4,7 +4,7 @@ Section Headers:
|
|||
\[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al
|
||||
\[ 0\] NULL 00000000 000000 000000 00 0 0 0
|
||||
\[ 1\] \.hash HASH 00008000 001000 000044 04 A 2 0 4
|
||||
\[ 2\] \.dynsym DYNSYM 00008044 001044 0000c0 10 A 3 6 4
|
||||
\[ 2\] \.dynsym DYNSYM 00008044 001044 0000c0 10 A 3 7 4
|
||||
\[ 3\] \.dynstr STRTAB 00008104 001104 000036 00 A 0 0 1
|
||||
\[ 4\] \.rela\.got RELA 0000813c 00113c 000018 0c AI 2 11 4
|
||||
\[ 5\] \.rela\.neardata RELA 00008154 001154 000018 0c AI 2 12 4
|
||||
|
|
|
@ -4,7 +4,7 @@ Section Headers:
|
|||
\[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al
|
||||
\[ 0\] NULL 00000000 000000 000000 00 0 0 0
|
||||
\[ 1\] \.hash HASH 00008000 001000 00003c 04 A 2 0 4
|
||||
\[ 2\] \.dynsym DYNSYM 0000803c 00103c 0000a0 10 A 3 6 4
|
||||
\[ 2\] \.dynsym DYNSYM 0000803c 00103c 0000a0 10 A 3 7 4
|
||||
\[ 3\] \.dynstr STRTAB 000080dc 0010dc 000030 00 A 0 0 1
|
||||
\[ 4\] \.rela\.got RELA 0000810c 00110c 000018 0c AI 2 10 4
|
||||
\[ 5\] \.rela\.bss RELA 00008124 001124 00000c 0c AI 2 12 4
|
||||
|
|
|
@ -4,7 +4,7 @@ Section Headers:
|
|||
\[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al
|
||||
\[ 0\] NULL 00000000 000000 000000 00 0 0 0
|
||||
\[ 1\] \.hash HASH 00008000 001000 00003c 04 A 2 0 4
|
||||
\[ 2\] \.dynsym DYNSYM 0000803c 00103c 0000a0 10 A 3 6 4
|
||||
\[ 2\] \.dynsym DYNSYM 0000803c 00103c 0000a0 10 A 3 7 4
|
||||
\[ 3\] \.dynstr STRTAB 000080dc 0010dc 000031 00 A 0 0 1
|
||||
\[ 4\] \.rela\.got RELA 00008110 001110 000018 0c AI 2 10 4
|
||||
\[ 5\] \.rela\.bss RELA 00008128 001128 00000c 0c AI 2 12 4
|
||||
|
|
|
@ -4,7 +4,7 @@ Section Headers:
|
|||
\[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al
|
||||
\[ 0\] NULL 00000000 000000 000000 00 0 0 0
|
||||
\[ 1\] \.hash HASH 00008000 001000 000048 04 A 2 0 4
|
||||
\[ 2\] \.dynsym DYNSYM 00008048 001048 0000d0 10 A 3 6 4
|
||||
\[ 2\] \.dynsym DYNSYM 00008048 001048 0000d0 10 A 3 7 4
|
||||
\[ 3\] \.dynstr STRTAB 00008118 001118 000025 00 A 0 0 1
|
||||
\[ 4\] \.rela\.text RELA 00008140 001140 00000c 0c AI 2 10 4
|
||||
\[ 5\] \.rela\.got RELA 0000814c 00114c 000024 0c AI 2 11 4
|
||||
|
|
|
@ -4,7 +4,7 @@ Section Headers:
|
|||
\[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al
|
||||
\[ 0\] NULL 00000000 000000 000000 00 0 0 0
|
||||
\[ 1\] \.hash HASH 00008000 001000 00003c 04 A 2 0 4
|
||||
\[ 2\] \.dynsym DYNSYM 0000803c 00103c 0000a0 10 A 3 5 4
|
||||
\[ 2\] \.dynsym DYNSYM 0000803c 00103c 0000a0 10 A 3 7 4
|
||||
\[ 3\] \.dynstr STRTAB 000080dc 0010dc 00001d 00 A 0 0 1
|
||||
\[ 4\] \.rela\.got RELA 000080fc 0010fc 000024 0c AI 2 8 4
|
||||
\[ 5\] \.rela\.neardata RELA 00008120 001120 000030 0c AI 2 9 4
|
||||
|
|
|
@ -4,7 +4,7 @@ Section Headers:
|
|||
\[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al
|
||||
\[ 0\] NULL 00000000 000000 000000 00 0 0 0
|
||||
\[ 1\] \.hash HASH 00008000 001000 00003c 04 A 2 0 4
|
||||
\[ 2\] \.dynsym DYNSYM 0000803c 00103c 0000a0 10 A 3 5 4
|
||||
\[ 2\] \.dynsym DYNSYM 0000803c 00103c 0000a0 10 A 3 7 4
|
||||
\[ 3\] \.dynstr STRTAB 000080dc 0010dc 00001d 00 A 0 0 1
|
||||
\[ 4\] \.rela\.got RELA 000080fc 0010fc 000024 0c AI 2 8 4
|
||||
\[ 5\] \.rela\.neardata RELA 00008120 001120 000030 0c AI 2 9 4
|
||||
|
|
|
@ -4,7 +4,7 @@ Section Headers:
|
|||
\[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al
|
||||
\[ 0\] NULL 00000000 000000 000000 00 0 0 0
|
||||
\[ 1\] \.hash HASH 00008000 001000 00003c 04 A 2 0 4
|
||||
\[ 2\] \.dynsym DYNSYM 0000803c 00103c 0000a0 10 A 3 5 4
|
||||
\[ 2\] \.dynsym DYNSYM 0000803c 00103c 0000a0 10 A 3 7 4
|
||||
\[ 3\] \.dynstr STRTAB 000080dc 0010dc 00001d 00 A 0 0 1
|
||||
\[ 4\] \.rela\.got RELA 000080fc 0010fc 000024 0c AI 2 8 4
|
||||
\[ 5\] \.rela\.neardata RELA 00008120 001120 000018 0c AI 2 9 4
|
||||
|
|
|
@ -4,7 +4,7 @@ Section Headers:
|
|||
\[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al
|
||||
\[ 0\] NULL 00000000 000000 000000 00 0 0 0
|
||||
\[ 1\] \.hash HASH 00008000 001000 00003c 04 A 2 0 4
|
||||
\[ 2\] \.dynsym DYNSYM 0000803c 00103c 0000a0 10 A 3 5 4
|
||||
\[ 2\] \.dynsym DYNSYM 0000803c 00103c 0000a0 10 A 3 7 4
|
||||
\[ 3\] \.dynstr STRTAB 000080dc 0010dc 00001d 00 A 0 0 1
|
||||
\[ 4\] \.rela\.got RELA 000080fc 0010fc 000024 0c AI 2 8 4
|
||||
\[ 5\] \.rela\.neardata RELA 00008120 001120 000018 0c AI 2 9 4
|
||||
|
|
Loading…
Reference in a new issue