From 3f4f95115fd6068e798a5d625b533ecfc91a76dd Mon Sep 17 00:00:00 2001 From: Pragyansh Chaturvedi Date: Sun, 29 Mar 2026 13:28:38 +0530 Subject: [PATCH] Core: Pass compilation_context to _prepare_expr_args as it calls eval_expr --- pythonbpf/helper/printk_formatter.py | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/pythonbpf/helper/printk_formatter.py b/pythonbpf/helper/printk_formatter.py index 01a1707..3328e1a 100644 --- a/pythonbpf/helper/printk_formatter.py +++ b/pythonbpf/helper/printk_formatter.py @@ -55,12 +55,7 @@ def handle_fstring_print( for expr in exprs[:3]: arg_value = _prepare_expr_args( - expr, - func, - compilation_context.module, - builder, - local_sym_tab, - compilation_context.structs_sym_tab, + expr, func, compilation_context, builder, local_sym_tab ) args.append(arg_value) @@ -216,19 +211,19 @@ def _create_format_string_global(fmt_str, func, module, builder): return builder.bitcast(fmt_gvar, ir.PointerType()) -def _prepare_expr_args(expr, func, module, builder, local_sym_tab, struct_sym_tab): +def _prepare_expr_args(expr, func, compilation_context, builder, local_sym_tab): """Evaluate and prepare an expression to use as an arg for bpf_printk.""" # Special case: struct field char array needs pointer to first element if isinstance(expr, ast.Attribute): char_array_ptr, _ = get_char_array_ptr_and_size( - expr, builder, local_sym_tab, struct_sym_tab, func + expr, builder, local_sym_tab, compilation_context, func ) if char_array_ptr: return char_array_ptr # Regular expression evaluation - val, _ = eval_expr(func, module, builder, expr, local_sym_tab, None, struct_sym_tab) + val, _ = eval_expr(func, compilation_context, builder, expr, local_sym_tab) if not val: logger.warning("Failed to evaluate expression for bpf_printk, defaulting to 0")