From 0c1acf1420658249a92ac71abf35c1dba9f17cf8 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 +++++++++++++------------- pythonbpf/functions_pass.py | 2 +- 2 files changed, 14 insertions(+), 14 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") diff --git a/pythonbpf/functions_pass.py b/pythonbpf/functions_pass.py index 7b3a95d..fc3ddc3 100644 --- a/pythonbpf/functions_pass.py +++ b/pythonbpf/functions_pass.py @@ -674,7 +674,7 @@ def infer_return_type(func_node: ast.FunctionDef): if found_type is None: found_type = t elif found_type != t: - raise ValueError(f"Conflicting return types:{found_type} vs {t}") + raise ValueError(f"Conflicting return types: {found_type} vs {t}") return found_type or "None"