Skip to content

Commit 95f3600

Browse files
committed
Fix local_sym_tab accesses in binary_ops
1 parent dad57bd commit 95f3600

File tree

1 file changed

+14
-13
lines changed

1 file changed

+14
-13
lines changed

pythonbpf/binary_ops.py

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ def recursive_dereferencer(var, builder):
1515
else:
1616
raise TypeError(f"Unsupported type for dereferencing: {var.type}")
1717

18+
1819
def handle_binary_op(rval, module, builder, var_name, local_sym_tab, map_sym_tab, func):
1920
print(module)
2021
left = rval.left
@@ -24,7 +25,7 @@ def handle_binary_op(rval, module, builder, var_name, local_sym_tab, map_sym_tab
2425
# Handle left operand
2526
if isinstance(left, ast.Name):
2627
if left.id in local_sym_tab:
27-
left = recursive_dereferencer(local_sym_tab[left.id], builder)
28+
left = recursive_dereferencer(local_sym_tab[left.id][0], builder)
2829
else:
2930
raise SyntaxError(f"Undefined variable: {left.id}")
3031
elif isinstance(left, ast.Constant):
@@ -34,7 +35,7 @@ def handle_binary_op(rval, module, builder, var_name, local_sym_tab, map_sym_tab
3435

3536
if isinstance(right, ast.Name):
3637
if right.id in local_sym_tab:
37-
right = recursive_dereferencer(local_sym_tab[right.id], builder)
38+
right = recursive_dereferencer(local_sym_tab[right.id][0], builder)
3839
else:
3940
raise SyntaxError(f"Undefined variable: {right.id}")
4041
elif isinstance(right, ast.Constant):
@@ -46,36 +47,36 @@ def handle_binary_op(rval, module, builder, var_name, local_sym_tab, map_sym_tab
4647

4748
if isinstance(op, ast.Add):
4849
builder.store(builder.add(left, right),
49-
local_sym_tab[var_name])
50+
local_sym_tab[var_name][0])
5051
elif isinstance(op, ast.Sub):
5152
builder.store(builder.sub(left, right),
52-
local_sym_tab[var_name])
53+
local_sym_tab[var_name][0])
5354
elif isinstance(op, ast.Mult):
5455
builder.store(builder.mul(left, right),
55-
local_sym_tab[var_name])
56+
local_sym_tab[var_name][0])
5657
elif isinstance(op, ast.Div):
5758
builder.store(builder.sdiv(left, right),
58-
local_sym_tab[var_name])
59+
local_sym_tab[var_name][0])
5960
elif isinstance(op, ast.Mod):
6061
builder.store(builder.srem(left, right),
61-
local_sym_tab[var_name])
62+
local_sym_tab[var_name][0])
6263
elif isinstance(op, ast.LShift):
6364
builder.store(builder.shl(left, right),
64-
local_sym_tab[var_name])
65+
local_sym_tab[var_name][0])
6566
elif isinstance(op, ast.RShift):
6667
builder.store(builder.lshr(left, right),
67-
local_sym_tab[var_name])
68+
local_sym_tab[var_name][0])
6869
elif isinstance(op, ast.BitOr):
6970
builder.store(builder.or_(left, right),
70-
local_sym_tab[var_name])
71+
local_sym_tab[var_name][0])
7172
elif isinstance(op, ast.BitXor):
7273
builder.store(builder.xor(left, right),
73-
local_sym_tab[var_name])
74+
local_sym_tab[var_name][0])
7475
elif isinstance(op, ast.BitAnd):
7576
builder.store(builder.and_(left, right),
76-
local_sym_tab[var_name])
77+
local_sym_tab[var_name][0])
7778
elif isinstance(op, ast.FloorDiv):
7879
builder.store(builder.udiv(left, right),
79-
local_sym_tab[var_name])
80+
local_sym_tab[var_name][0])
8081
else:
8182
raise SyntaxError("Unsupported binary operation")

0 commit comments

Comments
 (0)