package linksem

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type

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

val is_valid_abi_aarch64_relocation_operator : Abi_utilities.relocation_operator -> bool
val is_valid_abi_aarch64_relocation_operator2 : Abi_utilities.relocation_operator2 -> bool
val is_valid_abi_amd64_relocation_operator : Abi_utilities.relocation_operator -> bool
val is_valid_abi_amd64_relocation_operator2 : 'a -> bool
val is_valid_abi_power64_relocation_operator : 'a -> bool
val is_valid_abi_power64_relocation_operator2 : 'a -> bool

Misc. ABI related stuff

type any_abi_feature =
  1. | Amd64AbiFeature of any_abi_feature Abi_amd64.amd64_abi_feature
  2. | Aarch64LeAbiFeature of Abi_aarch64_le.aarch64_le_abi_feature
val anyAbiFeatureCompare : any_abi_feature -> any_abi_feature -> int
val anyAbiFeatureTagEquiv : any_abi_feature -> any_abi_feature -> bool
val instance_Basic_classes_Ord_Abis_any_abi_feature_dict : any_abi_feature Lem_basic_classes.ord_class
val instance_Abi_classes_AbiFeatureTagEquiv_Abis_any_abi_feature_dict : any_abi_feature Abi_classes.abiFeatureTagEquiv_class
val phdr_flags_from_section_flags : Nat_big_num.num -> 'a -> Nat_big_num.num
val phdr_is_writable : Nat_big_num.num -> bool
type can_combine_flags_fn = Nat_big_num.num Pset.set -> Nat_big_num.num option
val load_can_combine_flags : Nat_big_num.num Pset.set -> Nat_big_num.num option
val tls_can_combine_flags : Nat_big_num.num Pset.set -> Nat_big_num.num option
val tls_extend : 'abifeature Memory_image.abi -> 'abifeature Memory_image.abi
val pad_zeroes : Nat_big_num.num -> char list
val pad_0x90 : Nat_big_num.num -> char list
val got_entry_ordering : ('a * 'b) -> ('a * 'c) -> int
val is_ifunc_def : Memory_image.symbol_definition option -> bool
val amd64_reloc_needs_got_slot : 'a -> Memory_image.reloc_site -> Memory_image.symbol_definition option -> bool
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
val got_slot_index_for_symname : 'a Lem_basic_classes.eq_class -> 'a -> ('a * 'b) list -> int option

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.

val sysv_amd64_std_abi : any_abi_feature Memory_image.abi
val sysv_aarch64_le_std_abi : any_abi_feature Memory_image.abi
val sysv_mips64_std_abi : any_abi_feature Memory_image.abi
val sysv_cheri_mips64_std_abi : any_abi_feature Memory_image.abi
val all_abis : any_abi_feature Memory_image.abi list
OCaml

Innovation. Community. Security.