@@ -100,7 +100,6 @@ def handle_fstring_print(
100100 func ,
101101 local_sym_tab = None ,
102102 struct_sym_tab = None ,
103- local_var_metadata = None ,
104103):
105104 """Handle f-string formatting for bpf_printk emitter."""
106105 fmt_parts = []
@@ -118,7 +117,6 @@ def handle_fstring_print(
118117 exprs ,
119118 local_sym_tab ,
120119 struct_sym_tab ,
121- local_var_metadata ,
122120 )
123121 else :
124122 raise NotImplementedError (f"Unsupported f-string value type: { type (value )} " )
@@ -138,7 +136,6 @@ def handle_fstring_print(
138136 builder ,
139137 local_sym_tab ,
140138 struct_sym_tab ,
141- local_var_metadata ,
142139 )
143140 args .append (arg_value )
144141
@@ -158,9 +155,7 @@ def _process_constant_in_fstring(cst, fmt_parts, exprs):
158155 )
159156
160157
161- def _process_fval (
162- fval , fmt_parts , exprs , local_sym_tab , struct_sym_tab , local_var_metadata
163- ):
158+ def _process_fval (fval , fmt_parts , exprs , local_sym_tab , struct_sym_tab ):
164159 """Process formatted values in f-string."""
165160 logger .debug (f"Processing formatted value: { ast .dump (fval )} " )
166161
@@ -173,7 +168,6 @@ def _process_fval(
173168 exprs ,
174169 local_sym_tab ,
175170 struct_sym_tab ,
176- local_var_metadata ,
177171 )
178172 else :
179173 raise NotImplementedError (
@@ -188,9 +182,7 @@ def _process_name_in_fval(name_node, fmt_parts, exprs, local_sym_tab):
188182 _populate_fval (var_type , name_node , fmt_parts , exprs )
189183
190184
191- def _process_attr_in_fval (
192- attr_node , fmt_parts , exprs , local_sym_tab , struct_sym_tab , local_var_metadata
193- ):
185+ def _process_attr_in_fval (attr_node , fmt_parts , exprs , local_sym_tab , struct_sym_tab ):
194186 """Process attribute nodes in formatted values."""
195187 if (
196188 isinstance (attr_node .value , ast .Name )
@@ -200,12 +192,7 @@ def _process_attr_in_fval(
200192 var_name = attr_node .value .id
201193 field_name = attr_node .attr
202194
203- if not local_var_metadata or var_name not in local_var_metadata :
204- raise ValueError (
205- f"Metadata for '{ var_name } ' not found in local var metadata"
206- )
207-
208- var_type = local_var_metadata [var_name ]
195+ var_type = local_sym_tab [var_name ].metadata
209196 if var_type not in struct_sym_tab :
210197 raise ValueError (
211198 f"Struct '{ var_type } ' for '{ var_name } ' not in symbol table"
@@ -263,9 +250,7 @@ def _create_format_string_global(fmt_str, func, module, builder):
263250 return builder .bitcast (fmt_gvar , ir .PointerType ())
264251
265252
266- def _prepare_expr_args (
267- expr , func , module , builder , local_sym_tab , struct_sym_tab , local_var_metadata
268- ):
253+ def _prepare_expr_args (expr , func , module , builder , local_sym_tab , struct_sym_tab ):
269254 """Evaluate and prepare an expression to use as an arg for bpf_printk."""
270255 val , _ = eval_expr (
271256 func ,
@@ -275,7 +260,6 @@ def _prepare_expr_args(
275260 local_sym_tab ,
276261 None ,
277262 struct_sym_tab ,
278- local_var_metadata ,
279263 )
280264
281265 if val :
@@ -298,7 +282,7 @@ def _prepare_expr_args(
298282 return ir .Constant (ir .IntType (64 ), 0 )
299283
300284
301- def get_data_ptr_and_size (data_arg , local_sym_tab , struct_sym_tab , local_var_metadata ):
285+ def get_data_ptr_and_size (data_arg , local_sym_tab , struct_sym_tab ):
302286 """Extract data pointer and size information for perf event output."""
303287 if isinstance (data_arg , ast .Name ):
304288 data_name = data_arg .id
@@ -310,22 +294,14 @@ def get_data_ptr_and_size(data_arg, local_sym_tab, struct_sym_tab, local_var_met
310294 )
311295
312296 # Check if data_name is a struct
313- if local_var_metadata and data_name in local_var_metadata :
314- data_type = local_var_metadata [data_name ]
315- if data_type in struct_sym_tab :
316- struct_info = struct_sym_tab [data_type ]
317- size_val = ir .Constant (ir .IntType (64 ), struct_info .size )
318- return data_ptr , size_val
319- else :
320- raise ValueError (
321- f"Struct { data_type } for { data_name } not in symbol table."
322- )
297+ data_type = local_sym_tab [data_name ].metadata
298+ if data_type in struct_sym_tab :
299+ struct_info = struct_sym_tab [data_type ]
300+ size_val = ir .Constant (ir .IntType (64 ), struct_info .size )
301+ return data_ptr , size_val
323302 else :
324- raise ValueError (
325- f"Metadata for variable { data_name } "
326- "not found in local variable metadata."
327- )
303+ raise ValueError (f"Struct { data_type } for { data_name } not in symbol table." )
328304 else :
329305 raise NotImplementedError (
330- "Only simple object names are supported " " as data in perf event output."
306+ "Only simple object names are supported as data in perf event output."
331307 )
0 commit comments