Module Name: src
Committed By: thorpej
Date: Tue Nov 23 23:29:55 UTC 2021
Modified Files:
src/doc: HACKS
src/tests/lib/libexecinfo: Makefile t_sig_backtrace.c
Log Message:
Temporary hack to work around incorrect/missing unwind info for
the t_sig_backtrace test case on ARM when compiled with optimization.
To generate a diff of this commit:
cvs rdiff -u -r1.225 -r1.226 src/doc/HACKS
cvs rdiff -u -r1.7 -r1.8 src/tests/lib/libexecinfo/Makefile
cvs rdiff -u -r1.1 -r1.2 src/tests/lib/libexecinfo/t_sig_backtrace.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/doc/HACKS
diff -u src/doc/HACKS:1.225 src/doc/HACKS:1.226
--- src/doc/HACKS:1.225 Wed Oct 13 20:11:54 2021
+++ src/doc/HACKS Tue Nov 23 23:29:55 2021
@@ -1,4 +1,4 @@
-# $NetBSD: HACKS,v 1.225 2021/10/13 20:11:54 nia Exp $
+# $NetBSD: HACKS,v 1.226 2021/11/23 23:29:55 thorpej Exp $
#
# This file is intended to document workarounds for currently unsolved
# (mostly) compiler bugs.
@@ -1020,3 +1020,14 @@ file src/lib/libcrypt/Makefile: 1.200
descr GCC 10 fails to build blake2b.c with an internal compiler
error unless optimization is disabled.
kcah
+
+port arm
+hack compile t_sig_backtrace with -fno-omit-frame-pointer for arm
+cdate Tue Nov 23 23:24:37 UTC 2021
+mdate Tue Nov 23 23:24:37 UTC 2021
+who thorpej
+file src/tests/lib/libexecinfo/Makefile: 1.8
+file src/tests/lib/libexecinfo/t_sig_backtrace: 1.2
+descr Unit test fails to pass unless t_sig_backtrace.c is compiled
+ with -fno-omit-frame-pointer and -DNOINLINE_HACK.
+kcah
Index: src/tests/lib/libexecinfo/Makefile
diff -u src/tests/lib/libexecinfo/Makefile:1.7 src/tests/lib/libexecinfo/Makefile:1.8
--- src/tests/lib/libexecinfo/Makefile:1.7 Thu Nov 18 15:03:19 2021
+++ src/tests/lib/libexecinfo/Makefile Tue Nov 23 23:29:55 2021
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.7 2021/11/18 15:03:19 thorpej Exp $
+# $NetBSD: Makefile,v 1.8 2021/11/23 23:29:55 thorpej Exp $
.include <bsd.own.mk>
@@ -13,4 +13,10 @@ DPADD+= ${LIBEXECINFO} ${LIBELF}
COPTS.t_backtrace.c= -Wno-stack-protector
+# XXX temporary hack
+.if ${MACHINE_CPU} == "arm"
+COPTS.t_sig_backtrace.c=-fno-omit-frame-pointer
+CPPFLAGS.t_sig_backtrace.c=-DNOINLINE_HACK
+.endif
+
.include <bsd.test.mk>
Index: src/tests/lib/libexecinfo/t_sig_backtrace.c
diff -u src/tests/lib/libexecinfo/t_sig_backtrace.c:1.1 src/tests/lib/libexecinfo/t_sig_backtrace.c:1.2
--- src/tests/lib/libexecinfo/t_sig_backtrace.c:1.1 Thu Nov 18 15:03:19 2021
+++ src/tests/lib/libexecinfo/t_sig_backtrace.c Tue Nov 23 23:29:55 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: t_sig_backtrace.c,v 1.1 2021/11/18 15:03:19 thorpej Exp $ */
+/* $NetBSD: t_sig_backtrace.c,v 1.2 2021/11/23 23:29:55 thorpej Exp $ */
/*-
* Copyright (c) 2021 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__RCSID("$NetBSD: t_sig_backtrace.c,v 1.1 2021/11/18 15:03:19 thorpej Exp $");
+__RCSID("$NetBSD: t_sig_backtrace.c,v 1.2 2021/11/23 23:29:55 thorpej Exp $");
#include <sys/mman.h>
#include <execinfo.h>
@@ -51,6 +51,10 @@ char *foo;
static int the_loop(int);
+#ifdef NOINLINE_HACK
+volatile int noinline;
+#endif
+
static int __noinline
func1(int i)
{
@@ -85,6 +89,11 @@ the_loop(int i)
i = func2(i);
}
+#ifdef NOINLINE_HACK
+ if (noinline)
+ vfork();
+#endif
+
return i;
}