Skip to content

Commit 9223d7b

Browse files
committed
Remove local_var_metadata from helpers
1 parent 3b74ade commit 9223d7b

File tree

2 files changed

+13
-49
lines changed

2 files changed

+13
-49
lines changed

pythonbpf/helper/bpf_helper_handler.py

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ def bpf_ktime_get_ns_emitter(
3030
func,
3131
local_sym_tab=None,
3232
struct_sym_tab=None,
33-
local_var_metadata=None,
3433
):
3534
"""
3635
Emit LLVM IR for bpf_ktime_get_ns helper function call.
@@ -53,7 +52,6 @@ def bpf_map_lookup_elem_emitter(
5352
func,
5453
local_sym_tab=None,
5554
struct_sym_tab=None,
56-
local_var_metadata=None,
5755
):
5856
"""
5957
Emit LLVM IR for bpf_map_lookup_elem helper function call.
@@ -89,7 +87,6 @@ def bpf_printk_emitter(
8987
func,
9088
local_sym_tab=None,
9189
struct_sym_tab=None,
92-
local_var_metadata=None,
9390
):
9491
"""Emit LLVM IR for bpf_printk helper function call."""
9592
if not hasattr(func, "_fmt_counter"):
@@ -107,7 +104,6 @@ def bpf_printk_emitter(
107104
func,
108105
local_sym_tab,
109106
struct_sym_tab,
110-
local_var_metadata,
111107
)
112108
elif isinstance(call.args[0], ast.Constant) and isinstance(call.args[0].value, str):
113109
# TODO: We are only supporting single arguments for now.
@@ -138,7 +134,6 @@ def bpf_map_update_elem_emitter(
138134
func,
139135
local_sym_tab=None,
140136
struct_sym_tab=None,
141-
local_var_metadata=None,
142137
):
143138
"""
144139
Emit LLVM IR for bpf_map_update_elem helper function call.
@@ -190,7 +185,6 @@ def bpf_map_delete_elem_emitter(
190185
func,
191186
local_sym_tab=None,
192187
struct_sym_tab=None,
193-
local_var_metadata=None,
194188
):
195189
"""
196190
Emit LLVM IR for bpf_map_delete_elem helper function call.
@@ -228,7 +222,6 @@ def bpf_get_current_pid_tgid_emitter(
228222
func,
229223
local_sym_tab=None,
230224
struct_sym_tab=None,
231-
local_var_metadata=None,
232225
):
233226
"""
234227
Emit LLVM IR for bpf_get_current_pid_tgid helper function call.
@@ -255,7 +248,6 @@ def bpf_perf_event_output_handler(
255248
func,
256249
local_sym_tab=None,
257250
struct_sym_tab=None,
258-
local_var_metadata=None,
259251
):
260252
if len(call.args) != 1:
261253
raise ValueError(
@@ -264,9 +256,7 @@ def bpf_perf_event_output_handler(
264256
data_arg = call.args[0]
265257
ctx_ptr = func.args[0] # First argument to the function is ctx
266258

267-
data_ptr, size_val = get_data_ptr_and_size(
268-
data_arg, local_sym_tab, struct_sym_tab, local_var_metadata
269-
)
259+
data_ptr, size_val = get_data_ptr_and_size(data_arg, local_sym_tab, struct_sym_tab)
270260

271261
# BPF_F_CURRENT_CPU is -1 in 32 bit
272262
flags_val = ir.Constant(ir.IntType(64), 0xFFFFFFFF)
@@ -304,7 +294,6 @@ def handle_helper_call(
304294
local_sym_tab=None,
305295
map_sym_tab=None,
306296
struct_sym_tab=None,
307-
local_var_metadata=None,
308297
):
309298
"""Process a BPF helper function call and emit the appropriate LLVM IR."""
310299

@@ -323,7 +312,6 @@ def invoke_helper(method_name, map_ptr=None):
323312
func,
324313
local_sym_tab,
325314
struct_sym_tab,
326-
local_var_metadata,
327315
)
328316

329317
# Handle direct function calls (e.g., print(), ktime())

pythonbpf/helper/helper_utils.py

Lines changed: 12 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)