public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
* [hurd,commited 0/2] hurd: enable ifuncs
@ 2020-11-16 23:38 Samuel Thibault
  2020-11-16 23:38 ` [hurd,commited 1/2] Add {,sysdep-}ld-library-path make variable Samuel Thibault
  2020-11-16 23:38 ` [hurd,commited 2/2] hurd: Enable using ifunc Samuel Thibault
  0 siblings, 2 replies; 3+ messages in thread
From: Samuel Thibault @ 2020-11-16 23:38 UTC (permalink / raw)
  To: libc-alpha; +Cc: Samuel Thibault, commit-hurd

Samuel Thibault (2):
  Add {,sysdep-}ld-library-path make variable
  hurd: Enable using ifunc

 Makeconfig                     | 3 +++
 dlfcn/Makefile                 | 2 +-
 elf/Makefile                   | 4 ++--
 inet/Makefile                  | 2 +-
 nptl/Makefile                  | 2 +-
 sysdeps/mach/hurd/Makeconfig   | 2 ++
 sysdeps/mach/hurd/configure    | 2 --
 sysdeps/mach/hurd/configure.ac | 4 ----
 8 files changed, 10 insertions(+), 11 deletions(-)

-- 
2.29.2


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [hurd,commited 1/2] Add {,sysdep-}ld-library-path make variable
  2020-11-16 23:38 [hurd,commited 0/2] hurd: enable ifuncs Samuel Thibault
@ 2020-11-16 23:38 ` Samuel Thibault
  2020-11-16 23:38 ` [hurd,commited 2/2] hurd: Enable using ifunc Samuel Thibault
  1 sibling, 0 replies; 3+ messages in thread
From: Samuel Thibault @ 2020-11-16 23:38 UTC (permalink / raw)
  To: libc-alpha; +Cc: Samuel Thibault, commit-hurd

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
-- 
2.29.2


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [hurd,commited 2/2] hurd: Enable using ifunc
  2020-11-16 23:38 [hurd,commited 0/2] hurd: enable ifuncs Samuel Thibault
  2020-11-16 23:38 ` [hurd,commited 1/2] Add {,sysdep-}ld-library-path make variable Samuel Thibault
@ 2020-11-16 23:38 ` Samuel Thibault
  1 sibling, 0 replies; 3+ messages in thread
From: Samuel Thibault @ 2020-11-16 23:38 UTC (permalink / raw)
  To: libc-alpha; +Cc: Samuel Thibault, commit-hurd

Bugs have been fixed in binutils/gcc/glibc.
---
 sysdeps/mach/hurd/configure    | 2 --
 sysdeps/mach/hurd/configure.ac | 4 ----
 2 files changed, 6 deletions(-)

diff --git a/sysdeps/mach/hurd/configure b/sysdeps/mach/hurd/configure
index 66cc0ce3a5..537f235077 100644
--- a/sysdeps/mach/hurd/configure
+++ b/sysdeps/mach/hurd/configure
@@ -45,5 +45,3 @@ fi
 if test -n "$sysheaders"; then
   CPPFLAGS=$OLD_CPPFLAGS
 fi
-
-libc_cv_ld_gnu_indirect_function=no
diff --git a/sysdeps/mach/hurd/configure.ac b/sysdeps/mach/hurd/configure.ac
index a294dd5ea2..eab0e5b6c1 100644
--- a/sysdeps/mach/hurd/configure.ac
+++ b/sysdeps/mach/hurd/configure.ac
@@ -26,7 +26,3 @@ fi
 if test -n "$sysheaders"; then
   CPPFLAGS=$OLD_CPPFLAGS
 fi
-
-dnl ifunc does not work yet for static binaries
-dnl https://www.gnu.org/software/hurd/open_issues/ifunc.html
-libc_cv_ld_gnu_indirect_function=no
-- 
2.29.2


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-11-16 23:38 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-16 23:38 [hurd,commited 0/2] hurd: enable ifuncs Samuel Thibault
2020-11-16 23:38 ` [hurd,commited 1/2] Add {,sysdep-}ld-library-path make variable Samuel Thibault
2020-11-16 23:38 ` [hurd,commited 2/2] hurd: Enable using ifunc Samuel Thibault

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).