mirror of
https://github.com/varun-r-mallya/Python-BPF.git
synced 2026-02-12 16:10:59 +00:00
feat:user defined struct casting
This commit is contained in:
@ -114,9 +114,18 @@ def _allocate_for_call(
|
||||
# Struct constructors
|
||||
elif call_type in structs_sym_tab:
|
||||
struct_info = structs_sym_tab[call_type]
|
||||
var = builder.alloca(struct_info.ir_type, name=var_name)
|
||||
local_sym_tab[var_name] = LocalSymbol(var, struct_info.ir_type, call_type)
|
||||
logger.info(f"Pre-allocated {var_name} for struct {call_type}")
|
||||
if len(rval.args) == 0:
|
||||
# Zero-arg constructor: allocate the struct itself
|
||||
var = builder.alloca(struct_info.ir_type, name=var_name)
|
||||
local_sym_tab[var_name] = LocalSymbol(var, struct_info.ir_type, call_type)
|
||||
logger.info(f"Pre-allocated {var_name} for struct {call_type}")
|
||||
else:
|
||||
# Pointer cast: allocate as pointer to struct
|
||||
ptr_type = ir.PointerType(struct_info.ir_type)
|
||||
var = builder.alloca(ptr_type, name=var_name)
|
||||
var.align = 8
|
||||
local_sym_tab[var_name] = LocalSymbol(var, ptr_type, call_type)
|
||||
logger.info(f"Pre-allocated {var_name} for struct pointer cast to {call_type}")
|
||||
|
||||
elif VmlinuxHandlerRegistry.is_vmlinux_struct(call_type):
|
||||
# When calling struct_name(pointer), we're doing a cast, not construction
|
||||
|
||||
Reference in New Issue
Block a user