]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
SFrame: Add tests that uses DWARF backtracer
authorClaudiu Zissulescu <claudiu.zissulescu-ianculescu@oracle.com>
Mon, 14 Jul 2025 09:43:31 +0000 (12:43 +0300)
committerSam James <sam@gentoo.org>
Mon, 14 Jul 2025 09:58:00 +0000 (10:58 +0100)
When SFrame is enabled, we need to tests DW backtracer as well. Do
this by executing the same backtrace tests with .sframe section
stripped.

Signed-off-by: Claudiu Zissulescu <claudiu.zissulescu-ianculescu@oracle.com>
Reviewed-by: DJ Delorie <dj@redhat.com>
debug/Makefile

index 40201844b3114e6da52c32b41b8c9674dc284fb5..f29bd20b97273746dcffbe1423ea35950e762865 100644 (file)
@@ -278,6 +278,34 @@ LDFLAGS-tst-backtrace4 = -rdynamic
 LDFLAGS-tst-backtrace5 = -rdynamic
 LDFLAGS-tst-backtrace6 = -rdynamic
 
+# When SFrame is enabled, make sure the dwarf unwinder is also exercised.
+ifeq ($(enable-gsframe),yes)
+dw_unwind_pair := \
+  tst-backtrace7:tst-backtrace2 \
+  tst-backtrace8:tst-backtrace3 \
+  tst-backtrace9:tst-backtrace4 \
+  tst-backtrace10:tst-backtrace5 \
+  tst-backtrace11:tst-backtrace6
+
+first_column = $(foreach pair,$(dw_unwind_pair),$(word 1,$(subst :, ,$(pair))))
+tests-dw-unwind = $(patsubst %,$(objpfx)%.out,$(first_column))
+tests-special += $(tests-dw-unwind)
+endif
+
+define make-strip-rule
+$(objpfx)$(word 1,$(subst :, ,$(1))): $(objpfx)$(word 2,$(subst :, ,$(1)))
+       strip --remove-section=.sframe $$< -o $$@
+endef
+
+$(foreach pair,$(dw_unwind_pair),$(eval $(call make-strip-rule,$(pair))))
+
+define make-run-rule
+$(objpfx)$(word 1,$(subst :, ,$(1))).out: /dev/null $(objpfx)$(word 1,$(subst :, ,$(1)))
+       $$(make-test-out) > $$@; $$(evaluate-test)
+endef
+
+$(foreach pair,$(dw_unwind_pair),$(eval $(call make-run-rule,$(pair))))
+
 CFLAGS-tst-ssp-1.c += -fstack-protector-all
 
 # Disable compiler optimizations around vsprintf (the function under test).