svn commit: r331742 - in stable/11: contrib/mdocml lib lib/libc/gen lib/libdl share/mk
Konstantin Belousov
kib at FreeBSD.org
Thu Mar 29 19:32:27 UTC 2018
Author: kib
Date: Thu Mar 29 19:32:25 2018
New Revision: 331742
URL: https://svnweb.freebsd.org/changeset/base/331742
Log:
MFC r320872:
Create libdl.so.1 as a filter for libc.so.7 which exports public dl*
functions.
Added:
stable/11/lib/libdl/
- copied from r320872, head/lib/libdl/
Modified:
stable/11/contrib/mdocml/lib.in
stable/11/lib/Makefile
stable/11/lib/libc/gen/dlfcn.c
stable/11/lib/libc/gen/dlopen.3
stable/11/share/mk/bsd.libnames.mk
stable/11/share/mk/bsd.linker.mk
stable/11/share/mk/src.libnames.mk
Directory Properties:
stable/11/ (props changed)
Modified: stable/11/contrib/mdocml/lib.in
==============================================================================
--- stable/11/contrib/mdocml/lib.in Thu Mar 29 19:29:12 2018 (r331741)
+++ stable/11/contrib/mdocml/lib.in Thu Mar 29 19:32:25 2018 (r331742)
@@ -46,6 +46,7 @@ LINE("libdevctl", "Device Control Library (libdevctl,
LINE("libdevinfo", "Device and Resource Information Utility Library (libdevinfo, \\-ldevinfo)")
LINE("libdevstat", "Device Statistics Library (libdevstat, \\-ldevstat)")
LINE("libdisk", "Interface to Slice and Partition Labels Library (libdisk, \\-ldisk)")
+LINE("libdl", "Dynamic Linker Services Filter (libdl, \\-ldl)")
LINE("libdm", "Device Mapper Library (libdm, \\-ldm)")
LINE("libdwarf", "DWARF Access Library (libdwarf, \\-ldwarf)")
LINE("libedit", "Command Line Editor Library (libedit, \\-ledit)")
Modified: stable/11/lib/Makefile
==============================================================================
--- stable/11/lib/Makefile Thu Mar 29 19:29:12 2018 (r331741)
+++ stable/11/lib/Makefile Thu Mar 29 19:32:25 2018 (r331742)
@@ -47,6 +47,7 @@ SUBDIR= ${SUBDIR_BOOTSTRAP} \
libdevdctl \
libdevinfo \
libdevstat \
+ ${_libdl} \
libdwarf \
libedit \
${_libefivar} \
@@ -273,6 +274,10 @@ _librtld_db= librtld_db
.if ${MACHINE_CPUARCH} == "powerpc"
_libproc= libproc
_librtld_db= librtld_db
+.endif
+
+.if defined(LINKER_FEATURES) && ${LINKER_FEATURES:Mfilter}
+_libdl= libdl
.endif
.if ${MACHINE_CPUARCH} == "aarch64" || ${MACHINE_CPUARCH} == "arm" || \
Modified: stable/11/lib/libc/gen/dlfcn.c
==============================================================================
--- stable/11/lib/libc/gen/dlfcn.c Thu Mar 29 19:29:12 2018 (r331741)
+++ stable/11/lib/libc/gen/dlfcn.c Thu Mar 29 19:32:25 2018 (r331742)
@@ -27,6 +27,8 @@
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
+#if !defined(IN_LIBDL) || defined(PIC)
+
/*
* Linkage to services provided by the dynamic linker.
*/
@@ -157,6 +159,7 @@ _rtld_thread_init(void *li __unused)
_rtld_error(sorry);
}
+#ifndef IN_LIBDL
static pthread_once_t dl_phdr_info_once = PTHREAD_ONCE_INIT;
static struct dl_phdr_info phdr_info;
@@ -192,6 +195,7 @@ dl_init_phdr_info(void)
}
phdr_info.dlpi_adds = 1;
}
+#endif
#pragma weak dl_iterate_phdr
int
@@ -199,11 +203,15 @@ dl_iterate_phdr(int (*callback)(struct dl_phdr_info *,
void *data __unused)
{
+#ifndef IN_LIBDL
__init_elf_aux_vector();
if (__elf_aux_vector == NULL)
return (1);
_once(&dl_phdr_info_once, dl_init_phdr_info);
return (callback(&phdr_info, sizeof(phdr_info), data));
+#else
+ return (0);
+#endif
}
#pragma weak fdlopen
@@ -251,3 +259,5 @@ _rtld_is_dlopened(void *arg __unused)
return (0);
}
+
+#endif /* !defined(IN_LIBDL) || defined(PIC) */
Modified: stable/11/lib/libc/gen/dlopen.3
==============================================================================
--- stable/11/lib/libc/gen/dlopen.3 Thu Mar 29 19:29:12 2018 (r331741)
+++ stable/11/lib/libc/gen/dlopen.3 Thu Mar 29 19:32:25 2018 (r331742)
@@ -32,7 +32,7 @@
.\" @(#) dlopen.3 1.6 90/01/31 SMI
.\" $FreeBSD$
.\"
-.Dd February 14, 2015
+.Dd July 7, 2017
.Dt DLOPEN 3
.Os
.Sh NAME
@@ -376,6 +376,14 @@ option to
.Xr ld 1
for symbols defined in the executable to become visible to
.Fn dlsym .
+.Pp
+Other ELF platforms require linking with
+.Lb libdl
+to provide
+.Fn dlopen
+and other functions.
+.Fx
+does not require linking with the library, but supports it for compatibility.
.Pp
In previous implementations, it was necessary to prepend an underscore
to all external symbols in order to gain symbol
Modified: stable/11/share/mk/bsd.libnames.mk
==============================================================================
--- stable/11/share/mk/bsd.libnames.mk Thu Mar 29 19:29:12 2018 (r331741)
+++ stable/11/share/mk/bsd.libnames.mk Thu Mar 29 19:32:25 2018 (r331742)
@@ -54,6 +54,7 @@ LIBDEVDCTL?= ${DESTDIR}${LIBDIR_BASE}/libdevdctl.a
LIBDEVINFO?= ${DESTDIR}${LIBDIR_BASE}/libdevinfo.a
LIBDEVSTAT?= ${DESTDIR}${LIBDIR_BASE}/libdevstat.a
LIBDIALOG?= ${DESTDIR}${LIBDIR_BASE}/libdialog.a
+LIBDL?= ${DESTDIR}${LIBDIR_BASE}/libdl.a
LIBDNS?= ${DESTDIR}${LIBDIR_BASE}/libdns.a
LIBDPV?= ${DESTDIR}${LIBDIR_BASE}/libdpv.a
LIBDTRACE?= ${DESTDIR}${LIBDIR_BASE}/libdtrace.a
Modified: stable/11/share/mk/bsd.linker.mk
==============================================================================
--- stable/11/share/mk/bsd.linker.mk Thu Mar 29 19:29:12 2018 (r331741)
+++ stable/11/share/mk/bsd.linker.mk Thu Mar 29 19:32:25 2018 (r331742)
@@ -70,6 +70,9 @@ ${X_}LINKER_FEATURES=
.if ${${X_}LINKER_TYPE} != "bfd" || ${${X_}LINKER_VERSION} > 21750
${X_}LINKER_FEATURES+= build-id
.endif
+.if ${${X_}LINKER_TYPE} == "bfd"
+${X_}LINKER_FEATURES+= filter
+.endif
.endif
.else
# Use LD's values
Modified: stable/11/share/mk/src.libnames.mk
==============================================================================
--- stable/11/share/mk/src.libnames.mk Thu Mar 29 19:29:12 2018 (r331741)
+++ stable/11/share/mk/src.libnames.mk Thu Mar 29 19:32:25 2018 (r331742)
@@ -87,6 +87,7 @@ _LIBRARIES= \
devinfo \
devstat \
dialog \
+ dl \
dpv \
dtrace \
dwarf \
More information about the svn-src-stable
mailing list