Message ID | 20201113202517.1780980-1-samuel.thibault@ens-lyon.org |
---|---|
State | New |
Headers | show |
Series | Add {,sysdep-}ld-library-path make variable | expand |
There, this one is actually fixed, sorry for the confusion. Samuel Samuel Thibault, le ven. 13 nov. 2020 21:25:17 +0100, a ecrit: > On GNU/Hurd we not only need $(common-objpfx) in LD_LIBRARY_PATH when loading > dynamic objects, but also $(common-objpfx)/mach and $(common-objpfx)/hurd. This > adds an ld-library-path variable to be used as LD_LIBRARY_PATH basis in > Makefiles, and a sysdep-ld-library-path variable for sysdeps to add some > more paths, here mach/ and hurd/. > --- > Makeconfig | 3 +++ > dlfcn/Makefile | 2 +- > elf/Makefile | 4 ++-- > inet/Makefile | 2 +- > nptl/Makefile | 2 +- > sysdeps/mach/hurd/Makeconfig | 2 ++ > 6 files changed, 10 insertions(+), 5 deletions(-) > > diff --git a/Makeconfig b/Makeconfig > index dfda418aac..8074613b85 100644 > --- a/Makeconfig > +++ b/Makeconfig > @@ -769,6 +769,9 @@ built-program-cmd = $(built-program-cmd-before-env) $(run-program-env) \ > # the second dependency of the makefile target in which > # $(host-built-program-cmd) is used. > host-built-program-cmd = $(run-via-rtld-prefix) $(built-program-file) > +# $(ld-library-path) is the common content to be set in LD_LIBRARY_PATH > +# for running static binaries that may load dynamic objects. > +ld-library-path = $(objpfx):$(common-objpfx)$(addprefix :,$(sysdep-ld-library-path)) > > ifndef LD > LD := ld -X > diff --git a/dlfcn/Makefile b/dlfcn/Makefile > index 4b7e0387b3..412e7c57d5 100644 > --- a/dlfcn/Makefile > +++ b/dlfcn/Makefile > @@ -52,7 +52,7 @@ ifeq (yes,$(build-shared)) > tests += tststatic tststatic2 tststatic3 tststatic4 tststatic5 > tests-static += tststatic tststatic2 tststatic3 tststatic4 tststatic5 > modules-names += modstatic modstatic2 modstatic3 modstatic5 > -tststatic-ENV = LD_LIBRARY_PATH=$(objpfx):$(common-objpfx):$(common-objpfx)elf > +tststatic-ENV = LD_LIBRARY_PATH=$(ld-library-path):$(common-objpfx)elf > tststatic2-ENV = $(tststatic-ENV) > tststatic3-ENV = $(tststatic-ENV) > tststatic4-ENV = $(tststatic-ENV) > diff --git a/elf/Makefile b/elf/Makefile > index f10cc59e7c..042fb569e3 100644 > --- a/elf/Makefile > +++ b/elf/Makefile > @@ -178,7 +178,7 @@ tests-static := $(tests-static-normal) $(tests-static-internal) > ifeq (yes,$(build-shared)) > tests-static += tst-tls9-static tst-single_threaded-static-dlopen > static-dlopen-environment = \ > - LD_LIBRARY_PATH=$(objpfx):$(common-objpfx):$(common-objpfx)dlfcn > + LD_LIBRARY_PATH=$(ld-library-path):$(common-objpfx)dlfcn > tst-tls9-static-ENV = $(static-dlopen-environment) > tst-single_threaded-static-dlopen-ENV = $(static-dlopen-environment) > > @@ -1669,7 +1669,7 @@ $(objpfx)tst-libc_dlvsym-dso.so: $(libsupport) $(libdl) > $(objpfx)tst-libc_dlvsym.out: $(objpfx)tst-libc_dlvsym-dso.so > $(objpfx)tst-libc_dlvsym-static: $(common-objpfx)dlfcn/libdl.a > tst-libc_dlvsym-static-ENV = \ > - LD_LIBRARY_PATH=$(objpfx):$(common-objpfx):$(common-objpfx)dlfcn > + LD_LIBRARY_PATH=$(ld-library-path):$(common-objpfx)dlfcn > $(objpfx)tst-libc_dlvsym-static.out: $(objpfx)tst-libc_dlvsym-dso.so > > $(objpfx)tst-big-note: $(objpfx)tst-big-note-lib.so > diff --git a/inet/Makefile b/inet/Makefile > index 7a807fe805..a32c433dc3 100644 > --- a/inet/Makefile > +++ b/inet/Makefile > @@ -123,5 +123,5 @@ endif > # The test uses dlopen indirectly and would otherwise load system > # objects. > tst-idna_name_classify-ENV = \ > - LD_LIBRARY_PATH=$(objpfx):$(common-objpfx):$(common-objpfx)elf > + LD_LIBRARY_PATH=$(ld-library-path):$(common-objpfx):$(common-objpfx)elf > $(objpfx)tst-idna_name_classify.out: $(gen-locales) > diff --git a/nptl/Makefile b/nptl/Makefile > index f4134916b2..74ab758c12 100644 > --- a/nptl/Makefile > +++ b/nptl/Makefile > @@ -614,7 +614,7 @@ tst-audit-threads-ENV = LD_AUDIT=$(objpfx)tst-audit-threads-mod1.so > # The test uses dlopen indirectly and would otherwise load system > # objects. > tst-setuid1-static-ENV = \ > - LD_LIBRARY_PATH=$(objpfx):$(common-objpfx):$(common-objpfx)elf:$(common-objpfx)nss > + LD_LIBRARY_PATH=$(ld-library-path):$(common-objpfx)elf:$(common-objpfx)nss > > # The tests here better do not run in parallel. > ifeq ($(run-built-tests),yes) > diff --git a/sysdeps/mach/hurd/Makeconfig b/sysdeps/mach/hurd/Makeconfig > index fe3b7c553e..9adf8f291d 100644 > --- a/sysdeps/mach/hurd/Makeconfig > +++ b/sysdeps/mach/hurd/Makeconfig > @@ -5,3 +5,5 @@ static-start-installed-name = crt0.o > > # GNU libc on the Hurd is always reentrant. > libc-reentrant = yes > + > +sysdep-ld-library-path = $(common-objpfx)/mach:$(common-objpfx)/hurd > -- > 2.28.0 >
diff --git a/Makeconfig b/Makeconfig index dfda418aac..8074613b85 100644 --- a/Makeconfig +++ b/Makeconfig @@ -769,6 +769,9 @@ built-program-cmd = $(built-program-cmd-before-env) $(run-program-env) \ # the second dependency of the makefile target in which # $(host-built-program-cmd) is used. host-built-program-cmd = $(run-via-rtld-prefix) $(built-program-file) +# $(ld-library-path) is the common content to be set in LD_LIBRARY_PATH +# for running static binaries that may load dynamic objects. +ld-library-path = $(objpfx):$(common-objpfx)$(addprefix :,$(sysdep-ld-library-path)) ifndef LD LD := ld -X diff --git a/dlfcn/Makefile b/dlfcn/Makefile index 4b7e0387b3..412e7c57d5 100644 --- a/dlfcn/Makefile +++ b/dlfcn/Makefile @@ -52,7 +52,7 @@ ifeq (yes,$(build-shared)) tests += tststatic tststatic2 tststatic3 tststatic4 tststatic5 tests-static += tststatic tststatic2 tststatic3 tststatic4 tststatic5 modules-names += modstatic modstatic2 modstatic3 modstatic5 -tststatic-ENV = LD_LIBRARY_PATH=$(objpfx):$(common-objpfx):$(common-objpfx)elf +tststatic-ENV = LD_LIBRARY_PATH=$(ld-library-path):$(common-objpfx)elf tststatic2-ENV = $(tststatic-ENV) tststatic3-ENV = $(tststatic-ENV) tststatic4-ENV = $(tststatic-ENV) diff --git a/elf/Makefile b/elf/Makefile index f10cc59e7c..042fb569e3 100644 --- a/elf/Makefile +++ b/elf/Makefile @@ -178,7 +178,7 @@ tests-static := $(tests-static-normal) $(tests-static-internal) ifeq (yes,$(build-shared)) tests-static += tst-tls9-static tst-single_threaded-static-dlopen static-dlopen-environment = \ - LD_LIBRARY_PATH=$(objpfx):$(common-objpfx):$(common-objpfx)dlfcn + LD_LIBRARY_PATH=$(ld-library-path):$(common-objpfx)dlfcn tst-tls9-static-ENV = $(static-dlopen-environment) tst-single_threaded-static-dlopen-ENV = $(static-dlopen-environment) @@ -1669,7 +1669,7 @@ $(objpfx)tst-libc_dlvsym-dso.so: $(libsupport) $(libdl) $(objpfx)tst-libc_dlvsym.out: $(objpfx)tst-libc_dlvsym-dso.so $(objpfx)tst-libc_dlvsym-static: $(common-objpfx)dlfcn/libdl.a tst-libc_dlvsym-static-ENV = \ - LD_LIBRARY_PATH=$(objpfx):$(common-objpfx):$(common-objpfx)dlfcn + LD_LIBRARY_PATH=$(ld-library-path):$(common-objpfx)dlfcn $(objpfx)tst-libc_dlvsym-static.out: $(objpfx)tst-libc_dlvsym-dso.so $(objpfx)tst-big-note: $(objpfx)tst-big-note-lib.so diff --git a/inet/Makefile b/inet/Makefile index 7a807fe805..a32c433dc3 100644 --- a/inet/Makefile +++ b/inet/Makefile @@ -123,5 +123,5 @@ endif # The test uses dlopen indirectly and would otherwise load system # objects. tst-idna_name_classify-ENV = \ - LD_LIBRARY_PATH=$(objpfx):$(common-objpfx):$(common-objpfx)elf + LD_LIBRARY_PATH=$(ld-library-path):$(common-objpfx):$(common-objpfx)elf $(objpfx)tst-idna_name_classify.out: $(gen-locales) diff --git a/nptl/Makefile b/nptl/Makefile index f4134916b2..74ab758c12 100644 --- a/nptl/Makefile +++ b/nptl/Makefile @@ -614,7 +614,7 @@ tst-audit-threads-ENV = LD_AUDIT=$(objpfx)tst-audit-threads-mod1.so # The test uses dlopen indirectly and would otherwise load system # objects. tst-setuid1-static-ENV = \ - LD_LIBRARY_PATH=$(objpfx):$(common-objpfx):$(common-objpfx)elf:$(common-objpfx)nss + LD_LIBRARY_PATH=$(ld-library-path):$(common-objpfx)elf:$(common-objpfx)nss # The tests here better do not run in parallel. ifeq ($(run-built-tests),yes) diff --git a/sysdeps/mach/hurd/Makeconfig b/sysdeps/mach/hurd/Makeconfig index fe3b7c553e..9adf8f291d 100644 --- a/sysdeps/mach/hurd/Makeconfig +++ b/sysdeps/mach/hurd/Makeconfig @@ -5,3 +5,5 @@ static-start-installed-name = crt0.o # GNU libc on the Hurd is always reentrant. libc-reentrant = yes + +sysdep-ld-library-path = $(common-objpfx)/mach:$(common-objpfx)/hurd