Memory_imageSourcetype element = {startpos : Nat_big_num.num option;length1 : Nat_big_num.num option;contents : Byte_pattern.byte_pattern;}type expr_operand = | Var of string| CursorPosition| Constant of Nat_big_num.num| UnOp of expr_unary_operation * expr_operand| BinOp of expr_binary_operation * expr_operand * expr_operandand expr_binary_operation = | Add of expr_operand * expr_operand| Sub of expr_operand * expr_operand| BitwiseAnd of expr_operand * expr_operand| BitwiseOr of expr_operand * expr_operandtype expr = | False| True| Not of expr| And of expr * expr| Or of expr * expr| BinRel of expr_binary_relation * expr_operandtype elf_file_feature = | ElfHeader of Elf_header.elf64_header| ElfSectionHeaderTable of Elf_section_header_table.elf64_section_header_table| ElfProgramHeaderTable of Elf_program_header_table.elf64_program_header_table| ElfSection of Nat_big_num.num
* Elf_interpreted_section.elf64_interpreted_section| ElfSegment of Nat_big_num.num
* Elf_interpreted_segment.elf64_interpreted_segmenttype symbol_definition = {def_symname : string;def_syment : Elf_symbol_table.elf64_symbol_table_entry;def_sym_scn : Nat_big_num.num;def_sym_idx : Nat_big_num.num;def_linkable_idx : Nat_big_num.num;}val instance_Basic_classes_Ord_Memory_image_symbol_definition_dict :
symbol_definition Lem_basic_classes.ord_classtype symbol_reference = {ref_symname : string;ref_syment : Elf_symbol_table.elf64_symbol_table_entry;ref_sym_scn : Nat_big_num.num;ref_sym_idx : Nat_big_num.num;}val instance_Basic_classes_Ord_Memory_image_symbol_reference_dict :
symbol_reference Lem_basic_classes.ord_classtype reloc_site = {ref_relent : Elf_relocation.elf64_relocation_a;ref_rel_scn : Nat_big_num.num;ref_rel_idx : Nat_big_num.num;ref_src_scn : Nat_big_num.num;}val instance_Basic_classes_Ord_Memory_image_reloc_site_dict :
reloc_site Lem_basic_classes.ord_classtype reloc_decision = | LeaveReloc| ApplyReloc| ChangeRelocTo of Nat_big_num.num * symbol_reference * reloc_siteval instance_Basic_classes_Ord_Memory_image_reloc_decision_dict :
reloc_decision Lem_basic_classes.ord_classtype symbol_reference_and_reloc_site = {ref : symbol_reference;maybe_reloc : reloc_site option;maybe_def_bound_to : (reloc_decision * symbol_definition option) option;}val symRefAndRelocSiteCompare :
symbol_reference_and_reloc_site ->
symbol_reference_and_reloc_site ->
intval instance_Basic_classes_Ord_Memory_image_symbol_reference_and_reloc_site_dict :
symbol_reference_and_reloc_site Lem_basic_classes.ord_classtype 'abifeature range_tag = | ImageBase| EntryPoint| SymbolDef of symbol_definition| SymbolRef of symbol_reference_and_reloc_site| FileFeature of elf_file_feature| AbiFeature of 'abifeaturetype 'abifeature annotated_memory_image = {elements : memory_image;by_range : (element_range option * 'abifeature range_tag) Pset.set;by_tag : ('abifeature range_tag, element_range option) Multimap.multimap;}type reloc_calculate_fn =
Nat_big_num.num ->
Nat_big_num.num ->
Nat_big_num.num ->
Nat_big_num.numtype 'abifeature reloc_apply_fn =
'abifeature annotated_memory_image ->
Nat_big_num.num ->
symbol_reference_and_reloc_site ->
Nat_big_num.num * reloc_calculate_fnval noop_reloc_apply :
'a ->
'b ->
'c ->
Nat_big_num.num
* (Nat_big_num.num ->
Nat_big_num.num ->
Nat_big_num.num ->
Nat_big_num.num)val noop_reloc :
'a ->
bool
* ('abifeature annotated_memory_image ->
Nat_big_num.num ->
symbol_reference_and_reloc_site ->
Nat_big_num.num * reloc_calculate_fn)type 'abifeature abi = {is_valid_elf_header : Elf_header.elf64_header -> bool;make_elf_header : Nat_big_num.num ->
Nat_big_num.num ->
Nat_big_num.num ->
Nat_big_num.num ->
Nat_big_num.num ->
Nat_big_num.num ->
Nat_big_num.num ->
Elf_header.elf64_header;reloc : 'abifeature reloc_fn;section_is_special : Elf_interpreted_section.elf64_interpreted_section ->
'abifeature annotated_memory_image ->
bool;section_is_large : Elf_interpreted_section.elf64_interpreted_section ->
'abifeature annotated_memory_image ->
bool;maxpagesize : Nat_big_num.num;minpagesize : Nat_big_num.num;commonpagesize : Nat_big_num.num;symbol_is_generated_by_linker : string -> bool;make_phdrs : Nat_big_num.num ->
Nat_big_num.num ->
Nat_big_num.num ->
'abifeature annotated_memory_image ->
Elf_interpreted_section.elf64_interpreted_section list ->
Elf_program_header_table.elf64_program_header_table_entry list;max_phnum : Nat_big_num.num;guess_entry_point : 'abifeature annotated_memory_image ->
Nat_big_num.num option;pad_data : Nat_big_num.num -> char list;pad_code : Nat_big_num.num -> char list;generate_support : (string * 'abifeature annotated_memory_image) list ->
'abifeature annotated_memory_image;concretise_support : 'abifeature annotated_memory_image ->
'abifeature annotated_memory_image;get_reloc_symaddr : symbol_definition ->
'abifeature annotated_memory_image ->
(element_range option * symbol_definition) list ->
reloc_site option ->
Nat_big_num.num;parse_reloc_info : Uint64_wrapper.uint64 -> Nat_big_num.num * Nat_big_num.num;}val address_of_range :
(string * (Nat_big_num.num * 'a)) ->
'b annotated_memory_image ->
Nat_big_num.numval range_contains :
(Nat_big_num.num * Nat_big_num.num) ->
(Nat_big_num.num * Nat_big_num.num) ->
boolval range_overlaps :
(Nat_big_num.num * Nat_big_num.num) ->
(Nat_big_num.num * Nat_big_num.num) ->
boolval is_partition :
(Nat_big_num.num * Nat_big_num.num) list ->
(Nat_big_num.num * Nat_big_num.num) list ->
boolval expand_sorted_ranges :
(Nat_big_num.num * Nat_big_num.num) list ->
Nat_big_num.num ->
bool list ->
bool listval expand_unsorted_ranges :
(Nat_big_num.num * Nat_big_num.num) list ->
Nat_big_num.num ->
bool list ->
bool listval swap_pairs :
'a Lem_basic_classes.setType_class ->
'b Lem_basic_classes.setType_class ->
('b * 'a) Pset.set ->
('a * 'b) Pset.setval by_range_from_by_tag :
'a Lem_basic_classes.setType_class ->
'b Lem_basic_classes.setType_class ->
('a * 'b) Pset.set ->
('b * 'a) Pset.setval by_tag_from_by_range :
'a Lem_basic_classes.setType_class ->
'b Lem_basic_classes.setType_class ->
('a * 'b) Pset.set ->
('b * 'a) Pset.setval filter_elements :
((string * element) -> bool) ->
'abifeature annotated_memory_image ->
'abifeature annotated_memory_imageval tag_image :
'abifeature range_tag ->
string ->
Nat_big_num.num ->
Nat_big_num.num ->
'abifeature annotated_memory_image ->
'abifeature annotated_memory_imageval address_to_element_and_offset :
Nat_big_num.num ->
'a annotated_memory_image ->
(string * Nat_big_num.num) optionval element_and_offset_to_address :
(string * Nat_big_num.num) ->
'a annotated_memory_image ->
Nat_big_num.num optionval pattern_possible_starts_in_one_byte_sequence :
'a option list ->
'a list ->
Nat_big_num.num ->
Nat_big_num.num listval compute_virtual_address_adjustment :
Nat_big_num.num ->
Nat_big_num.num ->
Nat_big_num.num ->
Nat_big_num.numval natural_to_byte_list_padded_to :
Endianness.endianness ->
Nat_big_num.num ->
Nat_big_num.num ->
char listval read_memory_image :
'a annotated_memory_image ->
Nat_big_num.num ->
Nat_big_num.num ->
char list optionval read_memory_image_byte_sequence :
'a annotated_memory_image ->
Nat_big_num.num ->
Nat_big_num.num ->
Byte_sequence_wrapper.byte_sequence optionval write_memory_image :
'abifeature annotated_memory_image ->
Nat_big_num.num ->
Byte_pattern.byte_pattern_element list ->
'abifeature annotated_memory_imageval mask_memory_image :
'a annotated_memory_image ->
Nat_big_num.num ->
Nat_big_num.num ->
'a annotated_memory_image