From 3dbbd2ff92b1a0a2465461ee049e3e2813b73fa4 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Fri, 13 Nov 2020 19:37:41 +0000 Subject: [PATCH] Add {,sysdep-}ld-library-path make variable 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 2015383eb2..a494b14519 100644 --- a/elf/Makefile +++ b/elf/Makefile @@ -180,7 +180,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) @@ -1671,7 +1671,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