type f_class = ShapeField | ContentField
let classify_field names = function
- | (PP.FStructPointer struct_name | PP.FListHeadPointer struct_name)
+ | PP.FListHeadPointer None -> ShapeField
+ | (PP.FStructPointer struct_name
+ | PP.FListHeadPointer (Some (struct_name, _)))
when List.mem struct_name names -> ShapeField
(* .. anything else is a content field: *)
| PP.FStructPointer _
pa_i : int;
pa_name : string;
pa_endian : Bitstring.endian;
- pa_fields : Pahole_parser.field list;
+ pa_structure : Pahole_parser.structure;
pa_shape_field_struct : shape_field_struct;
pa_content_field_struct : content_field_struct;
}
let h = Hashtbl.create 13 in
let rh = Hashtbl.create 13 in
+ (* Do not change - see Code_generation.re_subst. *)
let name_of i = sprintf "%s_parser_%d" struct_name i in
List.iter (
fun ({ PP.kernel_version = version; arch = arch },
- { PP.struct_fields = fields; struct_name = name_check }) ->
+ ({ PP.struct_fields = fields; struct_name = name_check }
+ as structure)) ->
assert (struct_name = name_check);
let endian = endian_of_architecture arch in
let key = endian, fields in
let cf =
try Hashtbl.find cfhash version
with Not_found -> assert false in
- let pa = { pa_i = i; pa_name = name_of i; pa_fields = fields;
+ let pa = { pa_i = i; pa_name = name_of i;
pa_endian = endian;
+ pa_structure = structure;
pa_shape_field_struct = sf;
pa_content_field_struct = cf } in
Hashtbl.add h key pa;