Hi all,
When running the BCC test suite on a riscv64 Yocto build, several tests that rely on USDT probes fail because the sample probes are not embedded in the test binaries.
The tests that failed include:
cc test finding a probe in our own process
cc test find a probe in our own binary with C++ API
cc test find probes in our own binary with C++ API
cc test find a probe in our process with C++ API
cc test find a probe in our process' shared libs with C++ API
cc test uprobe refcnt semaphore activation
cc test usdt partial init with fail init_usdt
After building the test binary tests/cc/test_libbcc_no_libbpf, inspecting it with readelf shows no USDT probe notes:
$ readelf -n ./tests/cc/test_libbcc_no_libbpf | grep -A5 stapsdt
no output
On a supported architecture (e.g., x86_64) the same command would produce output similar to:
Displaying notes found in: .note.stapsdt
Owner Data size Description
stapsdt 0x00000044 NT_STAPSDT (SystemTap probe descriptors)
Provider: libbcc_test
Name: sample_probe_2
The absence of the .note.stapsdt section on riscv64 confirms that the probes were not generated.
From my analysis FOLLY_SDT macro from Facebook's Folly library is used to define the probes in bcc.
At present, Folly does not have full support for riscv64 in StaticTracepoint.h (the required architecture specific definitions are missing ). As a result, on riscv64 the FOLLY_SDT macros likely expand to nothing, and no probe information is emitted
Hi all,
When running the BCC test suite on a riscv64 Yocto build, several tests that rely on USDT probes fail because the sample probes are not embedded in the test binaries.
The tests that failed include:
cc test finding a probe in our own process
cc test find a probe in our own binary with C++ API
cc test find probes in our own binary with C++ API
cc test find a probe in our process with C++ API
cc test find a probe in our process' shared libs with C++ API
cc test uprobe refcnt semaphore activation
cc test usdt partial init with fail init_usdt
After building the test binary tests/cc/test_libbcc_no_libbpf, inspecting it with readelf shows no USDT probe notes:
$ readelf -n ./tests/cc/test_libbcc_no_libbpf | grep -A5 stapsdt
no output
On a supported architecture (e.g., x86_64) the same command would produce output similar to:
Displaying notes found in: .note.stapsdt
Owner Data size Description
stapsdt 0x00000044 NT_STAPSDT (SystemTap probe descriptors)
Provider: libbcc_test
Name: sample_probe_2
The absence of the .note.stapsdt section on riscv64 confirms that the probes were not generated.
From my analysis FOLLY_SDT macro from Facebook's Folly library is used to define the probes in bcc.
At present, Folly does not have full support for riscv64 in StaticTracepoint.h (the required architecture specific definitions are missing ). As a result, on riscv64 the FOLLY_SDT macros likely expand to nothing, and no probe information is emitted