Skip to content

Commit 041e538

Browse files
fix errors. Does not support union name resolution yet.
1 parent 5413cc7 commit 041e538

File tree

2 files changed

+22
-17
lines changed

2 files changed

+22
-17
lines changed

pythonbpf/vmlinux_parser/ir_gen/ir_generation.py

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -49,19 +49,22 @@ def struct_processor(self, struct, processing_stack=None):
4949

5050
try:
5151
# Process all dependencies first
52-
for dependency in struct.depends_on:
53-
if dependency not in self.generated:
54-
# Check if dependency exists in handler
55-
if dependency in self.handler.nodes:
56-
dep_node_from_dependency = self.handler[dependency]
57-
# Pass the processing_stack down to track circular refs
58-
self.struct_processor(
59-
dep_node_from_dependency, processing_stack
60-
)
61-
else:
62-
raise RuntimeError(
63-
f"Warning: Dependency {dependency} not found in handler"
64-
)
52+
if struct.depends_on is None:
53+
pass
54+
else:
55+
for dependency in struct.depends_on:
56+
if dependency not in self.generated:
57+
# Check if dependency exists in handler
58+
if dependency in self.handler.nodes:
59+
dep_node_from_dependency = self.handler[dependency]
60+
# Pass the processing_stack down to track circular refs
61+
self.struct_processor(
62+
dep_node_from_dependency, processing_stack
63+
)
64+
else:
65+
raise RuntimeError(
66+
f"Warning: Dependency {dependency} not found in handler"
67+
)
6568

6669
# Actual processor logic here after dependencies are resolved
6770
self.gen_ir(struct)
@@ -152,6 +155,7 @@ def _struct_name_generator(
152155
)
153156
return name
154157
else:
158+
print(self.handler[struct.name])
155159
raise TypeError(
156160
"Name generation cannot occur due to type name not starting with struct"
157161
)

tests/failing_tests/xdp_pass.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@
22
from pythonbpf.maps import HashMap
33
from pythonbpf.helper import XDP_PASS
44
from vmlinux import TASK_COMM_LEN # noqa: F401
5-
from vmlinux import struct_trace_event_raw_sys_enter # noqa: F401
6-
from vmlinux import struct_posix_cputimers # noqa: F401
5+
# from vmlinux import struct_qspinlock_0_1
6+
# from vmlinux import struct_trace_event_raw_sys_enter # noqa: F401
7+
# from vmlinux import struct_posix_cputimers # noqa: F401
78
from vmlinux import struct_xdp_md
89
# from vmlinux import struct_trace_event_raw_sys_enter # noqa: F401
9-
from vmlinux import struct_ring_buffer_per_cpu # noqa: F401
10-
10+
# from vmlinux import struct_ring_buffer_per_cpu # noqa: F401
11+
from vmlinux import struct_request
1112
from ctypes import c_int64
1213

1314
# Instructions to how to run this program

0 commit comments

Comments
 (0)