-
Notifications
You must be signed in to change notification settings - Fork 37.7k
build: improve detection of eBPF support #22238
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Concept ACK |
1 similar comment
Concept ACK |
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 probes, which leads to compile failures.
ae46c96
to
8f7704d
Compare
utACK 8f7704d |
cr ACK 8f7704d |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ACK 8f7704d, tested on macOS Big Sur 11.4 (20F71) and on Linux Mint 20.1 (x86_64) with depends.
It would be nice to have the default value of --enable-ebpf
equal to auto
, and emit an error message when --enable-ebpf=yes
but its conditions are not met.
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
After the macOS USDT support, just checking for the `sys/sdt.h` header is enough. This partially reverts bitcoin#22238.
After the macOS USDT support, just checking for the `sys/sdt.h` header is enough. This partially reverts bitcoin#22238.
After the macOS USDT support, just checking for the `sys/sdt.h` header is enough. This partially reverts bitcoin#22238.
After the macOS USDT support, just checking for the `sys/sdt.h` header is enough. This partially reverts bitcoin#22238.
After the macOS USDT support, just checking for the `sys/sdt.h` header is enough. This partially reverts bitcoin#22238.
After the macOS USDT support, just checking for the `sys/sdt.h` header is enough. This partially reverts bitcoin#22238.
- Partially revert bitcoin#22238 as after the macOS USDT support, just checking for the `sys/sdt.h` header is enough. - Generate `util/probes.h` during build time when supported.
- Partially revert bitcoin#22238 as after the macOS USDT support, just checking for the `sys/sdt.h` header is enough. - Generate `util/probes.h` during build time when supported.
- Partially revert bitcoin#22238 as after the macOS USDT support, just checking for the `sys/sdt.h` header is enough. - Generate `util/probes.h` during build time when supported.
- Partially revert bitcoin#22238 as after the macOS USDT support, just checking for the `sys/sdt.h` header is enough. - Generate `util/probes.h` during build time when supported.
- Partially revert bitcoin#22238 as after the macOS USDT support, just checking for the `sys/sdt.h` header is enough. - Generate `util/probes.h` during build time when supported.
- Partially revert bitcoin#22238 as after the macOS USDT support, just checking for the `sys/sdt.h` header is enough. - Generate `util/probes.h` during build time when supported.
- Partially revert bitcoin#22238 as after the macOS USDT support, just checking for the `sys/sdt.h` header is enough. - Generate `util/probes.h` during build time when supported.
- Partially revert bitcoin#22238 as after the macOS USDT support, just checking for the `sys/sdt.h` header is enough. - Generate `util/probes.h` during build time when supported.
- Partially revert bitcoin#22238 as after the macOS USDT support, just checking for the `sys/sdt.h` header is enough. - Generate `util/probes.h` during build time when supported.
- Partially revert bitcoin#22238 as after the macOS USDT support, just checking for the `sys/sdt.h` header is enough. - Generate `util/probes.h` during build time when supported.
- Partially revert bitcoin#22238 as after the macOS USDT support, just checking for the `sys/sdt.h` header is enough. - Generate `util/probes.h` during build time when supported.
- Partially revert bitcoin#22238 as after the macOS USDT support, just checking for the `sys/sdt.h` header is enough. - Generate `util/probes.h` during build time when supported.
- Partially revert bitcoin#22238 as after the macOS USDT support, just checking for the `sys/sdt.h` header is enough. - Generate `util/probes.h` during build time when supported.
Just checking for the
sys/sdt.h
header isn't enough, as systems like macOS have the header, but it doesn't actually have theDTRACE_PROBE*
probes, which leads to compile failures. The contents ofsys/sdt.h
in the macOS SDK is:The
BUILDING CODE CONTAINING USDT PROBES
section from the dtrace manpage is available here, and outlines the more involved process of using USDT probes on macOS.