package linksem
A formalisation of the core ELF and DWARF file formats written in Lem
Install
Dune Dependency
Authors
Maintainers
Sources
0.8.tar.gz
md5=2075c56715539b3b8f54ae65cc808b8c
sha512=f7c16e4036a1440a6a8d13707a43f0f9f9db0c68489215f948cc300b6a164dba5bf852e58f89503e9d9f38180ee658d9478156ca1a1ef64d6861eec5f9cf43d2
doc/linksem_zarith/Linker_script/index.html
Module Linker_script
Source
Source
type input_section_rec = {
idx : Nat_big_num.num;
fname : string;
img : Elf_memory_image.elf_memory_image;
shndx : Nat_big_num.num;
secname : string;
isec : Elf_interpreted_section.elf64_interpreted_section;
}
Source
type input_spec =
| Common of Nat_big_num.num * string * Elf_memory_image.elf_memory_image * Memory_image.symbol_definition
| InputSection of input_section_rec
Source
type 'a address_expr_fn_map =
(address_expr_fn_ref, Nat_big_num.num -> 'a -> Nat_big_num.num) Pmap.map
Source
type output_section_composition_element =
| IncludeInputSection of retain_policy * input_section_rec
| IncludeCommonSymbol of retain_policy * string * Nat_big_num.num * Memory_image.symbol_definition * Elf_memory_image.elf_memory_image
| Hole of address_expr_fn
| ProvideSymbol of symbol_def_policy * string * symbol_spec
Source
and output_section_spec =
| OutputSectionSpec of output_guard * Nat_big_num.num option * string * output_section_composition_element list
Source
and allocated_sections_map =
| AllocatedSectionsMap of (string, output_section_spec * Nat_big_num.num) Pmap.map
Source
type script_element =
| DefineSymbol of symbol_def_policy * string * symbol_spec
| AdvanceAddress of address_expr_fn
| MarkAndAlignDataSegment of Nat_big_num.num * Nat_big_num.num
| MarkDataSegmentEnd
| MarkDataSegmentRelroEnd
| OutputSection of output_guard * address_expr_fn option * string * script_element list
| DiscardInput of input_selector
| InputQuery of retain_policy * sort_policy * input_selector
Source
val address_zero :
Nat_big_num.num ->
(Nat_big_num.num,
Nat_big_num.num ->
allocated_sections_map ->
Nat_big_num.num)
Pmap.map ->
Nat_big_num.num
* (Nat_big_num.num,
Nat_big_num.num ->
allocated_sections_map ->
Nat_big_num.num)
Pmap.map
* address_expr_fn
Source
val do_output_section_layout_starting_at_addr :
Nat_big_num.num ->
allocated_sections_map ->
output_section_composition_element list ->
Nat_big_num.num * Nat_big_num.num list
Source
val output_sec_composition_size_given_start_addr :
Nat_big_num.num ->
allocated_sections_map ->
output_section_composition_element list ->
Nat_big_num.num
Source
val alignof_output_section_composition_element :
output_section_composition_element ->
Nat_big_num.num
Source
val default_linker_control_script :
Nat_big_num.num ->
(Nat_big_num.num,
Nat_big_num.num ->
allocated_sections_map ->
Nat_big_num.num)
Pmap.map ->
'a Memory_image.abi ->
Nat_big_num.num option ->
Nat_big_num.num option ->
'b ->
Nat_big_num.num ->
Nat_big_num.num
* (Nat_big_num.num,
Nat_big_num.num ->
allocated_sections_map ->
Nat_big_num.num)
Pmap.map
* script_element list
Source
val label_script_aux :
Nat_big_num.num ->
script_element list ->
(script_element * Nat_big_num.num) list
Source
val assign_inputs_to_output_sections :
(input_spec list * (output_section_spec * Nat_big_num.num) list) ->
(Nat_big_num.num * Nat_big_num.num) Pset.set ->
(Nat_big_num.num * Nat_big_num.num * Nat_big_num.num) Pset.set ->
input_spec list ->
(output_section_spec * Nat_big_num.num) option ->
input_spec option ->
(input_spec -> input_spec -> int) ->
labelled_linker_control_script ->
input_spec list * (output_section_spec * Nat_big_num.num) list
Source
val symbol_def_for_provide_symbol :
string ->
Nat_big_num.num ->
Uint32_wrapper.uint32 ->
Uint32_wrapper.uint32 ->
Nat_big_num.num ->
Memory_image.symbol_definition
Source
val assign_dot_to_itself :
Nat_big_num.num ->
(Nat_big_num.num,
Nat_big_num.num ->
allocated_sections_map ->
Nat_big_num.num)
Pmap.map ->
Nat_big_num.num
* (Nat_big_num.num,
Nat_big_num.num ->
allocated_sections_map ->
Nat_big_num.num)
Pmap.map
* address_expr_fn
Source
val build_image :
'a Memory_image.abi ->
(address_expr_fn_ref,
Nat_big_num.num ->
allocated_sections_map ->
Nat_big_num.num)
Pmap.map ->
Elf_memory_image.elf_memory_image ->
Nat_big_num.num ->
allocated_sections_map ->
(string,
(Nat_big_num.num
* ((Nat_big_num.num
* Memory_image.symbol_reference
* Linkable_list.linkable_item)
* (Nat_big_num.num
* Memory_image.symbol_definition
* Linkable_list.linkable_item)
option))
list)
Pmap.map ->
(script_element * Nat_big_num.num) list ->
Nat_big_num.num ->
'b ->
Abis.any_abi_feature Memory_image.annotated_memory_image
* allocated_sections_map
Source
val default_place_orphans :
(input_spec list * (output_section_spec * Nat_big_num.num) list) ->
input_spec list ->
input_spec list * (output_section_spec * Nat_big_num.num) list
Source
val interpret_linker_control_script :
(address_expr_fn_ref,
Nat_big_num.num ->
allocated_sections_map ->
Nat_big_num.num)
Pmap.map ->
script_element list ->
Linkable_list.linkable_item list ->
Nat_big_num.num ->
'a Memory_image.abi ->
input_spec list ->
(input_spec -> input_spec -> int) ->
((input_spec list * (output_section_spec * Nat_big_num.num) list) ->
input_spec list ->
'b * (output_section_spec * Nat_big_num.num) list) ->
(string,
(Nat_big_num.num
* ((Nat_big_num.num
* Memory_image.symbol_reference
* Linkable_list.linkable_item)
* (Nat_big_num.num
* Memory_image.symbol_definition
* Linkable_list.linkable_item)
option))
list)
Pmap.map ->
Abis.any_abi_feature Memory_image.annotated_memory_image
* (string, (Nat_big_num.num * Linkable_list.binding) list) Pmap.map
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>