From 9b4ef23a62acadb421f50b5d4be32dfa2141b7dd Mon Sep 17 00:00:00 2001 From: varun-r-mallya Date: Wed, 3 Sep 2025 18:46:46 +0530 Subject: [PATCH] Comment out non string based decorator to decide later and also make changes to decorator adding a "section" --- examples/execve.py | 6 ++++-- pythonbpf/decorators.py | 29 ++++++++++++++++++----------- pythonbpf/globals_pass.py | 5 +++-- 3 files changed, 25 insertions(+), 15 deletions(-) diff --git a/examples/execve.py b/examples/execve.py index 644c84e..c417fa1 100644 --- a/examples/execve.py +++ b/examples/execve.py @@ -1,11 +1,13 @@ -from pythonbpf.decorators import tracepoint, syscalls +from pythonbpf.decorators import section +# from pythonbpf.decorators import tracepoint, syscalls from ctypes import c_void_p, c_int32 #This is a test function def test_function(): print("test_function called") -@tracepoint(syscalls.sys_enter_execve) +# @tracepoint(syscalls.sys_enter_execve) +@section("tracepoint/syscalls/sys_enter_execve") def trace_execve(ctx: c_void_p) -> c_int32: print("execve called") print("execve2 called") diff --git a/pythonbpf/decorators.py b/pythonbpf/decorators.py index 2bba8bc..6e7a618 100644 --- a/pythonbpf/decorators.py +++ b/pythonbpf/decorators.py @@ -1,14 +1,21 @@ -from types import SimpleNamespace - -syscalls = SimpleNamespace( - sys_enter_execve="syscalls:sys_enter_execve", - sys_exit_execve="syscalls:sys_exit_execve", - sys_clone="syscalls:sys_clone", -) - - -def tracepoint(name: str): +def section(name: str): def wrapper(fn): - fn._section = f"tracepoint/{name}" + fn._section = name return fn return wrapper + +# from types import SimpleNamespace + +# syscalls = SimpleNamespace( +# sys_enter_execve="syscalls:sys_enter_execve", +# sys_exit_execve="syscalls:sys_exit_execve", +# sys_clone="syscalls:sys_clone", +# ) + + +# def tracepoint(name: str): +# def wrapper(fn): +# fn._section = f"tracepoint/{name}" +# fn._section = name +# return fn +# return wrapper diff --git a/pythonbpf/globals_pass.py b/pythonbpf/globals_pass.py index 41da7f4..22413cc 100644 --- a/pythonbpf/globals_pass.py +++ b/pythonbpf/globals_pass.py @@ -33,9 +33,10 @@ def globals_processing(tree, module: ir.Module): if ( isinstance(dec, ast.Call) and isinstance(dec.func, ast.Name) + and dec.func.id == "section" and len(dec.args) == 1 - and isinstance(dec.args[0], ast.Attribute) - and isinstance(dec.args[0].value, ast.Name) + and isinstance(dec.args[0], ast.Constant) + and isinstance(dec.args[0].value, str) ): collected.append(node.name)