From 80c3519b954bdbf7d824eb2f2ab8c67497f96e16 Mon Sep 17 00:00:00 2001 From: Pragyansh Chaturvedi Date: Thu, 2 Oct 2025 04:58:39 +0530 Subject: [PATCH] Fix local_sym_tab usage in binary_ops --- pythonbpf/binary_ops.py | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/pythonbpf/binary_ops.py b/pythonbpf/binary_ops.py index e77938d..9138f95 100644 --- a/pythonbpf/binary_ops.py +++ b/pythonbpf/binary_ops.py @@ -25,7 +25,7 @@ def handle_binary_op(rval, module, builder, var_name, local_sym_tab, map_sym_tab # Handle left operand if isinstance(left, ast.Name): if left.id in local_sym_tab: - left = recursive_dereferencer(local_sym_tab[left.id][0], builder) + left = recursive_dereferencer(local_sym_tab[left.id].var, builder) else: raise SyntaxError(f"Undefined variable: {left.id}") elif isinstance(left, ast.Constant): @@ -35,7 +35,7 @@ def handle_binary_op(rval, module, builder, var_name, local_sym_tab, map_sym_tab if isinstance(right, ast.Name): if right.id in local_sym_tab: - right = recursive_dereferencer(local_sym_tab[right.id][0], builder) + right = recursive_dereferencer(local_sym_tab[right.id].var, builder) else: raise SyntaxError(f"Undefined variable: {right.id}") elif isinstance(right, ast.Constant): @@ -46,26 +46,26 @@ def handle_binary_op(rval, module, builder, var_name, local_sym_tab, map_sym_tab print(f"left is {left}, right is {right}, op is {op}") if isinstance(op, ast.Add): - builder.store(builder.add(left, right), local_sym_tab[var_name][0]) + builder.store(builder.add(left, right), local_sym_tab[var_name].var) elif isinstance(op, ast.Sub): - builder.store(builder.sub(left, right), local_sym_tab[var_name][0]) + builder.store(builder.sub(left, right), local_sym_tab[var_name].var) elif isinstance(op, ast.Mult): - builder.store(builder.mul(left, right), local_sym_tab[var_name][0]) + builder.store(builder.mul(left, right), local_sym_tab[var_name].var) elif isinstance(op, ast.Div): - builder.store(builder.sdiv(left, right), local_sym_tab[var_name][0]) + builder.store(builder.sdiv(left, right), local_sym_tab[var_name].var) elif isinstance(op, ast.Mod): - builder.store(builder.srem(left, right), local_sym_tab[var_name][0]) + builder.store(builder.srem(left, right), local_sym_tab[var_name].var) elif isinstance(op, ast.LShift): - builder.store(builder.shl(left, right), local_sym_tab[var_name][0]) + builder.store(builder.shl(left, right), local_sym_tab[var_name].var) elif isinstance(op, ast.RShift): - builder.store(builder.lshr(left, right), local_sym_tab[var_name][0]) + builder.store(builder.lshr(left, right), local_sym_tab[var_name].var) elif isinstance(op, ast.BitOr): - builder.store(builder.or_(left, right), local_sym_tab[var_name][0]) + builder.store(builder.or_(left, right), local_sym_tab[var_name].var) elif isinstance(op, ast.BitXor): - builder.store(builder.xor(left, right), local_sym_tab[var_name][0]) + builder.store(builder.xor(left, right), local_sym_tab[var_name].var) elif isinstance(op, ast.BitAnd): - builder.store(builder.and_(left, right), local_sym_tab[var_name][0]) + builder.store(builder.and_(left, right), local_sym_tab[var_name].var) elif isinstance(op, ast.FloorDiv): - builder.store(builder.udiv(left, right), local_sym_tab[var_name][0]) + builder.store(builder.udiv(left, right), local_sym_tab[var_name].var) else: raise SyntaxError("Unsupported binary operation")