The backtrace() function and execinfo.h are GNU extensions available in glibc but not in non-glibc C libraries such as musl. Building KVM selftests with musl-gcc fails with:
lib/assert.c:9:10: fatal error: execinfo.h: No such file or directory Guard the inclusion of execinfo.h under #ifdef __GLIBC__, and wrap all backtrace() usage under the same guard with a fallback message for non-glibc builds indicating that stack traces are not available. Unlike the approach of adding a weak stub for backtrace(), this explicitly handles the non-glibc case rather than silently providing an empty implementation. Link: https://lore.kernel.org/kvm/[email protected]/ Suggested-by: Aqib Faruqui <[email protected]> Signed-off-by: Hisam Mehboob <[email protected]> --- tools/testing/selftests/kvm/lib/assert.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tools/testing/selftests/kvm/lib/assert.c b/tools/testing/selftests/kvm/lib/assert.c index b49690658c60..3442b80c37c1 100644 --- a/tools/testing/selftests/kvm/lib/assert.c +++ b/tools/testing/selftests/kvm/lib/assert.c @@ -6,7 +6,9 @@ */ #include "test_util.h" +#ifdef __GLIBC__ #include <execinfo.h> +#endif #include <sys/syscall.h> #include "kselftest.h" @@ -15,6 +17,7 @@ static void __attribute__((noinline)) test_dump_stack(void); static void test_dump_stack(void) { +#ifdef __GLIBC__ /* * Build and run this command: * @@ -56,6 +59,10 @@ static void test_dump_stack(void) #pragma GCC diagnostic ignored "-Wunused-result" system(cmd); #pragma GCC diagnostic pop + +#else /* !__GLIBC__ */ + fputs(" (stack trace not available: compiled without glibc)\n", stderr); +#endif } static pid_t _gettid(void) -- 2.51.0

