diff options
Diffstat (limited to 'elf/Makefile')
-rw-r--r-- | elf/Makefile | 71 |
1 files changed, 66 insertions, 5 deletions
diff --git a/elf/Makefile b/elf/Makefile index a494b14519..db10541829 100644 --- a/elf/Makefile +++ b/elf/Makefile @@ -61,7 +61,8 @@ elide-routines.os = $(all-dl-routines) dl-support enbl-secure dl-origin \ # ld.so uses those routines, plus some special stuff for being the program # interpreter and operating independent of libc. rtld-routines = rtld $(all-dl-routines) dl-sysdep dl-environ dl-minimal \ - dl-error-minimal dl-conflict dl-hwcaps dl-usage + dl-error-minimal dl-conflict dl-hwcaps dl-hwcaps_split dl-hwcaps-subdirs \ + dl-usage all-rtld-routines = $(rtld-routines) $(sysdep-rtld-routines) CFLAGS-dl-runtime.c += -fexceptions -fasynchronous-unwind-tables @@ -212,14 +213,14 @@ tests += restest1 preloadtest loadfail multiload origtest resolvfail \ tst-filterobj tst-filterobj-dlopen tst-auxobj tst-auxobj-dlopen \ tst-audit14 tst-audit15 tst-audit16 \ tst-single_threaded tst-single_threaded-pthread \ - tst-tls-ie tst-tls-ie-dlmopen \ - argv0test + tst-tls-ie tst-tls-ie-dlmopen argv0test \ + tst-glibc-hwcaps tst-glibc-hwcaps-prepend tst-glibc-hwcaps-mask # reldep9 tests-internal += loadtest unload unload2 circleload1 \ neededtest neededtest2 neededtest3 neededtest4 \ tst-tls3 tst-tls6 tst-tls7 tst-tls8 tst-dlmopen2 \ tst-ptrguard1 tst-stackguard1 tst-libc_dlvsym \ - tst-create_format1 tst-tls-surplus + tst-create_format1 tst-tls-surplus tst-dl-hwcaps_split tests-container += tst-pldd tst-dlopen-tlsmodid-container \ tst-dlopen-self-container test-srcs = tst-pathopt @@ -331,7 +332,10 @@ modules-names = testobj1 testobj2 testobj3 testobj4 testobj5 testobj6 \ tst-single_threaded-mod3 tst-single_threaded-mod4 \ tst-tls-ie-mod0 tst-tls-ie-mod1 tst-tls-ie-mod2 \ tst-tls-ie-mod3 tst-tls-ie-mod4 tst-tls-ie-mod5 \ - tst-tls-ie-mod6 + tst-tls-ie-mod6 libmarkermod1-1 libmarkermod1-2 libmarkermod1-3 \ + libmarkermod2-1 libmarkermod2-2 \ + libmarkermod3-1 libmarkermod3-2 libmarkermod3-3 \ + libmarkermod4-1 libmarkermod4-2 libmarkermod4-3 libmarkermod4-4 \ # Most modules build with _ISOMAC defined, but those filtered out # depend on internal headers. @@ -1814,3 +1818,60 @@ $(objpfx)argv0test.out: tst-rtld-argv0.sh $(objpfx)ld.so \ '$(test-wrapper-env)' '$(run_program_env)' \ '$(rpath-link)' 'test-argv0' > $@; \ $(evaluate-test) + +# A list containing the name of the most likely searched subdirectory +# of the glibc-hwcaps directory, for each supported architecture (in +# other words, the oldest hardware level recognized by the +# glibc-hwcaps mechanism for this architecture). Used to obtain test +# coverage for some glibc-hwcaps tests for the widest possible range +# of systems. +glibc-hwcaps-first-subdirs-for-tests = + +# The test modules are parameterized by preprocessor macros. +LDFLAGS-libmarkermod1-1.so += -Wl,-soname,libmarkermod1.so +LDFLAGS-libmarkermod2-1.so += -Wl,-soname,libmarkermod2.so +LDFLAGS-libmarkermod3-1.so += -Wl,-soname,libmarkermod3.so +LDFLAGS-libmarkermod4-1.so += -Wl,-soname,libmarkermod4.so +$(objpfx)libmarkermod%.os : markermodMARKER-VALUE.c + $(compile-command.c) \ + -DMARKER=marker$(firstword $(subst -, ,$*)) \ + -DVALUE=$(lastword $(subst -, ,$*)) +$(objpfx)libmarkermod1.so: $(objpfx)libmarkermod1-1.so + cp $< $@ +$(objpfx)libmarkermod2.so: $(objpfx)libmarkermod2-1.so + cp $< $@ +$(objpfx)libmarkermod3.so: $(objpfx)libmarkermod3-1.so + cp $< $@ +$(objpfx)libmarkermod4.so: $(objpfx)libmarkermod4-1.so + cp $< $@ + +# tst-glibc-hwcaps-prepend checks that --glibc-hwcaps-prepend is +# preferred over auto-detected subdirectories. +$(objpfx)tst-glibc-hwcaps-prepend: $(objpfx)libmarkermod1-1.so +$(objpfx)glibc-hwcaps/prepend-markermod1/libmarkermod1.so: \ + $(objpfx)libmarkermod1-2.so + $(make-target-directory) + cp $< $@ +$(objpfx)glibc-hwcaps/%/libmarkermod1.so: $(objpfx)libmarkermod1-3.so + $(make-target-directory) + cp $< $@ +$(objpfx)tst-glibc-hwcaps-prepend.out: \ + $(objpfx)tst-glibc-hwcaps-prepend $(objpfx)libmarkermod1.so \ + $(patsubst %,$(objpfx)glibc-hwcaps/%/libmarkermod1.so,prepend-markermod1 \ + $(glibc-hwcaps-first-subdirs-for-tests)) + $(test-wrapper) $(rtld-prefix) \ + --glibc-hwcaps-prepend prepend-markermod1 \ + $< > $@; \ + $(evaluate-test) + +# 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 +$(objpfx)tst-glibc-hwcaps-mask.out: \ + $(objpfx)tst-glibc-hwcaps-mask $(objpfx)libmarkermod1.so \ + $(patsubst %,$(objpfx)glibc-hwcaps/%/libmarkermod1.so,\ + $(glibc-hwcaps-first-subdirs-for-tests)) + $(test-wrapper) $(rtld-prefix) \ + --glibc-hwcaps-mask does-not-exist \ + $< > $@; \ + $(evaluate-test) |