@@ -1044,14 +1044,18 @@ let generate_declarations_in_source_order ctx _ir_multi_program type_aliases =
10441044(* * Generate standard eBPF includes *)
10451045
10461046let generate_includes ctx ?(program_types =[] ) ?(include_builtin_headers =false ) () =
1047+ (* Essential kernel types must come first *)
1048+ let base_type_includes = [
1049+ " #include <linux/types.h>" ;
1050+ ] in
1051+
10471052 let standard_includes = [
10481053 " #include <linux/bpf.h>" ;
10491054 " #include <bpf/bpf_helpers.h>" ;
10501055 " #include <linux/if_ether.h>" ;
10511056 " #include <linux/ip.h>" ;
10521057 " #include <linux/in.h>" ;
10531058 " #include <linux/if_xdp.h>" ;
1054- " #include <linux/types.h>" ;
10551059 ] in
10561060
10571061 (* Get context-specific includes *)
@@ -1069,9 +1073,10 @@ let generate_includes ctx ?(program_types=[]) ?(include_builtin_headers=false) (
10691073 | None -> acc
10701074 ) [] program_types in
10711075
1072- (* Remove duplicates between standard and context includes *)
1076+ (* Remove duplicates between all include sets *)
1077+ let all_base_includes = base_type_includes @ standard_includes in
10731078 let unique_context_includes = List. filter (fun inc ->
1074- not (List. mem inc standard_includes )) context_includes in
1079+ not (List. mem inc all_base_includes )) context_includes in
10751080
10761081 (* Only add builtin headers if explicitly requested (for debugging/testing) *)
10771082 let builtin_includes = if include_builtin_headers then
@@ -1086,7 +1091,7 @@ let generate_includes ctx ?(program_types=[]) ?(include_builtin_headers=false) (
10861091 [] (* Skip builtin headers - enum constants come from system headers *)
10871092 in
10881093
1089- let all_includes = standard_includes @ unique_context_includes @ ( List. rev builtin_includes) in
1094+ let all_includes = ( List. rev builtin_includes) @ standard_includes @ unique_context_includes @ base_type_includes in
10901095 List. iter (fun inc -> ctx.output_lines < - inc :: ctx.output_lines) (List. rev all_includes);
10911096 emit_blank_line ctx
10921097
0 commit comments