Skip to content

Commit ad0c8f3

Browse files
committed
Merge bitcoin/bitcoin#22238: build: improve detection of eBPF support
8f7704d build: improve detection of eBPF support (fanquake) Pull request description: Just checking for the `sys/sdt.h` header isn't enough, as systems like macOS have the header, but it doesn't actually have the `DTRACE_PROBE*` probes, which leads to [compile failures](bitcoin/bitcoin#22006 (comment)). The contents of `sys/sdt.h` in the macOS SDK is: ```bash #ifndef _SYS_SDT_H #define _SYS_SDT_H /* * This is a wrapper header that wraps the mach visible sdt.h header so that * the header file ends up visible where software expects it to be. We also * do the C/C++ symbol wrapping here, since Mach headers are technically C * interfaces. * * Note: The process of adding USDT probes to code is slightly different * than documented in the "Solaris Dynamic Tracing Guide". * The DTRACE_PROBE*() macros are not supported on Mac OS X -- instead see * "BUILDING CODE CONTAINING USDT PROBES" in the dtrace(1) manpage * */ #include <sys/cdefs.h> __BEGIN_DECLS #include <mach/sdt.h> __END_DECLS #endif /* _SYS_SDT_H */ ``` The `BUILDING CODE CONTAINING USDT PROBES` section from the dtrace manpage is available [here](https://gist.github.com/fanquake/e56c9866d53b326646d04ab43a8df9e2), and outlines the more involved process of using USDT probes on macOS. ACKs for top commit: jb55: utACK 8f7704d practicalswift: cr ACK 8f7704d hebasto: ACK 8f7704d, tested on macOS Big Sur 11.4 (20F71) and on Linux Mint 20.1 (x86_64) with depends. Tree-SHA512: 5f1351d0ac2e655fccb22a5454f415906404fdaa336fd89b54ef49ca50a442c44ab92d063cba3f161cb8ea0679c92ae3cd6cfbbcb19728cac21116247a017df5
2 parents 5c2e2af + 8f7704d commit ad0c8f3

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

configure.ac

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1359,13 +1359,15 @@ if test x$enable_wallet != xno; then
13591359
fi
13601360

13611361
if test x$use_ebpf != xno; then
1362-
AC_CHECK_HEADER([sys/sdt.h], [have_sdt=yes], [have_sdt=no])
1363-
else
1364-
have_sdt=no
1365-
fi
1366-
1367-
if test x$have_sdt = xyes; then
1368-
AC_DEFINE([ENABLE_TRACING], [1], [Define to 1 to enable eBPF user static defined tracepoints])
1362+
AC_MSG_CHECKING([whether eBPF tracepoints are supported])
1363+
AC_COMPILE_IFELSE([
1364+
AC_LANG_PROGRAM(
1365+
[#include <sys/sdt.h>],
1366+
[DTRACE_PROBE("context", "event");]
1367+
)],
1368+
[AC_MSG_RESULT(yes); have_sdt=yes; AC_DEFINE([ENABLE_TRACING], [1], [Define to 1 to enable eBPF user static defined tracepoints])],
1369+
[AC_MSG_RESULT(no); have_sdt=no;]
1370+
)
13691371
fi
13701372

13711373
dnl Check for libminiupnpc (optional)

0 commit comments

Comments
 (0)