1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859(*Generated by Lem from abis/riscv/abi_riscv_elf_header.lem.*)(** [abi_riscv_elf_header] contains types and definitions relating to ABI
* specific ELF header functionality for the RISCV ABI.
*)openLem_basic_classesopenLem_boolopenLem_listopenLem_numopenLem_maybeopenMissing_pervasivesopenElf_headeropenElf_types_native_uintopenEndianness(*val abi_riscv_data_encoding : natural*)letabi_riscv_data_encoding:Nat_big_num.num=elf_data_2lsb(*val abi_riscv_endianness : endianness*)letabi_riscv_endianness:endianness=Little(* Must match above *)(*val abi_riscv_file_class : natural*)letabi_riscv_file_class:Nat_big_num.num=elf_class_64(*val abi_riscv_file_version : natural*)letabi_riscv_file_version:Nat_big_num.num=elf_ev_current(*val abi_riscv_page_size_min : natural*)letabi_riscv_page_size_min:Nat_big_num.num=((Nat_big_num.of_int4096))(*val abi_riscv_page_size_max : natural*)letabi_riscv_page_size_max:Nat_big_num.num=((Nat_big_num.of_int65536))(** [is_valid_abi_riscv_machine_architecture m] checks whether the ELF header's
* machine architecture is valid according to the ABI-specific specification.
*)(*val is_valid_abi_riscv_machine_architecture : natural -> bool*)letis_valid_abi_riscv_machine_architecturem:bool=(Nat_big_num.equalmelf_ma_riscv)(** [is_valid_abi_riscv_magic_number magic] checks whether the ELF header's
* magic number is valid according to the ABI-specific specification.
* File class must be 64-bit (pg 60)
* Data encoding must be little endian (pg 60)
*)(*val is_valid_abi_riscv_magic_number : list unsigned_char -> bool*)letis_valid_abi_riscv_magic_numbermagic:bool=((matchLem_list.list_indexmagic(Nat_big_num.to_intelf_ii_class)with|None->false|Somecls->(matchLem_list.list_indexmagic(Nat_big_num.to_intelf_ii_data)with|None->false|Somedata->(Nat_big_num.equal(Uint32_wrapper.to_bigintcls)abi_riscv_file_class)&&(Nat_big_num.equal(Uint32_wrapper.to_bigintdata)abi_riscv_data_encoding))))