diff options
author | Szabolcs Nagy <nsz@port70.net> | 2019-08-10 23:14:40 +0000 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2019-08-12 18:25:38 -0400 |
commit | f2435263d7366a81b734c8a69877f1359083ce8c (patch) | |
tree | 17c4cc1efc3840ccbe89196dc94702a92d37b18d /src/locale/catgets.c | |
parent | 1f060ed2fb0b35f85118a425f5eed3299fef58d3 (diff) | |
download | musl-f2435263d7366a81b734c8a69877f1359083ce8c.tar.gz musl-f2435263d7366a81b734c8a69877f1359083ce8c.tar.bz2 musl-f2435263d7366a81b734c8a69877f1359083ce8c.tar.xz musl-f2435263d7366a81b734c8a69877f1359083ce8c.zip |
make relocation time symbol lookup and dlsym consistent
Using common code path for all symbol lookups fixes three dlsym issues:
- st_shndx of STT_TLS symbols were not checked and thus an undefined
tls symbol reference could be incorrectly treated as a definition
(the sysv hash lookup returns undefined symbols, gnu does not, so should
be rare in practice).
- symbol binding was not checked so a hidden symbol may be returned
(in principle STB_LOCAL symbols may appear in the dynamic symbol table
for hidden symbols, but linkers most likely don't produce it).
- mips specific behaviour was not applied (ARCH_SYM_REJECT_UND) so
undefined symbols may be returned on mips.
always_inline is used to avoid relocation performance regression, the
code generation for find_sym should not be affected.
Diffstat (limited to 'src/locale/catgets.c')
0 files changed, 0 insertions, 0 deletions