diff options
author | Florian Weimer <fweimer@redhat.com> | 2021-06-03 08:26:04 +0200 |
---|---|---|
committer | Florian Weimer <fweimer@redhat.com> | 2021-06-03 09:11:45 +0200 |
commit | 6f1c701026287f6928d3bdd1aea7359308635abe (patch) | |
tree | 8dcf3b5a755f131435a912f7629478deaff74264 /dlfcn | |
parent | 0c1c3a771eceec46e66ce1183cf988e2303bd373 (diff) | |
download | glibc-6f1c701026287f6928d3bdd1aea7359308635abe.tar.gz glibc-6f1c701026287f6928d3bdd1aea7359308635abe.tar.xz glibc-6f1c701026287f6928d3bdd1aea7359308635abe.zip |
dlfcn: Cleanups after -ldl is no longer required
This commit removes the ELF constructor and internal variables from dlfcn/dlfcn.c. The file now serves the same purpose as nptl/libpthread-compat.c, so it is renamed to dlfcn/libdl-compat.c. The use of libdl-shared-only-routines ensures that libdl.a is empty. This commit adjusts the test suite not to use $(libdl). The libdl.so symbolic link is no longer installed. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Diffstat (limited to 'dlfcn')
-rw-r--r-- | dlfcn/Makefile | 42 | ||||
-rw-r--r-- | dlfcn/libdl-compat.c (renamed from dlfcn/dlfcn.c) | 25 |
2 files changed, 15 insertions, 52 deletions
diff --git a/dlfcn/Makefile b/dlfcn/Makefile index a471d86071..6bbfbb8344 100644 --- a/dlfcn/Makefile +++ b/dlfcn/Makefile @@ -21,10 +21,8 @@ include ../Makeconfig headers := bits/dlfcn.h dlfcn.h extra-libs := libdl -libdl-routines := dlfcn -routines := $(patsubst %,s%,$(filter-out dlfcn,$(libdl-routines))) -elide-routines.os := $(routines) -routines += \ +libdl-routines := libdl-compat +routines = \ dladdr \ dladdr1 \ dlclose \ @@ -38,9 +36,16 @@ routines += \ extra-libs-others := libdl +libdl-shared-only-routines += libdl-compat + +# Pretend that libdl.so is a linker script, so that the symbolic +# link is not installed. +install-lib-ldscripts = libdl.so +$(inst_libdir)/libdl.so: + ifeq ($(build-shared),yes) routines += dlopenold -shared-only-routines := dlopenold dlfcn +shared-only-routines := dlopenold endif ifeq (yes,$(build-shared)) @@ -87,77 +92,54 @@ ifeq ($(build-shared),yes) tests: $(test-modules) endif -$(objpfx)glrefmain: $(libdl) $(objpfx)glrefmain.out: $(objpfx)glrefmain \ $(objpfx)glreflib1.so $(objpfx)glreflib2.so -$(objpfx)failtest: $(libdl) $(objpfx)failtest.out: $(objpfx)failtestmod.so -$(objpfx)tst-dladdr: $(libdl) $(objpfx)tst-dladdr.out: $(objpfx)glreflib1.so -$(objpfx)tst-dlinfo: $(libdl) $(objpfx)tst-dlinfo.out: $(objpfx)glreflib3.so LDFLAGS-glreflib3.so = -Wl,-rpath,: LDFLAGS-default = $(LDFLAGS-rdynamic) -$(objpfx)default: $(libdl) $(objpfx)defaultmod1.so $(objpfx)defaultmod2.so -$(objpfx)defaultmod1.so: $(libdl) +$(objpfx)default: $(objpfx)defaultmod1.so $(objpfx)defaultmod2.so LDFLAGS-defaultmod2.so = $(LDFLAGS-Bsymbolic) -$(objpfx)defaultmod2.so: $(libdl) -$(objpfx)errmsg1: $(libdl) $(objpfx)errmsg1.out: $(objpfx)errmsg1 $(objpfx)errmsg1mod.so -$(objpfx)tstatexit: $(libdl) $(objpfx)tstatexit.out: $(objpfx)tstatexit $(objpfx)modatexit.so -$(objpfx)tstcxaatexit: $(libdl) $(objpfx)tstcxaatexit.out: $(objpfx)tstcxaatexit $(objpfx)modcxaatexit.so -$(objpfx)tststatic: $(objpfx)libdl.a $(objpfx)tststatic.out: $(objpfx)tststatic $(objpfx)modstatic.so -$(objpfx)tststatic2: $(objpfx)libdl.a $(objpfx)tststatic2.out: $(objpfx)tststatic2 $(objpfx)modstatic.so \ $(objpfx)modstatic2.so -$(objpfx)modstatic2.so: $(libdl) - -$(objpfx)tststatic3: $(objpfx)libdl.a $(objpfx)tststatic3.out: $(objpfx)tststatic3 $(objpfx)modstatic3.so -$(objpfx)tststatic4: $(objpfx)libdl.a $(objpfx)tststatic4.out: $(objpfx)tststatic4 $(objpfx)modstatic3.so -$(objpfx)tststatic5: $(objpfx)libdl.a $(objpfx)tststatic5.out: $(objpfx)tststatic5 $(objpfx)modstatic5.so -$(objpfx)bug-dlopen1: $(libdl) - -$(objpfx)bug-dlsym1: $(libdl) $(objpfx)bug-dlsym1-lib2.so +$(objpfx)bug-dlsym1: $(objpfx)bug-dlsym1-lib2.so $(objpfx)bug-dlsym1.out: $(objpfx)bug-dlsym1-lib1.so \ $(objpfx)bug-dlsym1-lib2.so $(objpfx)bug-dlsym1-lib1.so: $(objpfx)bug-dlsym1-lib2.so -$(objpfx)bug-atexit1: $(libdl) $(objpfx)bug-atexit1.out: $(objpfx)bug-atexit1-lib.so -$(objpfx)bug-atexit2: $(libdl) $(objpfx)bug-atexit2.out: $(objpfx)bug-atexit2-lib.so ifneq (,$(CXX)) LDLIBS-bug-atexit3-lib.so = -lstdc++ -lgcc_eh $(objpfx)bug-atexit3-lib.so: $(libsupport) -$(objpfx)bug-atexit3: $(libdl) $(objpfx)bug-atexit3.out: $(objpfx)bug-atexit3-lib.so endif $(objpfx)bug-dl-leaf: $(objpfx)bug-dl-leaf-lib.so $(objpfx)bug-dl-leaf.out: $(objpfx)bug-dl-leaf-lib-cb.so -$(objpfx)bug-dl-leaf-lib.so: $(libdl) $(objpfx)bug-dl-leaf-lib-cb.so: $(objpfx)bug-dl-leaf-lib.so -$(objpfx)tst-rec-dlopen: $(libdl) $(objpfx)tst-rec-dlopen.out: $(objpfx)moddummy1.so $(objpfx)moddummy2.so diff --git a/dlfcn/dlfcn.c b/dlfcn/libdl-compat.c index ef750bc27a..d197a98e79 100644 --- a/dlfcn/dlfcn.c +++ b/dlfcn/libdl-compat.c @@ -1,4 +1,4 @@ -/* Load a shared object at run time. +/* Placeholder compatibility symbols. Copyright (C) 2005-2021 Free Software Foundation, Inc. This file is part of the GNU C Library. @@ -19,27 +19,8 @@ #include <dlfcn.h> #include <shlib-compat.h> -int __dlfcn_argc attribute_hidden; -char **__dlfcn_argv attribute_hidden; - - -static void -init (int argc, char *argv[]) -{ - __dlfcn_argc = argc; - __dlfcn_argv = argv; -} - -static void (*const init_array []) (int argc, char *argv[]) - __attribute__ ((section (".init_array"), aligned (sizeof (void *)))) - __attribute_used__ = -{ - init -}; - -/* The remainder of this file is used to keep specific symbol versions - occupied, so that ld does not generate weak symbol version - definitions. */ +/* This file is used to keep specific symbol versions occupied, so + that ld does not generate weak symbol version definitions. */ void attribute_compat_text_section |