> It looks to me we only need: > - register > - load_from_reg_plus_offset > - constant In that case, we can shorten the list of operators: ### | Operator Name | Operands[...] ----+------------------------+------------------------------------------- 1 | LOC_SIGNED_CONST_1 | s8: constant's value 2 | LOC_SIGNED_CONST_2 | s16: constant's value 3 | LOC_SIGNED_CONST_4 | s32: constant's value 4 | LOC_SIGNED_CONST_8 | s64: constant's value 5 | LOC_UNSIGNED_CONST_1 | u8: constant's value 6 | LOC_UNSIGNED_CONST_2 | u16: constant's value 7 | LOC_UNSIGNED_CONST_4 | u32: constant's value 8 | LOC_UNSIGNED_CONST_8 | u64: constant's value 9 | LOC_REGISTER | u8: DWARF register number from the ABI 10 | LOC_REGISTER_OFFSET | u8: DWARF register number from the ABI | s64: offset added to the register's value > register vs register_offset is another artifact of dwarf. > ... > - load_from_reg_plus_offset What is the difference between LOC_REGISTER_OFFSET and load_from_reg_plus_offset? > For fully inlined we still need callee_id otherwise bpftrace won't know > argument types. It shouldn't be hard to emit btf even for fully > inlined functions, but we need to be smart not to bloat BTF to dwarf sizes. I'll come back with an estimate for the size increase of the BTF. Have a great day, Thierry