Skip to content

Commit d7427f3

Browse files
committed
Fix usage of local_sym_tab in expr_pass
1 parent 0142381 commit d7427f3

File tree

2 files changed

+8
-9
lines changed

2 files changed

+8
-9
lines changed

pythonbpf/expr_pass.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ def eval_expr(
1414
print(f"Evaluating expression: {ast.dump(expr)}")
1515
if isinstance(expr, ast.Name):
1616
if expr.id in local_sym_tab:
17-
var = local_sym_tab[expr.id][0]
17+
var = local_sym_tab[expr.id].var
1818
val = builder.load(var)
19-
return val, local_sym_tab[expr.id][1] # return value and type
19+
return val, local_sym_tab[expr.id].ir_type # return value and type
2020
else:
2121
print(f"Undefined variable {expr.id}")
2222
return None
@@ -49,7 +49,7 @@ def eval_expr(
4949
return None
5050
if isinstance(arg, ast.Name):
5151
if arg.id in local_sym_tab:
52-
arg = local_sym_tab[arg.id][0]
52+
arg = local_sym_tab[arg.id].var
5353
else:
5454
print(f"Undefined variable {arg.id}")
5555
return None
@@ -58,7 +58,7 @@ def eval_expr(
5858
return None
5959
# Since we are handling only name case, directly take type from sym tab
6060
val = builder.load(arg)
61-
return val, local_sym_tab[expr.args[0].id][1]
61+
return val, local_sym_tab[expr.args[0].id].ir_type
6262

6363
# check for helpers
6464
if HelperHandlerRegistry.has_handler(expr.func.id):
@@ -106,10 +106,10 @@ def eval_expr(
106106
var_name = expr.value.id
107107
attr_name = expr.attr
108108
if var_name in local_sym_tab:
109-
var_ptr, var_type = local_sym_tab[var_name]
110-
print(f"Loading attribute " f"{attr_name} from variable {var_name}")
109+
var_ptr, var_type, var_metadata = local_sym_tab[var_name]
110+
print(f"Loading attribute {attr_name} from variable {var_name}")
111111
print(f"Variable type: {var_type}, Variable ptr: {var_ptr}")
112-
metadata = structs_sym_tab[local_sym_tab[var_name].metadata]
112+
metadata = structs_sym_tab[var_metadata]
113113
if attr_name in metadata.fields:
114114
gep = metadata.gep(builder, var_ptr, attr_name)
115115
val = builder.load(gep)

pythonbpf/functions_pass.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ def handle_assign(
6161
struct_info = structs_sym_tab[struct_type]
6262
if field_name in struct_info.fields:
6363
field_ptr = struct_info.gep(
64-
builder, local_sym_tab[var_name][0], field_name
64+
builder, local_sym_tab[var_name].var, field_name
6565
)
6666
val = eval_expr(
6767
func,
@@ -106,7 +106,6 @@ def handle_assign(
106106
builder.store(
107107
ir.Constant(ir.IntType(64), rval.value), local_sym_tab[var_name].var
108108
)
109-
# local_sym_tab[var_name] = var
110109
print(f"Assigned constant {rval.value} to {var_name}")
111110
elif isinstance(rval.value, str):
112111
str_val = rval.value.encode("utf-8") + b"\x00"

0 commit comments

Comments
 (0)