AbisSourceThe 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
type any_abi_feature = | Amd64AbiFeature of any_abi_feature Abi_amd64.amd64_abi_feature| Aarch64LeAbiFeature of Abi_aarch64_le.aarch64_le_abi_featureval instance_Basic_classes_Ord_Abis_any_abi_feature_dict :
any_abi_feature Lem_basic_classes.ord_classval instance_Abi_classes_AbiFeatureTagEquiv_Abis_any_abi_feature_dict :
any_abi_feature Abi_classes.abiFeatureTagEquiv_classval 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_headerval 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 optionval 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_entryval 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 listval 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 listval 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 optionval amd64_reloc_needs_got_slot :
'a ->
Memory_image.reloc_site ->
Memory_image.symbol_definition option ->
boolval 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) ->
boolval amd64_find_got_label_and_element :
any_abi_feature Memory_image.annotated_memory_image ->
((string * Memory_image.symbol_definition option) list * Memory_image.element)
optionval 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)
optionval got_slot_index_for_symname :
'a Lem_basic_classes.eq_class ->
'a ->
('a * 'b) list ->
int optionval 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.numval amd64_generate_support :
('a * any_abi_feature Memory_image.annotated_memory_image) list ->
any_abi_feature Memory_image.annotated_memory_imageval amd64_concretise_support :
any_abi_feature Memory_image.annotated_memory_image ->
any_abi_feature Memory_image.annotated_memory_imageval amd64_got_slot_idx :
any_abi_feature Memory_image.annotated_memory_image ->
Memory_image.symbol_reference_and_reloc_site ->
Nat_big_num.numval amd64_got_slot_addr :
any_abi_feature Memory_image.annotated_memory_image ->
Memory_image.symbol_reference_and_reloc_site ->
Nat_big_num.numval 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.numval amd64_base_addr :
Memory_image.symbol_reference_and_reloc_site ->
Nat_big_num.num ->
Nat_big_num.numamd64_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.
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.