Skip to content

Commit b048368

Browse files
fanquakePastaPastaPasta
authored andcommitted
Merge 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#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
1 parent ab29f04 commit b048368

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
@@ -1353,13 +1353,15 @@ if test x$enable_wallet != xno; then
13531353
fi
13541354

13551355
if test x$use_ebpf != xno; then
1356-
AC_CHECK_HEADER([sys/sdt.h], [have_sdt=yes], [have_sdt=no])
1357-
else
1358-
have_sdt=no
1359-
fi
1360-
1361-
if test x$have_sdt = xyes; then
1362-
AC_DEFINE([ENABLE_TRACING], [1], [Define to 1 to enable eBPF user static defined tracepoints])
1356+
AC_MSG_CHECKING([whether eBPF tracepoints are supported])
1357+
AC_COMPILE_IFELSE([
1358+
AC_LANG_PROGRAM(
1359+
[#include <sys/sdt.h>],
1360+
[DTRACE_PROBE("context", "event");]
1361+
)],
1362+
[AC_MSG_RESULT(yes); have_sdt=yes; AC_DEFINE([ENABLE_TRACING], [1], [Define to 1 to enable eBPF user static defined tracepoints])],
1363+
[AC_MSG_RESULT(no); have_sdt=no;]
1364+
)
13631365
fi
13641366

13651367
dnl Check for libminiupnpc (optional)

0 commit comments

Comments
 (0)