[hurd,commited] Add {,sysdep-}ld-library-path make variable

Message ID 20201113201458.1779405-1-samuel.thibault@ens-lyon.org
State Superseded, archived
Headers
Series [hurd,commited] Add {,sysdep-}ld-library-path make variable |

Commit Message

Samuel Thibault Nov. 13, 2020, 8:14 p.m. UTC
  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

Samuel Thibault Nov. 13, 2020, 8:15 p.m. UTC | #1
Oops, sorry, wrong script, it's not commited, this is still an RFC

Samuel

Samuel Thibault, le ven. 13 nov. 2020 21:14:58 +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..151978ba71 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
>
  

Patch

diff --git a/Makeconfig b/Makeconfig
index dfda418aac..151978ba71 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