diff --git a/pythonbpf/vmlinux_parser/ir_gen/ir_generation.py b/pythonbpf/vmlinux_parser/ir_gen/ir_generation.py index cbf7f9d..1cf3794 100644 --- a/pythonbpf/vmlinux_parser/ir_gen/ir_generation.py +++ b/pythonbpf/vmlinux_parser/ir_gen/ir_generation.py @@ -49,19 +49,22 @@ class IRGenerator: try: # Process all dependencies first - for dependency in struct.depends_on: - if dependency not in self.generated: - # Check if dependency exists in handler - if dependency in self.handler.nodes: - dep_node_from_dependency = self.handler[dependency] - # Pass the processing_stack down to track circular refs - self.struct_processor( - dep_node_from_dependency, processing_stack - ) - else: - raise RuntimeError( - f"Warning: Dependency {dependency} not found in handler" - ) + if struct.depends_on is None: + pass + else: + for dependency in struct.depends_on: + if dependency not in self.generated: + # Check if dependency exists in handler + if dependency in self.handler.nodes: + dep_node_from_dependency = self.handler[dependency] + # Pass the processing_stack down to track circular refs + self.struct_processor( + dep_node_from_dependency, processing_stack + ) + else: + raise RuntimeError( + f"Warning: Dependency {dependency} not found in handler" + ) # Actual processor logic here after dependencies are resolved self.gen_ir(struct) @@ -152,6 +155,7 @@ class IRGenerator: ) return name else: + print(self.handler[struct.name]) raise TypeError( "Name generation cannot occur due to type name not starting with struct" ) diff --git a/tests/failing_tests/xdp_pass.py b/tests/failing_tests/xdp_pass.py index 83433be..a470278 100644 --- a/tests/failing_tests/xdp_pass.py +++ b/tests/failing_tests/xdp_pass.py @@ -2,12 +2,13 @@ from pythonbpf import bpf, map, section, bpfglobal, compile_to_ir from pythonbpf.maps import HashMap from pythonbpf.helper import XDP_PASS from vmlinux import TASK_COMM_LEN # noqa: F401 -from vmlinux import struct_trace_event_raw_sys_enter # noqa: F401 -from vmlinux import struct_posix_cputimers # noqa: F401 +# from vmlinux import struct_qspinlock_0_1 +# from vmlinux import struct_trace_event_raw_sys_enter # noqa: F401 +# from vmlinux import struct_posix_cputimers # noqa: F401 from vmlinux import struct_xdp_md # from vmlinux import struct_trace_event_raw_sys_enter # noqa: F401 -from vmlinux import struct_ring_buffer_per_cpu # noqa: F401 - +# from vmlinux import struct_ring_buffer_per_cpu # noqa: F401 +from vmlinux import struct_request from ctypes import c_int64 # Instructions to how to run this program