diff options
author | Florian Weimer <fweimer@redhat.com> | 2020-12-04 09:13:43 +0100 |
---|---|---|
committer | Florian Weimer <fweimer@redhat.com> | 2020-12-04 09:35:43 +0100 |
commit | 600d9e0c87940da9b0fdeff492bf888df852d40c (patch) | |
tree | 747a7d39be81da06ecab9311e3f9e8a4a2726e3c /elf/Makefile | |
parent | b44ac4f4c7a8bbe5eaa2701aa9452eaf2c96e1dd (diff) | |
download | glibc-600d9e0c87940da9b0fdeff492bf888df852d40c.tar glibc-600d9e0c87940da9b0fdeff492bf888df852d40c.tar.gz glibc-600d9e0c87940da9b0fdeff492bf888df852d40c.tar.bz2 glibc-600d9e0c87940da9b0fdeff492bf888df852d40c.zip |
elf: Add glibc-hwcaps subdirectory support to ld.so cache processing
This recognizes the DL_CACHE_HWCAP_EXTENSION flag in cache entries,
and picks the supported cache entry with the highest priority.
The elf/tst-glibc-hwcaps-prepend-cache test documents a non-desired
aspect of the current cache implementation: If the cache selects a DSO
that does not exist on disk, _dl_map_object falls back to open_path,
which may or may not find an alternative implementation. This is an
existing limitation that also applies to the legacy hwcaps processing
for ld.so.cache.
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Diffstat (limited to 'elf/Makefile')
-rw-r--r-- | elf/Makefile | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/elf/Makefile b/elf/Makefile index b28930432d..95cbf66c25 100644 --- a/elf/Makefile +++ b/elf/Makefile @@ -173,6 +173,12 @@ tests-container := \ tst-ldconfig-bad-aux-cache \ tst-ldconfig-ld_so_conf-update +ifeq (no,$(build-hardcoded-path-in-tests)) +# This is an ld.so.cache test, and RPATH/RUNPATH in the executable +# interferes with its test objectives. +tests-container += tst-glibc-hwcaps-prepend-cache +endif + tests := tst-tls9 tst-leaks1 \ tst-array1 tst-array2 tst-array3 tst-array4 tst-array5 \ tst-auxv tst-stringtable @@ -1865,6 +1871,14 @@ $(objpfx)tst-glibc-hwcaps-prepend.out: \ $< > $@; \ $(evaluate-test) +# Like tst-glibc-hwcaps-prepend, but uses a container and loads the +# library via ld.so.cache. Test setup is contained in the test +# itself. +$(objpfx)tst-glibc-hwcaps-prepend-cache: $(libdl) +$(objpfx)tst-glibc-hwcaps-prepend-cache.out: \ + $(objpfx)tst-glibc-hwcaps-prepend-cache $(objpfx)libmarkermod1-1.so \ + $(objpfx)libmarkermod1-2.so $(objpfx)libmarkermod1-3.so + # tst-glibc-hwcaps-mask checks that --glibc-hwcaps-mask can be used to # suppress all auto-detected subdirectories. $(objpfx)tst-glibc-hwcaps-mask: $(objpfx)libmarkermod1-1.so @@ -1876,3 +1890,7 @@ $(objpfx)tst-glibc-hwcaps-mask.out: \ --glibc-hwcaps-mask does-not-exist \ $< > $@; \ $(evaluate-test) + +# Generic dependency for sysdeps implementation of +# tst-glibc-hwcaps-cache. +$(objpfx)tst-glibc-hwcaps-cache.out: $(objpfx)tst-glibc-hwcaps |