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 \
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to