diff options
| author | Andreas K. Hüttel <dilfridge@gentoo.org> | 2025-01-22 13:28:18 +0100 |
|---|---|---|
| committer | Andreas K. Hüttel <dilfridge@gentoo.org> | 2025-02-08 17:05:06 +0100 |
| commit | ff79b154b0c25d0dd51ee00ca2800d0e33cb8a89 (patch) | |
| tree | 8d3b1f9e5d37102b140b63fd22517dcb03f1f825 | |
| parent | cdb0800022110bc68a033944f09e501be5bd72d7 (diff) | |
| download | glibc-ff79b154b0c25d0dd51ee00ca2800d0e33cb8a89.tar.xz glibc-ff79b154b0c25d0dd51ee00ca2800d0e33cb8a89.zip | |
Makeconfig: Add libgcc directory to rtld-prefix search path
* This needs to be done twice, for test runs with and without
--enable-hardcoded-path-in-tests
* Also, we need to query the used $(CC) for the library location.
* The container tests run ldd and dump the list of needed libraries, then
copy these into the container.
* Without this patch, ldd may not find libgcc_s.so, resulting in"not found"
output and no copying of the library.
* With this patch, the library is picked up independent of its location (as
long as the proper directory is provided) and copied into the testroot.
* This does not mean yet that ld.so in the testroot actually finds it.
Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
| -rw-r--r-- | Makeconfig | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/Makeconfig b/Makeconfig index d0108d2caa..0820f860b2 100644 --- a/Makeconfig +++ b/Makeconfig @@ -635,7 +635,7 @@ link-libc-printers-tests = $(link-libc-rpath) \ # This is how to find at build-time things that will be installed there. rpath-dirs = math elf dlfcn nss nis rt resolv mathvec support rpath-link = \ -$(common-objdir):$(subst $(empty) ,:,$(patsubst ../$(subdir),.,$(rpath-dirs:%=$(common-objpfx)%))) +$(common-objdir):$(subst $(empty) ,:,$(patsubst ../$(subdir),.,$(rpath-dirs:%=$(common-objpfx)%))):$(gnulib-extralibdir) else # build-static link-libc = $(common-objpfx)libc.a $(otherlibs) $(gnulib) $(common-objpfx)libc.a $(gnulib) link-libc-tests = $(common-objpfx)libc.a $(otherlibs) $(gnulib-tests) $(common-objpfx)libc.a $(gnulib-tests) @@ -692,6 +692,11 @@ link-libc-static-tests = -Wl,--start-group $(common-objpfx)libc.a $(static-gnuli # some cases and it is preferable to link with libgcc_eh or libgcc_s # so that the testing is as similar as possible to how programs will # be built with the installed glibc. +# This leads to moderate difficulties, also since distributions may +# install libgcc_s.so in directories only found via ld.so.conf, e.g. +# to be able to switch between gcc versions. We need to add the +# corresponding directory to the library search path to make sure +# our test programs can find it. # # Some architectures have architecture-specific systems for exception # handling that may involve undefined references to @@ -709,6 +714,7 @@ libgcc_eh := -Wl,--as-needed -lgcc_s $(libunwind) -Wl,--no-as-needed gnulib-arch = gnulib = -lgcc $(gnulib-arch) gnulib-tests := -lgcc $(libgcc_eh) +gnulib-extralibdir := $(shell dirname $$($(CC) -print-file-name=libgcc_s.so$(libgcc_s.so-version))) static-gnulib-arch = # By default, elf/static-stubs.o, instead of -lgcc_eh, is used to # statically link programs. When --disable-shared is used, we use @@ -781,10 +787,12 @@ endif # How to run a program we just linked with our library. # The program binary is assumed to be $(word 2,$^). +# We may require additional libraries from gcc (e.g. libgcc_s.so for exception +# handling), which unfortunately somewhat breaks the isolation. built-program-file = $(dir $(word 2,$^))$(notdir $(word 2,$^)) rtld-prefix = $(elf-objpfx)$(rtld-installed-name) \ --library-path \ - $(rpath-link)$(patsubst %,:%,$(sysdep-library-path)) + $(rpath-link)$(patsubst %,:%,$(sysdep-library-path)):$(gnulib-extralibdir) ifeq (yes,$(build-shared)) comma = , sysdep-library-path = \ |
