On Tue, 19 May 2026 13:28:30 -0400 Steven Rostedt <[email protected]> wrote:
> On Tue, 19 May 2026 13:01:44 -0400 > Steven Rostedt <[email protected]> wrote: > > > @@ -636,11 +694,12 @@ static int parse_btf_arg(char *varname, > > struct fetch_insn *code = *pcode; > > const struct btf_param *params; > > const struct btf_type *type; > > + struct btf *btf = ctx_btf(ctx); > > char *field = NULL; > > int i, is_ptr, ret; > > u32 tid; > > > > - if (WARN_ON_ONCE(!ctx->funcname)) > > + if (WARN_ON_ONCE(!ctx->funcname && !(ctx->flags & TPARG_FL_TYPECAST))) > > return -EINVAL; > > > > is_ptr = split_next_field(varname, &field, ctx); > > @@ -653,6 +712,14 @@ static int parse_btf_arg(char *varname, > > return -EOPNOTSUPP; > > } > > > > + if (ctx->flags & TPARG_FL_TEVENT) { > > + int ret; > > + > > + ret = parse_trace_event(varname, code, ctx); > > + if (ret < 0) > > + return ret; Actually, since typecasting is currently only for eprobes, I'm going to shuffle the code around a bit to only have the TYPECAST affect TEVENT, and do the jump to found_type from here. -- Steve > > + } > > + > > if (ctx->flags & TPARG_FL_RETURN && !strcmp(varname, "$retval")) { > > code->op = FETCH_OP_RETVAL; > > /* Check whether the function return type is not void */ > > @@ -672,7 +739,7 @@ static int parse_btf_arg(char *varname, > > return 0; > > } > > > > - if (!ctx->btf) { > > + if (!btf) { > > ret = query_btf_context(ctx); > > Oops, need a: > > btf = ctx->btf; > > here! > > -- Steve > > > if (ret < 0 || ctx->nr_params == 0) { > > trace_probe_log_err(ctx->offset, NO_BTF_ENTRY);
