glibc/elf
Maciej W. Rozycki b6084a958f Treat STV_HIDDEN and STV_INTERNAL symbols as STB_LOCAL
In a reference to PR ld/19908 make ld.so respect symbol export classes
aka visibility and treat STV_HIDDEN and STV_INTERNAL symbols as local,
preventing such symbols from preempting exported symbols.

According to the ELF gABI[1] neither STV_HIDDEN nor STV_INTERNAL symbols
are supposed to be present in linked binaries:

"A hidden symbol contained in a relocatable object must be either
removed or converted to STB_LOCAL binding by the link-editor when the
relocatable object is included in an executable file or shared object."

"An internal symbol contained in a relocatable object must be either
removed or converted to STB_LOCAL binding by the link-editor when the
relocatable object is included in an executable file or shared object."

however some GNU binutils versions produce such symbols in some cases.
PR ld/19908 is one and we also have this note in scripts/abilist.awk:

so clearly there is linked code out there which contains such symbols
which is prone to symbol table misinterpretation, and it'll be more
productive if we handle this gracefully, under the Robustness Principle:
"be liberal in what you accept, and conservative in what you produce",
especially as this is a simple (STV_HIDDEN|STV_INTERNAL) => STB_LOCAL
mapping.

References:

[1] "System V Application Binary Interface - DRAFT - 24 April 2001",
    The Santa Cruz Operation, Inc., "Symbol Table",
    <http://www.sco.com/developers/gabi/2001-04-24/ch4.symtab.html>

	* sysdeps/generic/ldsodefs.h
	(dl_symbol_visibility_binds_local_p): New inline function.
	* elf/dl-addr.c (determine_info): Treat hidden and internal
	symbols as local.
	* elf/dl-lookup.c (do_lookup_x): Likewise.
	* elf/dl-reloc.c (RESOLVE_MAP): Likewise.
