summaryrefslogtreecommitdiffstats
path: root/lib/libc/gen/Makefile.inc
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2009-04-03 19:17:23 +0000
committerkib <kib@FreeBSD.org>2009-04-03 19:17:23 +0000
commitd2fcac0ee269d1860c774a5ecf65296ce9417c84 (patch)
tree49cd2d7fe74d5b0bb669f8057c2e879c1c85b348 /lib/libc/gen/Makefile.inc
parentcde6991b73026c367b500f4d6e6fa8a7e0af8c79 (diff)
downloadFreeBSD-src-d2fcac0ee269d1860c774a5ecf65296ce9417c84.zip
FreeBSD-src-d2fcac0ee269d1860c774a5ecf65296ce9417c84.tar.gz
Allow the NULL, RTLD_SELF and RTLD_NEXT handles to work with dlfunc(3).
dlfunc() called dlsym() to do the work, and dlsym() determines the dso that originating the call by the return address. Due to this, dlfunc() operated as if the caller is always the libc. To fix this, move the dlfunc() to rtld, where it can call the internal implementation of dlsym, and still correctly fetch return address. Provide usual weak stub for the symbol from libc for static binaries. dlfunc is put to FBSD_1.0 symver namespace in the ld.so export to override dlfunc@FBSD_1.0 weak symbol, exported by libc. Reported, analyzed and tested by: Tijl Coosemans <tijl ulyssis org> PR: standards/133339 Reviewed by: kan
Diffstat (limited to 'lib/libc/gen/Makefile.inc')
-rw-r--r--lib/libc/gen/Makefile.inc2
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/libc/gen/Makefile.inc b/lib/libc/gen/Makefile.inc
index a7997ab..0ee2ffb 100644
--- a/lib/libc/gen/Makefile.inc
+++ b/lib/libc/gen/Makefile.inc
@@ -9,7 +9,7 @@ SRCS+= __getosreldate.c __xuname.c \
alarm.c arc4random.c assert.c basename.c check_utility_compat.c \
clock.c closedir.c confstr.c \
crypt.c ctermid.c daemon.c devname.c dirname.c disklabel.c \
- dlfcn.c dlfunc.c drand48.c erand48.c err.c errlst.c errno.c \
+ dlfcn.c drand48.c erand48.c err.c errlst.c errno.c \
exec.c fdevname.c feature_present.c fmtcheck.c fmtmsg.c fnmatch.c \
fpclassify.c frexp.c fstab.c ftok.c fts.c fts-compat.c ftw.c \
getbootfile.c getbsize.c \
OpenPOWER on IntegriCloud