mirror of
https://github.com/varun-r-mallya/Python-BPF.git
synced 2026-03-28 16:11:27 +00:00
Add docstrings to core modules and helper functions
Co-authored-by: varun-r-mallya <100590632+varun-r-mallya@users.noreply.github.com>
This commit is contained in:
@ -12,6 +12,16 @@ global_sym_tab = []
|
||||
|
||||
|
||||
def populate_global_symbol_table(tree, module: ir.Module):
|
||||
"""
|
||||
Populate the global symbol table with BPF functions, maps, and globals.
|
||||
|
||||
Args:
|
||||
tree: The Python AST to scan for global symbols
|
||||
module: The LLVM IR module (not used in current implementation)
|
||||
|
||||
Returns:
|
||||
False (legacy return value)
|
||||
"""
|
||||
for node in tree.body:
|
||||
if isinstance(node, ast.FunctionDef):
|
||||
for dec in node.decorator_list:
|
||||
@ -33,6 +43,17 @@ def populate_global_symbol_table(tree, module: ir.Module):
|
||||
|
||||
|
||||
def emit_global(module: ir.Module, node, name):
|
||||
"""
|
||||
Emit a BPF global variable into the LLVM IR module.
|
||||
|
||||
Args:
|
||||
module: The LLVM IR module to add the global variable to
|
||||
node: The AST function node containing the global definition
|
||||
name: The name of the global variable
|
||||
|
||||
Returns:
|
||||
The created global variable
|
||||
"""
|
||||
logger.info(f"global identifier {name} processing")
|
||||
# deduce LLVM type from the annotated return
|
||||
if not isinstance(node.returns, ast.Name):
|
||||
@ -117,7 +138,11 @@ def globals_processing(tree, module):
|
||||
|
||||
def emit_llvm_compiler_used(module: ir.Module, names: list[str]):
|
||||
"""
|
||||
Emit the @llvm.compiler.used global given a list of function/global names.
|
||||
Emit the @llvm.compiler.used global to prevent LLVM from optimizing away symbols.
|
||||
|
||||
Args:
|
||||
module: The LLVM IR module to add the compiler.used metadata to
|
||||
names: List of function/global names that must be preserved
|
||||
"""
|
||||
ptr_ty = ir.PointerType()
|
||||
used_array_ty = ir.ArrayType(ptr_ty, len(names))
|
||||
@ -138,6 +163,13 @@ def emit_llvm_compiler_used(module: ir.Module, names: list[str]):
|
||||
|
||||
|
||||
def globals_list_creation(tree, module: ir.Module):
|
||||
"""
|
||||
Collect all BPF symbols and emit @llvm.compiler.used metadata.
|
||||
|
||||
Args:
|
||||
tree: The Python AST to scan for symbols
|
||||
module: The LLVM IR module to add metadata to
|
||||
"""
|
||||
collected = ["LICENSE"]
|
||||
|
||||
for node in tree.body:
|
||||
|
||||
Reference in New Issue
Block a user