2016-07-01 23:48:52 +01:00
..
cache.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
chroot_canon.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
circleload1.c
circlemod1.c
circlemod1a.c
circlemod2.c
circlemod2a.c
circlemod3.c
circlemod3a.c
constload1.c
constload2.c
constload3.c
dblload.c
dblloadmod1.c
dblloadmod2.c
dblloadmod3.c
dblunload.c
dep1.c
dep2.c
dep3.c
dep4.c
dl-addr.c Treat STV_HIDDEN and STV_INTERNAL symbols as STB_LOCAL 2016-07-01 23:48:52 +01:00
dl-brk.c
dl-cache.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
dl-caller.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
dl-close.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
dl-conflict.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
dl-debug.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
dl-deps.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
dl-dst.h Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
dl-environ.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
dl-error.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
dl-execstack.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
dl-fini.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
dl-fptr.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
dl-hwcaps.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
dl-init.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
dl-iteratephdr.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
dl-libc.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
dl-load.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
dl-load.h Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
dl-lookup.c Treat STV_HIDDEN and STV_INTERNAL symbols as STB_LOCAL 2016-07-01 23:48:52 +01:00
dl-machine-reject-phdr.h Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
dl-map-segments.h Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
dl-minimal.c Reduce number of mmap calls from __libc_memalign in ld.so 2016-04-23 06:05:15 -07:00
dl-misc.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
dl-object.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
dl-open.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
dl-origin.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
dl-profile.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
dl-profstub.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
dl-reloc.c Treat STV_HIDDEN and STV_INTERNAL symbols as STB_LOCAL 2016-07-01 23:48:52 +01:00
dl-runtime.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
dl-sbrk.c
dl-scope.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
dl-support.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
dl-sym.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
dl-symaddr.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
dl-sysdep-open.h Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
dl-sysdep.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
dl-tls.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
dl-trampoline.c
dl-tsd.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
dl-unmap-segments.h Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
dl-version.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
dl-writev.h Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
do-rel.h Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
dynamic-link.h Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
elf.h elf.h: Add declarations for BPF 2016-06-28 09:35:46 -07:00
enbl-secure.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
failobj.c
filter.c
filtmod1.c
filtmod2.c
firstobj.c
gen-trusted-dirs.awk
genrtldtbl.awk Make shebang interpreter directives consistent 2016-01-07 04:03:21 -05:00
get-dynamic-info.h Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
global.c
globalmod1.c
ifuncdep1.c
ifuncdep1pic.c
ifuncdep2.c
ifuncdep2pic.c
ifuncdep5.c
ifuncdep5pic.c
ifuncmain1.c
ifuncmain1pic.c
ifuncmain1picstatic.c
ifuncmain1pie.c
ifuncmain1static.c
ifuncmain1staticpic.c
ifuncmain1staticpie.c
ifuncmain1vis.c
ifuncmain1vispic.c
ifuncmain1vispie.c
ifuncmain2.c
ifuncmain2pic.c
ifuncmain2picstatic.c
ifuncmain2static.c
ifuncmain3.c
ifuncmain4.c
ifuncmain4picstatic.c
ifuncmain4static.c
ifuncmain5.c
ifuncmain5pic.c
ifuncmain5picstatic.c
ifuncmain5pie.c
ifuncmain5static.c
ifuncmain5staticpic.c
ifuncmain6pie.c
ifuncmain7.c
ifuncmain7pic.c
ifuncmain7picstatic.c
ifuncmain7pie.c
ifuncmain7static.c
ifuncmod1.c
ifuncmod3.c
ifuncmod5.c
ifuncmod6.c
initfirst.c
interp.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
lateglobal.c
ldconfig.c ldconfig: Do not remove stale symbolic links with -X [BZ #19610] 2016-03-07 22:06:18 +01:00
ldd.bash.in Update copyright dates not handled by scripts/update-copyrights. 2016-01-04 16:26:30 +00:00
link.h Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
loadfail.c
loadtest.c
ltglobmod1.c
ltglobmod2.c
Makefile Register extra test objects 2016-04-13 17:07:13 +02:00
multiload.c
neededobj1.c
neededobj2.c
neededobj3.c
neededobj4.c
neededobj5.c
neededobj6.c
neededtest2.c
neededtest3.c
neededtest4.c
neededtest.c
next.c
nextmod1.c
nextmod2.c
nodel2mod1.c
nodel2mod2.c
nodel2mod3.c
nodelete2.c
nodelete.c
nodelmod1.c
nodelmod2.c
nodelmod3.c
nodelmod4.c
nodlopen2.c
nodlopen.c
nodlopenmod2.c
nodlopenmod.c
noload.c
order2.c
order2mod1.c
order2mod2.c
order2mod3.c
order2mod4.c
order.c
origtest.c
pathoptobj.c
pldd-xx.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
pldd.c Update copyright dates not handled by scripts/update-copyrights. 2016-01-04 16:26:30 +00:00
preloadtest.c
readelflib.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
readlib.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
reldep2.c
reldep3.c
reldep4.c
reldep4mod1.c
reldep4mod2.c
reldep4mod3.c
reldep4mod4.c
reldep5.c
reldep6.c
reldep6mod0.c
reldep6mod1.c
reldep6mod2.c
reldep6mod3.c
reldep6mod4.c
reldep7.c
reldep7mod1.c
reldep7mod2.c
reldep8.c
reldep8mod1.c
reldep8mod2.c
reldep8mod3.c
reldep9.c
reldep9mod1.c
reldep9mod2.c
reldep9mod3.c
reldep.c
reldepmod1.c
reldepmod2.c
reldepmod3.c
reldepmod4.c
reldepmod5.c
reldepmod6.c
resolvfail.c
restest1.c
restest2.c
rtld-debugger-interface.txt
rtld-Rules Allow overriding of CFLAGS as well as CPPFLAGS for rtld. 2016-04-09 23:48:32 -04:00
rtld.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
setup-vdso.h Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
sln.c sln: use stat64 2016-03-07 11:37:12 -05:00
sofini.c
soinit.c
sotruss-lib.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
sotruss.sh Update copyright dates not handled by scripts/update-copyrights. 2016-01-04 16:26:30 +00:00
sprof.c Update copyright dates not handled by scripts/update-copyrights. 2016-01-04 16:26:30 +00:00
static-stubs.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
testobj1_1.c
testobj1.c
testobj2.c
testobj3.c
testobj4.c
testobj5.c
testobj6.c
testobj.h
tls-macros.h
tlsdeschtab.h Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
tst-addr1.c
tst-align2.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
tst-align.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
tst-alignmod2.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
tst-alignmod.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
tst-array1-static.c
tst-array1.c
tst-array1.exp
tst-array2.c
tst-array2.exp
tst-array2dep.c
tst-array3.c
tst-array4.c
tst-array4.exp
tst-array5-static.c
tst-array5-static.exp
tst-array5.c
tst-array5.exp
tst-array5dep.c
tst-audit1.c
tst-audit2.c
tst-audit8.c
tst-audit9.c Modify elf/tst-audit9.c to use test-skeleton.c 2015-07-15 15:10:23 +05:30
tst-audit11.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
tst-audit11mod1.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
tst-audit11mod2.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
tst-audit11mod2.map Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
tst-audit12.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
tst-audit12mod1.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
tst-audit12mod2.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
tst-audit12mod2.map Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
tst-audit12mod3.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
tst-auditmod1.c
tst-auditmod9a.c
tst-auditmod9b.c
tst-auditmod11.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
tst-auditmod12.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
tst-auxv.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
tst-deep1.c
tst-deep1mod1.c
tst-deep1mod2.c
tst-deep1mod3.c
tst-dl-iter-static.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
tst-dlmodcount.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
tst-dlmopen1.c Fix error messages in elf/tst-dlmopen1.c. 2015-09-18 10:27:55 -04:00
tst-dlmopen1mod.c
tst-dlmopen2.c
tst-dlmopen3.c
tst-dlopen-aout.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
tst-dlopenrpath.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
tst-dlopenrpathmod.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
tst-dlsym-error.c Fix tst-dlsym-error build 2016-03-31 10:51:51 -03:00
tst-execstack-mod.c
tst-execstack-needed.c
tst-execstack-prog.c
tst-execstack.c
tst-global1.c
tst-initorder2.c
tst-initorder2.exp
tst-initorder.c
tst-initorder.exp
tst-initordera1.c
tst-initordera2.c
tst-initordera3.c
tst-initordera4.c
tst-initorderb1.c
tst-initorderb2.c
tst-ldconfig-X.sh ldconfig: Do not remove stale symbolic links with -X [BZ #19610] 2016-03-07 22:06:18 +01:00
tst-leaks1-static.c
tst-leaks1.c Modify several tests to use test-skeleton.c 2015-07-15 15:10:23 +05:30
tst-nodelete2.c Clear DF_1_NODELETE flag only for failed to load library. 2015-08-11 10:13:22 +02:00
tst-nodelete2mod.c Clear DF_1_NODELETE flag only for failed to load library. 2015-08-11 10:13:22 +02:00
tst-nodelete-opened-lib.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
tst-nodelete-opened.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
tst-nodelete-rtldmod.cc Add forced deletion support to _dl_close_worker 2015-07-07 11:06:56 -07:00
tst-nodelete-uniquemod.cc Add forced deletion support to _dl_close_worker 2015-07-07 11:06:56 -07:00
tst-nodelete-zmod.cc Add forced deletion support to _dl_close_worker 2015-07-07 11:06:56 -07:00
tst-nodelete.cc Add forced deletion support to _dl_close_worker 2015-07-07 11:06:56 -07:00
tst-null-argv-lib.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
tst-null-argv.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
tst-order-a1.c
tst-order-a2.c
tst-order-a3.c
tst-order-a4.c
tst-order-b1.c
tst-order-b2.c
tst-order-main.c Modify several tests to use test-skeleton.c 2015-08-06 02:59:04 -04:00
tst-pathopt.c
tst-pathopt.sh Make shebang interpreter directives consistent 2016-01-07 04:03:21 -05:00
tst-pie1.c
tst-pie2.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
tst-piemod1.c
tst-prelink.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
tst-prelink.exp Run tst-prelink test for GLOB_DAT reloc 2015-11-14 12:00:38 -08:00
tst-protected1a.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
tst-protected1b.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
tst-protected1mod.h Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
tst-protected1moda.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
tst-protected1modb.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
tst-ptrguard1-static.c
tst-ptrguard1.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
tst-relsort1.c
tst-relsort1mod1.c
tst-relsort1mod2.c
tst-rtld-load-self.sh Make shebang interpreter directives consistent 2016-01-07 04:03:21 -05:00
tst-stackguard1-static.c
tst-stackguard1.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
tst-thrlock.c
tst-tls1-static.c
tst-tls1.c
tst-tls2-static.c
tst-tls2.c
tst-tls3.c
tst-tls4.c
tst-tls5.c
tst-tls6.c
tst-tls7.c
tst-tls8.c
tst-tls9-static.c
tst-tls9.c
tst-tls10.c
tst-tls10.h
tst-tls11.c
tst-tls12.c
tst-tls13.c
tst-tls14.c
tst-tls15.c
tst-tls16.c
tst-tls17.c
tst-tls18.c
tst-tls19.c
tst-tls19mod1.c
tst-tls19mod2.c
tst-tls19mod3.c
tst-tls-dlinfo.c
tst-tlsalign-extern-static.c
tst-tlsalign-extern.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
tst-tlsalign-lib.c
tst-tlsalign-static.c
tst-tlsalign-vars.c
tst-tlsalign.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
tst-tlsmod1.c
tst-tlsmod2.c
tst-tlsmod3.c
tst-tlsmod4.c
tst-tlsmod5.c
tst-tlsmod6.c
tst-tlsmod7.c
tst-tlsmod8.c
tst-tlsmod9.c
tst-tlsmod10.c
tst-tlsmod11.c
tst-tlsmod12.c
tst-tlsmod13.c
tst-tlsmod13a.c
tst-tlsmod14a.c
tst-tlsmod14b.c
tst-tlsmod15a.c
tst-tlsmod15b.c
tst-tlsmod16a.c
tst-tlsmod16b.c
tst-tlsmod17a.c
tst-tlsmod17b.c
tst-tlsmod18a.c
tst-unique1.c Remove gnu_unique_object configure test. 2015-10-19 22:34:20 +00:00
tst-unique1mod1.c Remove gnu_unique_object configure test. 2015-10-19 22:34:20 +00:00
tst-unique1mod2.c Remove gnu_unique_object configure test. 2015-10-19 22:34:20 +00:00
tst-unique2.c Remove gnu_unique_object configure test. 2015-10-19 22:34:20 +00:00
tst-unique2mod1.c Remove gnu_unique_object configure test. 2015-10-19 22:34:20 +00:00
tst-unique2mod2.c Remove gnu_unique_object configure test. 2015-10-19 22:34:20 +00:00
tst-unique3.cc
tst-unique3.h
tst-unique3lib2.cc
tst-unique3lib.cc
tst-unique4.cc
tst-unique4.h
tst-unique4lib.cc
unload2.c
unload2dep.c
unload2mod.c
unload3.c
unload3mod1.c
unload3mod2.c
unload3mod3.c
unload3mod4.c
unload4.c
unload4mod1.c
unload4mod2.c
unload4mod3.c
unload4mod4.c
unload5.c
unload6.c
unload6mod1.c
unload6mod2.c
unload6mod3.c
unload7.c
unload7mod1.c
unload7mod2.c
unload8.c
unload8mod1.c
unload8mod1x.c
unload8mod2.c
unload8mod3.c
unload.c
unloadmod.c
Versions
vismain.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
vismod1.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
vismod2.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
vismod3.c Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
vismod.h