Use StructType in struct_pass, fix indexing

This commit is contained in:
Pragyansh Chaturvedi
2025-09-30 00:43:26 +05:30
parent 84500305db
commit 4557b094e1
2 changed files with 6 additions and 8 deletions

View File

@ -8,7 +8,7 @@ class StructType:
self.size = size self.size = size
def field_idx(self, field_name): def field_idx(self, field_name):
return self.fields.keys().index(field_name) return list(self.fields.keys()).index(field_name)
def field_type(self, field_name): def field_type(self, field_name):
return self.fields[field_name] return self.fields[field_name]

View File

@ -2,6 +2,7 @@ import ast
import logging import logging
from llvmlite import ir from llvmlite import ir
from .type_deducer import ctypes_to_ir from .type_deducer import ctypes_to_ir
from .struct_type import StructType
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -35,14 +36,11 @@ def process_bpf_struct(cls_node, module):
""" Process a single BPF struct definition """ """ Process a single BPF struct definition """
fields = parse_struct_fields(cls_node) fields = parse_struct_fields(cls_node)
total_size = calc_struct_size(fields.values()) field_types = list(fields.values())
struct_type = ir.LiteralStructType(fields.values()) total_size = calc_struct_size(field_types)
struct_type = ir.LiteralStructType(field_types)
logger.info(f"Created struct {cls_node.name} with fields {fields.keys()}") logger.info(f"Created struct {cls_node.name} with fields {fields.keys()}")
return { return StructType(struct_type, fields, total_size)
"type": struct_type,
"fields": fields,
"size": total_size,
}
def parse_struct_fields(cls_node): def parse_struct_fields(cls_node):