On Mon, 2023-12-04 at 15:39 -0800, Andrii Nakryiko wrote: > Generalize btf_prepare_func_args() to support both global and static > subprogs. We are going to utilize this property in the next patch, > reusing btf_prepare_func_args() for subprog call logic instead of > reparsing BTF information in a completely separate implementation. > > btf_prepare_func_args() now detects whether subprog is global or static > makes slight logic adjustments for static func cases, like not failing > fatally (-EFAULT) for conditions that are allowable for static subprogs. > > Somewhat subtle (but major!) difference is the handling of pointer arguments. > Both global and static functions need to handle special context > arguments (which are pointers to predefined type names), but static > subprogs give up on any other pointers, falling back to marking subprog > as "unreliable", disabling the use of BTF type information altogether. > > For global functions, though, we are assuming that such pointers to > unrecognized types are just pointers to fixed-sized memory region (or > error out if size cannot be established, like for `void *` pointers). > > This patch accommodates these small differences and sets up a stage for > refactoring in the next patch, eliminating a separate BTF-based parsing > logic in btf_check_func_arg_match(). > > Signed-off-by: Andrii Nakryiko <andrii@xxxxxxxxxx> > --- Acked-by: Eduard Zingerman <eddyz87@xxxxxxxxx>