Add {,sysdep-}ld-library-path make variable
Commit Message
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(-)
Comments
On Nov 13 2020, Samuel Thibault wrote:
> diff --git a/sysdeps/mach/hurd/Makeconfig b/sysdeps/mach/hurd/Makeconfig
> index fe3b7c553e..959f23ec12 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
I don't think sysdep-ld-library-path should include the leading
separator. Instead, ld-library-path can use
$(addprefix :,$(sysdep-ld-library-path)).
Andreas.
Andreas Schwab, le ven. 13 nov. 2020 21:04:03 +0100, a ecrit:
> On Nov 13 2020, Samuel Thibault wrote:
> > diff --git a/sysdeps/mach/hurd/Makeconfig b/sysdeps/mach/hurd/Makeconfig
> > index fe3b7c553e..959f23ec12 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
>
> I don't think sysdep-ld-library-path should include the leading
> separator. Instead, ld-library-path can use
> $(addprefix :,$(sysdep-ld-library-path)).
Right :) fixed so.
Samuel
@@ -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)$(sysdep-ld-library-path)
ifndef LD
LD := ld -X
@@ -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)
@@ -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
@@ -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)
@@ -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)
@@ -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