[PATCH i-g-t v9 09/14] lib/igt_core: Add a dummy workaround when libunwind is not present

Jeevaka Prabu Badrappan jeevaka.badrappan at intel.com
Mon May 19 15:11:30 UTC 2025


If HAVE_LIBUNWIND is not defined, print a log message indicating
"backtrace not implemented" in the print_backtrace* functions and
return.

As xputch, xpow, printnum, xstrlcpy, xprintfmt, xprintf are used
by backtrace functions, enabled those only if HAVE_LIBUNWIND is defined.

Signed-off-by: Jeevaka Prabu Badrappan <jeevaka.badrappan at intel.com>
---
 lib/igt_core.c | 13 +++++++++++++
 meson.build    |  3 +++
 2 files changed, 16 insertions(+)

diff --git a/lib/igt_core.c b/lib/igt_core.c
index 2cea47214..679683958 100644
--- a/lib/igt_core.c
+++ b/lib/igt_core.c
@@ -86,7 +86,9 @@
 #include "runnercomms.h"
 
 #define UNW_LOCAL_ONLY
+#ifdef HAVE_LIBUNWIND
 #include <libunwind.h>
+#endif
 #include <elfutils/libdwfl.h>
 
 #ifdef HAVE_LIBGEN_H
@@ -379,6 +381,9 @@ static int _igt_dynamic_tests_executed = -1;
 
 static void print_backtrace(void)
 {
+#ifndef HAVE_LIBUNWIND
+	igt_info("backtrace not implemented\n");
+#else
 	unw_cursor_t cursor;
 	unw_context_t uc;
 	int stack_num = 0;
@@ -436,6 +441,7 @@ static void print_backtrace(void)
 
 	if (dwfl)
 		dwfl_end(dwfl);
+#endif
 }
 
 __attribute__((format(printf, 2, 3)))
@@ -2082,6 +2088,7 @@ static void write_stderr(const char *str)
 	__write_stderr(str, strlen(str));
 }
 
+#ifdef HAVE_LIBUNWIND
 static const char hex[] = "0123456789abcdef";
 
 static void
@@ -2234,9 +2241,14 @@ xprintf(const char *fmt, ...)
 	xprintfmt(fmt, ap);
 	va_end(ap);
 }
+#endif /* HAVE_LIBUNWIND */
 
 static void print_backtrace_sig_safe(void)
 {
+
+#ifndef HAVE_LIBUNWIND
+	igt_info("backtrace not implemented\n");
+#else
 	unw_cursor_t cursor;
 	unw_context_t uc;
 	int stack_num = 0;
@@ -2256,6 +2268,7 @@ static void print_backtrace_sig_safe(void)
 				(unsigned int) off);
 
 	}
+#endif
 }
 
 void __igt_fail_assert(const char *domain, const char *file, const int line,
diff --git a/meson.build b/meson.build
index 6a580bd7e..b88098234 100644
--- a/meson.build
+++ b/meson.build
@@ -147,6 +147,9 @@ else
 endif
 
 libunwind = dependency('libunwind', required : get_option('libunwind'))
+if libunwind.found()
+	config.set('HAVE_LIBUNWIND', 1)
+endif
 build_info += 'With libunwind: @0@'.format(libunwind.found())
 
 libdw = dependency('libdw', required : true)
-- 
2.49.0



More information about the igt-dev mailing list