package linksem
linksem 0.8
Libraries
This package provides the following libraries (via ocamlobjinfo):
linksem
Documentation:
Uint64_wrapper
Uint32_wrapper
Show
show.lem
exports the typeclassShow
and associated functions for pretty * printing arbitrary values.Endianness
endian.lem
defines a type for describing the endianness of an ELF file, * and functions and other operations over that type.Error
Ml_bindings
Missing_pervasives
Multimap
Default_printing
Byte_sequence_wrapper
Byte_sequence_impl
byte_sequence_ocaml.lem
, a list of bytes used for ELF I/O and other basic * tasks in the ELF model.Filesystem
Filesystem_wrapper
Byte_sequence
Byte_pattern
Byte_pattern_extra
Archive
Elf_types_native_uint
unsigned char type and bindingsHex_printing
hex_printing
is a utility module for converting natural numbers and integers * into hex strings of various widths. Split into a new module as both the * validation code and the main program need this functionality.String_table
Thestring_table
module implements string tables. An ELF file may have * multiple different string tables used for different purposes. A string * table is a string coupled with a delimiting character. Strings may be indexed * at any position, not necessarily on a delimiter boundary.Auxv
Elf_header
elf_header
includes types, functions and other definitions for working with * ELF headers.Elf_symbol_table
elf_symbol_table
provides types, functions and other definitions for * working with ELF symbol tables.Elf_program_header_table
elf_program_header_table
contains type, functions and other definitions * for working with program header tables and their entries and ELF segments. * Related files areelf_interpreted_segments
which extracts information * derived from PHTs presented in this file and converts it into a more usable * format for processing. * * FIXME: * Bug in Lem as Lem codebase usesint
type throughout whereBigInt.t
* is really needed, hence chokes on huge constants below, which is why they are * written in the way that they are.Elf_section_header_table
elf_section_header_table
provides types, functions and other definitions * for working with section header tables and their entries.Elf_relocation
elf_relocation
formalises types, functions and other definitions for working * with ELF relocation and relocation with addend entries.Elf_interpreted_segment
elf_interpreted_segment
defines interpreted segments, i.e. the contents of * a program header table entry converted to more amenable types, and operations * built on top of them.Elf_interpreted_section
Moduleelf_interpreted_section
provides a record of "interpreted" sections, * i.e. the data stored in the section header table converted to more amenable * infinite precision types, and operation on those records.Elf_note
elf_note
contains data types and functions for interpreting the .note * section/segment of an ELF file, and extracting information from that * section/segment.Elf_file
Moduleelf_file
packages all components of an ELF file up into a single * record, provides I/O routines for this record, as well as other utility * functions that operate on an entire ELF file.Elf_dynamic
elf_dynamic
module exports types and definitions relating to the dynamic * section and dynamic linking functionality of an ELF file.Dwarf_ctypes
Dwarf
***************** experimental DWARF reading ***********Ldconfig
Abi_classes
Memory_image
Memory_image_orderings
Abi_utilities
abi_utilities
, generic utilities shared between all ABIs.Gnu_ext_abi
Abi_power64
abi_power64
contains top-level definition for the PowerPC64 ABI.Abi_power64_elf_header
abi_power64_elf_header
, Power64 ABI specific definitions related to the * ELF file header.Abi_power64_section_header_table
abi_power64_section_header_table
contains Power64 ABI specific definitions * related to the section header table.Abi_power64_dynamic
Abi_aarch64_le_elf_header
abi_aarch64_le_elf_header
contains types and definitions relating to ABI * specific ELF header functionality for the AArch64 ABI (little-endian).Abi_aarch64_symbol_table
abi_aarch64_symbol_table
, symbol table specific defintions for the AARCH64 * ABI.Abi_aarch64_section_header_table
abi_aarch64_section_header_table
, AARCH64 ABI specific definitions related * to the section header table.Abi_aarch64_program_header_table
abi_aarch64_program_header_table
, AARCH64 ABI specific program header * table related flags, data, etc.Abi_aarch64_le_serialisation
abi_aarch64_le_serialisation
, code for producing an AARCH64 conformant * ELF binary file from executable (machine code) data. * Used in ongoing experiments with CakeML. * * XXX: experimental, and outdated. Commented out for now until attention turns * to CakeML again.Abi_aarch64_relocation
abi_aarch64_relocation
contains types and definitions relating to ABI * specific relocation functionality for the AArch64 ABI (little-endian case).Abi_aarch64_le
abi_aarch64_le
contains top-level definition for the AArch64 ABI (little-endian case).Abstract_linker_script
Abi_amd64_elf_header
abi_amd64_elf_header
contains types and definitions relating to ABI * specific ELF header functionality for the AMD64 ABI.Abi_amd64_serialisation
abi_amd64_serialisation
contains code for producing an AMD64 conformant * ELF file from executable (machine) code. * Used in ongoing experiments with CakeML. * * XXX: experimental, and outdated. Commented out for now until attention turns * to CakeML again.Abi_amd64_relocation
abi_amd64_relocation
contains types and definitions relating to ABI * specific relocation functionality for the AMD64 ABI.Abi_amd64_program_header_table
abi_amd64_program_header_table
, program header table specific definitions * for the AMD64 ABI.Abi_amd64_section_header_table
abi_amd64_section_header_table
module contains section header table * specific definitions for the AMD64 ABI.Abi_amd64_symbol_table
abi_amd64_symbol_table
, AMD64 ABI specific definitions for the ELF symbol * table.Abi_amd64
abi_amd64
contains top-level definition for the AMD64 ABI.Abi_mips64_dynamic
Abi_mips64_elf_header
abi_mips64_elf_header
contains types and definitions relating to ABI * specific ELF header functionality for the MIPS64 ABI.Abi_mips64_relocation
abi_mips64_relocation
contains types and definitions relating to ABI * specific relocation functionality for the MIPS64 ABI.Abi_mips64_serialisation
abi_mips64_serialisation
contains code for producing an MIPS64 conformant * ELF file from executable (machine) code. * Used in ongoing experiments with CakeML. * * XXX: experimental, and outdated. Commented out for now until attention turns * to CakeML again.Abi_mips64_program_header_table
abi_mips64_program_header_table
, program header table specific definitions * for the MIPS64 ABI.Abi_mips64_section_header_table
abi_mips64_section_header_table
module contains section header table * specific definitions for the MIPS64 ABI.Abi_mips64_symbol_table
abi_mips64_symbol_table
, MIPS64 ABI specific definitions for the ELF symbol * table.Abi_mips64
abi_mips64
contains top-level definition for the MIPS64 ABI.Abi_x86_relocation
abi_x86_relocation
contains X86 ABI specific definitions relating to * relocations.Abi_power64_relocation
abi_power64_relocation
contains types and definitions specific to * relocations in the Power64 ABIAbi_riscv_elf_header
abi_riscv_elf_header
contains types and definitions relating to ABI * specific ELF header functionality for the RISCV ABI.Abi_riscv_program_header_table
abi_riscv_program_header_table
, program header table specific definitions * for the RISCV ABI.Abi_riscv_relocation
abi_riscv_relocation
contains types and definitions relating to ABI * specific relocation functionality for the RISCV ABI.Abi_riscv_section_header_table
abi_mips64_section_header_table
module contains section header table * specific definitions for the MIPS64 ABI.Abi_riscv_serialisation
abi_riscv_serialisation
contains code for producing an RISCV conformant * ELF file from executable (machine) code. * Used in ongoing experiments with CakeML. * * XXX: experimental, and outdated. Commented out for now until attention turns * to CakeML again.Abi_riscv_symbol_table
abi_mips64_symbol_table
, MIPS64 ABI specific definitions for the ELF symbol * table.Abi_riscv
abi_riscv
contains top-level definition for the RISCV ABI.Abi_cheri_mips64_capability
Abi_cheri_mips64_dynamic
Abi_cheri_mips64_elf_header
Abi_cheri_mips64_relocation
Abi_cheri_mips64
Gnu_ext_types_native_uint
gnu_ext_types_native_uint
provides extended types defined by the GNU * extensions over and above the based ELF types.Gnu_ext_section_header_table
The modulegnu_ext_section_header_table
implements function, definitions * and types relating to the GNU extensions to the standard ELF section header * table.Gnu_ext_dynamic
gnu_ext_dynamic
contains GNU extension specific definitions related to the * .dynamic section of an ELF file.Gnu_ext_symbol_versioning
Thegnu_ext_symbol_versioning
defines constants, types and functions * relating to the GNU symbol versioning extensions (i.e. contents of * GNU_VERSYM sections). * * TODO: work out what is going on with symbol versioning. The specification * is completely opaque.Gnu_ext_program_header_table
gnu_ext_program_header_table
contains GNU extension specific functionality * related to the program header table.Gnu_ext_section_to_segment_mapping
gnu_ext_section_to_segment_mapping
contains (GNU specific) functionality * relating to calculating the section to segment mapping for an ELF file. In * particular, the test over whether a section is inside a segment is ABI * specific. This module provides that test.Gnu_ext_note
gnu_ext_note
contains GNU extension specific definitions relating to the * .note section/segment of an ELF file.Abis
Theabis
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.Sail_interface
Harness_interface
Elf_memory_image
Elf_memory_image_of_elf64_file
Command_line
Input_list
Linkable_list
Linker_script
Link
Load
Elf64_file_of_elf_memory_image
Test_image
linksem
Documentation:
Uint64_wrapper
Uint32_wrapper
Show
show.lem
exports the typeclassShow
and associated functions for pretty * printing arbitrary values.Endianness
endian.lem
defines a type for describing the endianness of an ELF file, * and functions and other operations over that type.Error
Ml_bindings
Missing_pervasives
Multimap
Default_printing
Byte_sequence_wrapper
Byte_sequence_impl
byte_sequence_ocaml.lem
, a list of bytes used for ELF I/O and other basic * tasks in the ELF model.Filesystem
Filesystem_wrapper
Byte_sequence
Byte_pattern
Byte_pattern_extra
Archive
Elf_types_native_uint
unsigned char type and bindingsHex_printing
hex_printing
is a utility module for converting natural numbers and integers * into hex strings of various widths. Split into a new module as both the * validation code and the main program need this functionality.String_table
Thestring_table
module implements string tables. An ELF file may have * multiple different string tables used for different purposes. A string * table is a string coupled with a delimiting character. Strings may be indexed * at any position, not necessarily on a delimiter boundary.Auxv
Elf_header
elf_header
includes types, functions and other definitions for working with * ELF headers.Elf_symbol_table
elf_symbol_table
provides types, functions and other definitions for * working with ELF symbol tables.Elf_program_header_table
elf_program_header_table
contains type, functions and other definitions * for working with program header tables and their entries and ELF segments. * Related files areelf_interpreted_segments
which extracts information * derived from PHTs presented in this file and converts it into a more usable * format for processing. * * FIXME: * Bug in Lem as Lem codebase usesint
type throughout whereBigInt.t
* is really needed, hence chokes on huge constants below, which is why they are * written in the way that they are.Elf_section_header_table
elf_section_header_table
provides types, functions and other definitions * for working with section header tables and their entries.Elf_relocation
elf_relocation
formalises types, functions and other definitions for working * with ELF relocation and relocation with addend entries.Elf_interpreted_segment
elf_interpreted_segment
defines interpreted segments, i.e. the contents of * a program header table entry converted to more amenable types, and operations * built on top of them.Elf_interpreted_section
Moduleelf_interpreted_section
provides a record of "interpreted" sections, * i.e. the data stored in the section header table converted to more amenable * infinite precision types, and operation on those records.Elf_note
elf_note
contains data types and functions for interpreting the .note * section/segment of an ELF file, and extracting information from that * section/segment.Elf_file
Moduleelf_file
packages all components of an ELF file up into a single * record, provides I/O routines for this record, as well as other utility * functions that operate on an entire ELF file.Elf_dynamic
elf_dynamic
module exports types and definitions relating to the dynamic * section and dynamic linking functionality of an ELF file.Dwarf_ctypes
Dwarf
***************** experimental DWARF reading ***********Ldconfig
Abi_classes
Memory_image
Memory_image_orderings
Abi_utilities
abi_utilities
, generic utilities shared between all ABIs.Gnu_ext_abi
Abi_power64
abi_power64
contains top-level definition for the PowerPC64 ABI.Abi_power64_elf_header
abi_power64_elf_header
, Power64 ABI specific definitions related to the * ELF file header.Abi_power64_section_header_table
abi_power64_section_header_table
contains Power64 ABI specific definitions * related to the section header table.Abi_power64_dynamic
Abi_aarch64_le_elf_header
abi_aarch64_le_elf_header
contains types and definitions relating to ABI * specific ELF header functionality for the AArch64 ABI (little-endian).Abi_aarch64_symbol_table
abi_aarch64_symbol_table
, symbol table specific defintions for the AARCH64 * ABI.Abi_aarch64_section_header_table
abi_aarch64_section_header_table
, AARCH64 ABI specific definitions related * to the section header table.Abi_aarch64_program_header_table
abi_aarch64_program_header_table
, AARCH64 ABI specific program header * table related flags, data, etc.Abi_aarch64_le_serialisation
abi_aarch64_le_serialisation
, code for producing an AARCH64 conformant * ELF binary file from executable (machine code) data. * Used in ongoing experiments with CakeML. * * XXX: experimental, and outdated. Commented out for now until attention turns * to CakeML again.Abi_aarch64_relocation
abi_aarch64_relocation
contains types and definitions relating to ABI * specific relocation functionality for the AArch64 ABI (little-endian case).Abi_aarch64_le
abi_aarch64_le
contains top-level definition for the AArch64 ABI (little-endian case).Abstract_linker_script
Abi_amd64_elf_header
abi_amd64_elf_header
contains types and definitions relating to ABI * specific ELF header functionality for the AMD64 ABI.Abi_amd64_serialisation
abi_amd64_serialisation
contains code for producing an AMD64 conformant * ELF file from executable (machine) code. * Used in ongoing experiments with CakeML. * * XXX: experimental, and outdated. Commented out for now until attention turns * to CakeML again.Abi_amd64_relocation
abi_amd64_relocation
contains types and definitions relating to ABI * specific relocation functionality for the AMD64 ABI.Abi_amd64_program_header_table
abi_amd64_program_header_table
, program header table specific definitions * for the AMD64 ABI.Abi_amd64_section_header_table
abi_amd64_section_header_table
module contains section header table * specific definitions for the AMD64 ABI.Abi_amd64_symbol_table
abi_amd64_symbol_table
, AMD64 ABI specific definitions for the ELF symbol * table.Abi_amd64
abi_amd64
contains top-level definition for the AMD64 ABI.Abi_mips64_dynamic
Abi_mips64_elf_header
abi_mips64_elf_header
contains types and definitions relating to ABI * specific ELF header functionality for the MIPS64 ABI.Abi_mips64_relocation
abi_mips64_relocation
contains types and definitions relating to ABI * specific relocation functionality for the MIPS64 ABI.Abi_mips64_serialisation
abi_mips64_serialisation
contains code for producing an MIPS64 conformant * ELF file from executable (machine) code. * Used in ongoing experiments with CakeML. * * XXX: experimental, and outdated. Commented out for now until attention turns * to CakeML again.Abi_mips64_program_header_table
abi_mips64_program_header_table
, program header table specific definitions * for the MIPS64 ABI.Abi_mips64_section_header_table
abi_mips64_section_header_table
module contains section header table * specific definitions for the MIPS64 ABI.Abi_mips64_symbol_table
abi_mips64_symbol_table
, MIPS64 ABI specific definitions for the ELF symbol * table.Abi_mips64
abi_mips64
contains top-level definition for the MIPS64 ABI.Abi_x86_relocation
abi_x86_relocation
contains X86 ABI specific definitions relating to * relocations.Abi_power64_relocation
abi_power64_relocation
contains types and definitions specific to * relocations in the Power64 ABIAbi_riscv_elf_header
abi_riscv_elf_header
contains types and definitions relating to ABI * specific ELF header functionality for the RISCV ABI.Abi_riscv_program_header_table
abi_riscv_program_header_table
, program header table specific definitions * for the RISCV ABI.Abi_riscv_relocation
abi_riscv_relocation
contains types and definitions relating to ABI * specific relocation functionality for the RISCV ABI.Abi_riscv_section_header_table
abi_mips64_section_header_table
module contains section header table * specific definitions for the MIPS64 ABI.Abi_riscv_serialisation
abi_riscv_serialisation
contains code for producing an RISCV conformant * ELF file from executable (machine) code. * Used in ongoing experiments with CakeML. * * XXX: experimental, and outdated. Commented out for now until attention turns * to CakeML again.Abi_riscv_symbol_table
abi_mips64_symbol_table
, MIPS64 ABI specific definitions for the ELF symbol * table.Abi_riscv
abi_riscv
contains top-level definition for the RISCV ABI.Abi_cheri_mips64_capability
Abi_cheri_mips64_dynamic
Abi_cheri_mips64_elf_header
Abi_cheri_mips64_relocation
Abi_cheri_mips64
Gnu_ext_types_native_uint
gnu_ext_types_native_uint
provides extended types defined by the GNU * extensions over and above the based ELF types.Gnu_ext_section_header_table
The modulegnu_ext_section_header_table
implements function, definitions * and types relating to the GNU extensions to the standard ELF section header * table.Gnu_ext_dynamic
gnu_ext_dynamic
contains GNU extension specific definitions related to the * .dynamic section of an ELF file.Gnu_ext_symbol_versioning
Thegnu_ext_symbol_versioning
defines constants, types and functions * relating to the GNU symbol versioning extensions (i.e. contents of * GNU_VERSYM sections). * * TODO: work out what is going on with symbol versioning. The specification * is completely opaque.Gnu_ext_program_header_table
gnu_ext_program_header_table
contains GNU extension specific functionality * related to the program header table.Gnu_ext_section_to_segment_mapping
gnu_ext_section_to_segment_mapping
contains (GNU specific) functionality * relating to calculating the section to segment mapping for an ELF file. In * particular, the test over whether a section is inside a segment is ABI * specific. This module provides that test.Gnu_ext_note
gnu_ext_note
contains GNU extension specific definitions relating to the * .note section/segment of an ELF file.Abis
Theabis
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.Sail_interface
Harness_interface
Elf_memory_image
Elf_memory_image_of_elf64_file
Command_line
Input_list
Linkable_list
Linker_script
Link
Load
Elf64_file_of_elf_memory_image
Test_image