package linksem
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
A formalisation of the core ELF and DWARF file formats written in Lem
Install
dune-project
Dependency
Authors
Maintainers
Sources
0.8.tar.gz
md5=2075c56715539b3b8f54ae65cc808b8c
sha512=f7c16e4036a1440a6a8d13707a43f0f9f9db0c68489215f948cc300b6a164dba5bf852e58f89503e9d9f38180ee658d9478156ca1a1ef64d6861eec5f9cf43d2
doc/linksem_zarith/Memory_image/index.html
Module Memory_imageSource
Source
type element = {startpos : Nat_big_num.num option;length1 : Nat_big_num.num option;contents : Byte_pattern.byte_pattern;
}Source
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_operand
Source
and 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_operand
Source
type expr = | False| True| Not of expr| And of expr * expr| Or of expr * expr| BinRel of expr_binary_relation * expr_operand
Source
type 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_segment
Source
type 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;
}Source
val instance_Basic_classes_Ord_Memory_image_symbol_definition_dict :
symbol_definition Lem_basic_classes.ord_classSource
type 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;
}Source
val instance_Basic_classes_Ord_Memory_image_symbol_reference_dict :
symbol_reference Lem_basic_classes.ord_classSource
type 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;
}Source
val instance_Basic_classes_Ord_Memory_image_reloc_site_dict :
reloc_site Lem_basic_classes.ord_classSource
type reloc_decision = | LeaveReloc| ApplyReloc| ChangeRelocTo of Nat_big_num.num * symbol_reference * reloc_site
Source
val instance_Basic_classes_Ord_Memory_image_reloc_decision_dict :
reloc_decision Lem_basic_classes.ord_classSource
type symbol_reference_and_reloc_site = {ref : symbol_reference;maybe_reloc : reloc_site option;maybe_def_bound_to : (reloc_decision * symbol_definition option) option;
}Source
val symRefAndRelocSiteCompare :
symbol_reference_and_reloc_site ->
symbol_reference_and_reloc_site ->
intSource
val instance_Basic_classes_Ord_Memory_image_symbol_reference_and_reloc_site_dict :
symbol_reference_and_reloc_site Lem_basic_classes.ord_classSource
type 'abifeature range_tag = | ImageBase| EntryPoint| SymbolDef of symbol_definition| SymbolRef of symbol_reference_and_reloc_site| FileFeature of elf_file_feature| AbiFeature of 'abifeature
Source
type '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;
}Source
type reloc_calculate_fn =
Nat_big_num.num ->
Nat_big_num.num ->
Nat_big_num.num ->
Nat_big_num.numSource
type 'abifeature reloc_apply_fn =
'abifeature annotated_memory_image ->
Nat_big_num.num ->
symbol_reference_and_reloc_site ->
Nat_big_num.num * reloc_calculate_fnSource
val 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)Source
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)Source
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;
}Source
val address_of_range :
(string * (Nat_big_num.num * 'a)) ->
'b annotated_memory_image ->
Nat_big_num.numSource
val range_contains :
(Nat_big_num.num * Nat_big_num.num) ->
(Nat_big_num.num * Nat_big_num.num) ->
boolSource
val range_overlaps :
(Nat_big_num.num * Nat_big_num.num) ->
(Nat_big_num.num * Nat_big_num.num) ->
boolSource
val is_partition :
(Nat_big_num.num * Nat_big_num.num) list ->
(Nat_big_num.num * Nat_big_num.num) list ->
boolSource
val expand_sorted_ranges :
(Nat_big_num.num * Nat_big_num.num) list ->
Nat_big_num.num ->
bool list ->
bool listSource
val expand_unsorted_ranges :
(Nat_big_num.num * Nat_big_num.num) list ->
Nat_big_num.num ->
bool list ->
bool listSource
val swap_pairs :
'a Lem_basic_classes.setType_class ->
'b Lem_basic_classes.setType_class ->
('b * 'a) Pset.set ->
('a * 'b) Pset.setSource
val by_range_from_by_tag :
'a Lem_basic_classes.setType_class ->
'b Lem_basic_classes.setType_class ->
('a * 'b) Pset.set ->
('b * 'a) Pset.setSource
val by_tag_from_by_range :
'a Lem_basic_classes.setType_class ->
'b Lem_basic_classes.setType_class ->
('a * 'b) Pset.set ->
('b * 'a) Pset.setSource
val filter_elements :
((string * element) -> bool) ->
'abifeature annotated_memory_image ->
'abifeature annotated_memory_imageSource
val tag_image :
'abifeature range_tag ->
string ->
Nat_big_num.num ->
Nat_big_num.num ->
'abifeature annotated_memory_image ->
'abifeature annotated_memory_imageSource
val address_to_element_and_offset :
Nat_big_num.num ->
'a annotated_memory_image ->
(string * Nat_big_num.num) optionSource
val element_and_offset_to_address :
(string * Nat_big_num.num) ->
'a annotated_memory_image ->
Nat_big_num.num optionSource
val pattern_possible_starts_in_one_byte_sequence :
'a option list ->
'a list ->
Nat_big_num.num ->
Nat_big_num.num listSource
val compute_virtual_address_adjustment :
Nat_big_num.num ->
Nat_big_num.num ->
Nat_big_num.num ->
Nat_big_num.numSource
val natural_to_byte_list_padded_to :
Endianness.endianness ->
Nat_big_num.num ->
Nat_big_num.num ->
char listSource
val read_memory_image :
'a annotated_memory_image ->
Nat_big_num.num ->
Nat_big_num.num ->
char list optionSource
val read_memory_image_byte_sequence :
'a annotated_memory_image ->
Nat_big_num.num ->
Nat_big_num.num ->
Byte_sequence_wrapper.byte_sequence optionSource
val write_memory_image :
'abifeature annotated_memory_image ->
Nat_big_num.num ->
Byte_pattern.byte_pattern_element list ->
'abifeature annotated_memory_imageSource
val mask_memory_image :
'a annotated_memory_image ->
Nat_big_num.num ->
Nat_big_num.num ->
'a annotated_memory_image sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>