diff options
author | Maciej W. Rozycki <macro@imgtec.com> | 2017-02-02 22:05:46 +0000 |
---|---|---|
committer | Maciej W. Rozycki <macro@imgtec.com> | 2017-02-02 22:38:23 +0000 |
commit | e17b0c351f0b22fb42edf34e5a6e486d72e9ee05 (patch) | |
tree | c2529cdc261f4d726942acaf85b86e049cd35646 /gold/common.cc | |
parent | 55f8b9d243dbd879ffa585f7e0c7d8b6b819302d (diff) | |
download | gdb-e17b0c351f0b22fb42edf34e5a6e486d72e9ee05.zip gdb-e17b0c351f0b22fb42edf34e5a6e486d72e9ee05.tar.gz gdb-e17b0c351f0b22fb42edf34e5a6e486d72e9ee05.tar.bz2 |
MIPS/BFD: Respect the ELF gABI dynamic symbol table sort requirement
Ensure all local symbols precede external symbols in the dynamic symbol
table.
No local symbols are expected to make it to the dynamic symbol table
except for section symbols already taken care of, so this is really a
safeguard only against a potential BFD bug otherwise not so harmful,
which may become a grave one due to a symbol table sorting requirement
violation (see PR ld/20828 for an example). This means however that no
test suite coverage is possible for this change as code introduced here
is not normally expected to trigger.
Logically split then the part of the dynamic symbol table which is not
global offset table mapped, into a local area at the beginning and an
external area following. By the time `mips_elf_sort_hash_table' is
called we have the number of local dynamic symbol table entries (section
and non-section) already counted in `local_dynsymcount', so use it to
offset the external area from the beginning.
bfd/
* elfxx-mips.c (mips_elf_hash_sort_data): Add
`max_local_dynindx'.
(mips_elf_sort_hash_table): Handle it.
(mips_elf_sort_hash_table_f) <GGA_NONE>: For forced local
symbols bump up `max_local_dynindx' rather than
`max_non_got_dynindx'.
Diffstat (limited to 'gold/common.cc')
0 files changed, 0 insertions, 0 deletions