oracle / dtrace-utils

DTrace-utils contains the DTrace port to Linux
Other
152 stars 20 forks source link

"indirect call in function, which are not supported by eBPF" (build failing on Debian Bookworm 12.5.0) #110

Open blak3mill3r opened 2 weeks ago

blak3mill3r commented 2 weeks ago

I installed libbpf-dev (without which the build failed because of not finding bpf/bpf_helpers.h)

./configure BPFC=bpf-gcc BPFLD=bpf-ld
make BPFC=bpf-gcc BPFLD=bpf-ld

It successfully compiles quite a bit of c, but eventually runs into this eBPF limitation about indirect calls:

CC: libproc/elfish_32.c
CC: libproc/Psymtab.c
CC: libproc/rtld_db.c
CC: libproc/rtld_offsets.c
CC: libproc/wrap.c
CC: libproc/isadep_dispatch.c
CC: libproc/i386/isadep.c
BUILD-AR: libproc.a
CC: test/triggers/libproc-dlmlib.c
BUILD-AR: libproc-dlmlib.a
CC: test/triggers/libproc-lookup-victim-lib.c
BUILD-AR: libproc-lookup-victim-lib.a
AR: libcommon.a
AR: libport.a
AR: libproc.a
SHLINK: libdtrace.so
SHLINK: libproc-dlmlib.so
SHLINK: libproc-lookup-victim-lib.so
bpf/get_bvar.c: In function ‘dt_get_bvar’:
bpf/get_bvar.c:212:1: error: indirect call in function, which are not supported by eBPF
  212 | }
      | ^
bpf/get_bvar.c:212:1: error: indirect call in function, which are not supported by eBPF
BPF-CC: bpf/agg_lqbin.c
BPF-CC: bpf/agg_qbin.c
BPF-CC: bpf/basename.S
BPF-CC: bpf/cleanpath.S
BPF-CC: bpf/dirname.S
BPF-CC: bpf/get_agg.c
bpf/get_agg.c: In function ‘dt_no_agg’:
bpf/get_agg.c:33:1: error: indirect call in function, which are not supported by eBPF
   33 | }
      | ^
make: *** [Makerules:23: /home/blake/try/dtrace-utils/build/bpf--get_agg.o] Error 1

I tried this with the latest commit in devel and also with the tag 2.0.1.1 with the same result.

Any guidance would be appreciated.

thesamesam commented 2 weeks ago

I suspect that gcc-bpf (maybe binutils-bpf too?) is too old in Debian Bookworm. It looks like it's currently at 12.2.0-14+4 but Trixie is at 14.2.0-1+1.

Will see what others say though. It might be we can get a backport done for Debian, I am not sure.