iovisor / iovisor/bcc

BCC with some USDT probes want to use uint192_t which is not defined.

Open
#4,443 9 comments 0 reactions 1 assignee Claimed by @chenhengqi View on GitHub
bug
Dominant language
C
Stars
22.7k
Forks
4.1k
Avg merge
10d 4h
Merged PRs (30d)
3

Description

I'm trying to use a custom script with USDT probes, and it's generating the following code:

```__attribute__((always_inline))
static __always_inline int _bpf_readarg_probe__netdev_tc_flow_dump_next_exit_1(struct pt_regs *ctx, void *dest, size_t len) {
if (len != sizeof(uint192_t)) return -1;
switch(PT_REGS_IP(ctx)) {
case 0x552b3aULL: { u64 __addr = ctx->sp + 48; __asm__ __volatile__("": : :"memory"); uint192_t __res = 0x0; bpf_probe_read_user(&__res, sizeof(__res), (void *)__addr); *((uint192_t *)dest) = __res; } return 0;
case 0x552b50ULL: { u64 __addr = ctx->sp + 48; __asm__ __volatile__("": : :"memory"); uint192_t __res = 0x0; bpf_probe_read_user(&__res, sizeof(__res), (void *)__addr); *((uint192_t *)dest) = __res; } return 0;
}
return -1;
}
```

However, as uint192_t is not defined it's failing compilation:

```
Running from kernel directory at: /lib/modules/4.18.0-425.3.1.el8.x86_64/source
clang -cc1 -triple x86_64-unknown-linux-gnu -emit-llvm-bc -emit-llvm-uselists -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name main.c -mrelocation-model static -fno-jump-tables -mframe-pointer=none -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -target-cpu x86-64 -tune-cpu generic -mllvm -treat-scalable-fixed-error-as-warning -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb -fcoverage-compilation-dir=/usr/src/kernels/4.18.0-425.3.1.el8.x86_64 -nostdsysteminc -nobuiltininc -resource-dir lib64/clang/14.0.6 -isystem /virtual/lib/clang/include -include ./include/linux/kconfig.h -include /virtual/include/bcc/bpf.h -include /virtual/include/bcc/bpf_workaround.h -include /virtual/include/bcc/helpers.h -isystem /virtual/include -I /root/Documents/cases/bzXX_william_mlx -D __BPF_TRACING__ -I arch/x86/include/ -I /lib/modules/4.18.0-425.3.1.el8.x86_64/build/arch/x86/include/generated -I include -I /lib/modules/4.18.0-425.3.1.el8.x86_64/build/include -I arch/x86/include/uapi -I /lib/modules/4.18.0-425.3.1.el8.x86_64/build/arch/x86/include/generated/uapi -I include/uapi -I /lib/modules/4.18.0-425.3.1.el8.x86_64/build/include/generated/uapi -D __KERNEL__ -D KBUILD_MODNAME="bcc" -O2 -Wno-deprecated-declarations -Wno-gnu-variable-sized-type-not-at-end -Wno-pragma-once-outside-header -Wno-address-of-packed-member -Wno-unknown-warning-option -Wno-unused-value -Wno-pointer-sign -fdebug-compilation-dir=/usr/src/kernels/4.18.0-425.3.1.el8.x86_64 -ferror-limit 19 -fgnuc-version=4.2.1 -vectorize-loops -vectorize-slp -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o main.bc -x c /virtual/main.c
/virtual/main.c:107:21: error: use of undeclared identifier 'uint192_t'
if (len != sizeof(uint192_t)) return -1;
^
/virtual/main.c:109:98: error: expected ';' after expression
case 0x552b3aULL: { u64 __addr = ctx->sp + 48; __asm__ __volatile__("": : :"memory"); uint192_t __res = 0x0; bpf_probe_read_user(&__res, sizeof(__res), (void *)__addr); *((uint192_t *)dest) = __res; } return 0;
^
;
/virtual/main.c:109:89: error: use of undeclared identifier 'uint192_t'
case 0x552b3aULL: { u64 __addr = ctx->sp + 48; __asm__ __volatile__("": : :"memory"); uint192_t __res = 0x0; bpf_probe_read_user(&__res, sizeof(__res), (void *)__addr); *((uint192_t *)dest) = __res; } return 0;
```

Any idea why this is, and a way how I could fix this?

Thanks,

Eelco

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.