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/Abis/index.html
Module Abis
Source
The abis
module is the top-level module for all ABI related code, including * some generic functionality that works across all ABIs, and a primitive attempt * at abstracting over ABIs for purposes of linking.
Relocation operators and their validity on a given platform
Misc. ABI related stuff
Source
type any_abi_feature =
| Amd64AbiFeature of any_abi_feature Abi_amd64.amd64_abi_feature
| Aarch64LeAbiFeature of Abi_aarch64_le.aarch64_le_abi_feature
Source
val instance_Basic_classes_Ord_Abis_any_abi_feature_dict :
any_abi_feature Lem_basic_classes.ord_class
Source
val instance_Abi_classes_AbiFeatureTagEquiv_Abis_any_abi_feature_dict :
any_abi_feature Abi_classes.abiFeatureTagEquiv_class
Source
val make_elf64_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 ->
Nat_big_num.num ->
Nat_big_num.num ->
Nat_big_num.num ->
Nat_big_num.num ->
Elf_header.elf64_header
Source
val maybe_extend_phdr :
Elf_program_header_table.elf64_program_header_table_entry ->
Elf_interpreted_section.elf64_interpreted_section ->
(Nat_big_num.num Pset.set -> Nat_big_num.num option) ->
Elf_program_header_table.elf64_program_header_table_entry option
Source
val make_new_phdr :
Elf_interpreted_section.elf64_interpreted_section ->
Nat_big_num.num ->
Nat_big_num.num ->
Nat_big_num.num ->
Elf_program_header_table.elf64_program_header_table_entry
Source
val make_load_phdrs :
Nat_big_num.num ->
Nat_big_num.num ->
'a ->
Elf_interpreted_section.elf64_interpreted_section list ->
Elf_program_header_table.elf64_program_header_table_entry list
Source
val make_default_phdrs :
Nat_big_num.num ->
Nat_big_num.num ->
'a ->
'b ->
Elf_interpreted_section.elf64_interpreted_section list ->
Elf_program_header_table.elf64_program_header_table_entry list
Source
val find_start_symbol_address :
'a Lem_basic_classes.ord_class ->
'a Abi_classes.abiFeatureTagEquiv_class ->
'a Memory_image.annotated_memory_image ->
Nat_big_num.num option
Source
val amd64_reloc_needs_got_slot :
'a ->
Memory_image.reloc_site ->
Memory_image.symbol_definition option ->
bool
Source
val amd64_reloc_needs_plt_slot :
Memory_image.symbol_reference_and_reloc_site ->
Memory_image.reloc_site ->
Memory_image.symbol_definition option ->
(Memory_image.reloc_site -> bool) ->
bool
Source
val amd64_find_got_label_and_element :
any_abi_feature Memory_image.annotated_memory_image ->
((string * Memory_image.symbol_definition option) list * Memory_image.element)
option
Source
val amd64_find_plt_label_and_element :
any_abi_feature Memory_image.annotated_memory_image ->
((string
* Memory_image.symbol_definition option
* (Nat_big_num.num ->
Nat_big_num.num ->
Nat_big_num.num * char list))
list
* Memory_image.element)
option
Source
val got_slot_index_for_symname :
'a Lem_basic_classes.eq_class ->
'a ->
('a * 'b) list ->
int option
Source
val amd64_get_reloc_symaddr :
Memory_image.symbol_definition ->
any_abi_feature Memory_image.annotated_memory_image ->
(Memory_image.element_range option * Memory_image.symbol_definition) list ->
'a ->
Nat_big_num.num
Source
val amd64_generate_support :
('a * any_abi_feature Memory_image.annotated_memory_image) list ->
any_abi_feature Memory_image.annotated_memory_image
Source
val amd64_concretise_support :
any_abi_feature Memory_image.annotated_memory_image ->
any_abi_feature Memory_image.annotated_memory_image
Source
val amd64_got_slot_idx :
any_abi_feature Memory_image.annotated_memory_image ->
Memory_image.symbol_reference_and_reloc_site ->
Nat_big_num.num
Source
val amd64_got_slot_addr :
any_abi_feature Memory_image.annotated_memory_image ->
Memory_image.symbol_reference_and_reloc_site ->
Nat_big_num.num
Source
val amd64_plt_slot_addr :
any_abi_feature Memory_image.annotated_memory_image ->
Memory_image.symbol_reference_and_reloc_site ->
Nat_big_num.num ->
Nat_big_num.num
Source
val amd64_base_addr :
Memory_image.symbol_reference_and_reloc_site ->
Nat_big_num.num ->
Nat_big_num.num
amd64_base_addr rr site_addr
computes back the base address at which a * shared object has been loaded into memory during execution. It's kind of * lame to have this function because the linker will do the opposite operation * when relocating, but I don't want to add a new argument to the reloc * function.
Source
val amd64_reloc :
Nat_big_num.num ->
bool
* (any_abi_feature Memory_image.annotated_memory_image ->
Nat_big_num.num ->
Memory_image.symbol_reference_and_reloc_site ->
Nat_big_num.num
* (Nat_big_num.num ->
Nat_big_num.num ->
Nat_big_num.num ->
Nat_big_num.num))
amd64_reloc r
yields a function that applies relocations of type r
.
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>