diff options
author | Rob Norris <[email protected]> | 2024-04-27 21:35:05 +1000 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2024-05-01 10:52:00 -0700 |
commit | 2152c405ba6ab0bc9fca482e9a0a968eb35699fb (patch) | |
tree | 31a0f5f6d5d97cbfecb97a7f6520ad7f8053e6fb /config/user-backtrace.m4 | |
parent | dec697ad683ecfdf9833455af0568ce4ddc7c885 (diff) |
libspl/assert: dump backtrace in assert
Adds a check for the backtrace() function. If available, uses it to show
a stack backtrace in the assertion output.
Reviewed-by: Brian Behlendorf <[email protected]>
Signed-off-by: Rob Norris <[email protected]>
Sponsored-by: https://despairlabs.com/sponsor/
Closes #16140
Diffstat (limited to 'config/user-backtrace.m4')
-rw-r--r-- | config/user-backtrace.m4 | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/config/user-backtrace.m4 b/config/user-backtrace.m4 new file mode 100644 index 000000000..25706767c --- /dev/null +++ b/config/user-backtrace.m4 @@ -0,0 +1,14 @@ +dnl +dnl backtrace(), for userspace assertions. glibc has this directly in libc. +dnl FreeBSD and (sometimes) musl have it in a separate -lexecinfo. It's assumed +dnl that this will also get the companion function backtrace_symbols(). +dnl +AC_DEFUN([ZFS_AC_CONFIG_USER_BACKTRACE], [ + AX_SAVE_FLAGS + LIBS="" + AC_SEARCH_LIBS([backtrace], [execinfo], [ + AC_DEFINE(HAVE_BACKTRACE, 1, [backtrace() is available]) + AC_SUBST([BACKTRACE_LIBS], ["$LIBS"]) + ]) + AX_RESTORE_FLAGS +]) |