123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168(*Generated by Lem from abis/mips64/abi_mips64_dynamic.lem.*)openLem_basic_classesopenLem_numopenLem_stringopenErroropenMissing_pervasivesopenShowopenString_tableopenElf_dynamicopenElf_types_native_uint(* Legal values for d_tag field of Elf32_Dyn. *)letabi_mips64_dt_rld_version:Nat_big_num.num=(natural_of_hex"0x70000001")(** Runtime linker interface version *)letabi_mips64_dt_time_stamp:Nat_big_num.num=(natural_of_hex"0x70000002")(** Timestamp *)letabi_mips64_dt_ichecksum:Nat_big_num.num=(natural_of_hex"0x70000003")(** Checksum *)letabi_mips64_dt_iversion:Nat_big_num.num=(natural_of_hex"0x70000004")(** Version string (string tbl index) *)letabi_mips64_dt_flags:Nat_big_num.num=(natural_of_hex"0x70000005")(** Flags *)letabi_mips64_dt_base_address:Nat_big_num.num=(natural_of_hex"0x70000006")(** Base address *)letabi_mips64_dt_msym:Nat_big_num.num=(natural_of_hex"0x70000007")letabi_mips64_dt_conflict:Nat_big_num.num=(natural_of_hex"0x70000008")(** Address of CONFLICT section *)letabi_mips64_dt_liblist:Nat_big_num.num=(natural_of_hex"0x70000009")(** Address of LIBLIST section *)letabi_mips64_dt_local_gotno:Nat_big_num.num=(natural_of_hex"0x7000000a")(** Number of local GOT entries *)letabi_mips64_dt_conflictno:Nat_big_num.num=(natural_of_hex"0x7000000b")(** Number of CONFLICT entries *)letabi_mips64_dt_liblistno:Nat_big_num.num=(natural_of_hex"0x70000010")(** Number of LIBLIST entries *)letabi_mips64_dt_symtabno:Nat_big_num.num=(natural_of_hex"0x70000011")(** Number of DYNSYM entries *)letabi_mips64_dt_unrefextno:Nat_big_num.num=(natural_of_hex"0x70000012")(** First external DYNSYM *)letabi_mips64_dt_gotsym:Nat_big_num.num=(natural_of_hex"0x70000013")(** First GOT entry in DYNSYM *)letabi_mips64_dt_hipageno:Nat_big_num.num=(natural_of_hex"0x70000014")(** Number of GOT page table entries *)letabi_mips64_dt_rld_map:Nat_big_num.num=(natural_of_hex"0x70000016")(** Address of run time loader map. *)letabi_mips64_dt_delta_class:Nat_big_num.num=(natural_of_hex"0x70000017")(** Delta C++ class definition. *)letabi_mips64_dt_delta_class_no:Nat_big_num.num=(natural_of_hex"0x70000018")(** Number of entries in DT_MIPS_DELTA_CLASS. *)letabi_mips64_dt_delta_instance:Nat_big_num.num=(natural_of_hex"0x70000019")(** Delta C++ class instances. *)letabi_mips64_dt_delta_instance_no:Nat_big_num.num=(natural_of_hex"0x7000001a")(** Number of entries in DT_MIPS_DELTA_INSTANCE. *)letabi_mips64_dt_delta_reloc:Nat_big_num.num=(natural_of_hex"0x7000001b")(** Delta relocations. *)letabi_mips64_dt_delta_reloc_no:Nat_big_num.num=(natural_of_hex"0x7000001c")(** Number of entries in DT_MIPS_DELTA_RELOC. *)letabi_mips64_dt_delta_sym:Nat_big_num.num=(natural_of_hex"0x7000001d")(** Delta symbols that Delta relocations refer to. *)letabi_mips64_dt_delta_sym_no:Nat_big_num.num=(natural_of_hex"0x7000001e")(** Number of entries in DT_MIPS_DELTA_SYM. *)letabi_mips64_dt_delta_classsym:Nat_big_num.num=(natural_of_hex"0x70000020")(** Delta symbols that hold the class declaration. *)letabi_mips64_dt_delta_classsym_no:Nat_big_num.num=(natural_of_hex"0x70000021")(** Number of entries in DT_MIPS_DELTA_CLASSSYM. *)letabi_mips64_dt_cxx_flags:Nat_big_num.num=(natural_of_hex"0x70000022")(** Flags indicating for C++ flavor. *)letabi_mips64_dt_pixie_init:Nat_big_num.num=(natural_of_hex"0x70000023")letabi_mips64_dt_symbol_lib:Nat_big_num.num=(natural_of_hex"0x70000024")letabi_mips64_dt_localpage_gotidx:Nat_big_num.num=(natural_of_hex"0x70000025")letabi_mips64_dt_local_gotidx:Nat_big_num.num=(natural_of_hex"0x70000026")letabi_mips64_dt_hidden_gotidx:Nat_big_num.num=(natural_of_hex"0x70000027")letabi_mips64_dt_protected_gotidx:Nat_big_num.num=(natural_of_hex"0x70000028")letabi_mips64_dt_options:Nat_big_num.num=(natural_of_hex"0x70000029")(** Address of .options. *)letabi_mips64_dt_interface:Nat_big_num.num=(natural_of_hex"0x7000002a")(** Address of .interface. *)letabi_mips64_dt_dynstr_align:Nat_big_num.num=(natural_of_hex"0x7000002b")letabi_mips64_dt_interface_size:Nat_big_num.num=(natural_of_hex"0x7000002c")(** Size of the .interface section. *)(** Address of rld_text_rsolve function stored in GOT. *)letabi_mips64_dt_rld_text_resolve_addr:Nat_big_num.num=(natural_of_hex"0x7000002d")(** Default suffix of dso to be added by rld on dlopen() calls. *)letabi_mips64_dt_perf_suffix:Nat_big_num.num=(natural_of_hex"0x7000002e")letabi_mips64_dt_compact_size:Nat_big_num.num=(natural_of_hex"0x7000002f")(** (O32)Size of compact rel section. *)letabi_mips64_dt_gp_value:Nat_big_num.num=(natural_of_hex"0x70000030")(** GP value for aux GOTs. *)letabi_mips64_dt_aux_dynamic:Nat_big_num.num=(natural_of_hex"0x70000031")(** Address of aux .dynamic. *)(** The address of .got.plt in an executable using the new non-PIC ABI. *)letabi_mips64_dt_pltgot:Nat_big_num.num=(natural_of_hex"0x70000032")(** The base of the PLT in an executable using the new non-PIC ABI if that
PLT is writable. For a non-writable PLT, this is omitted or has a zero
value. *)letabi_mips64_dt_rwplt:Nat_big_num.num=(natural_of_hex"0x70000034")(** An alternative description of the classic MIPS RLD_MAP that is usable
in a PIE as it stores a relative offset from the address of the tag
rather than an absolute address. *)letabi_mips64_dt_rld_map_rel:Nat_big_num.num=(natural_of_hex"0x70000035")letabi_mips64_dt_num:Nat_big_num.num=(natural_of_hex"0x36")(*val string_of_abi_mips64_dynamic_tag : natural -> string*)letstring_of_abi_mips64_dynamic_tagm:string=(ifNat_big_num.equalmabi_mips64_dt_rld_versionthen"MIPS64_RLD_VERSION"elseifNat_big_num.equalmabi_mips64_dt_flagsthen"MIPS64_FLAGS"elseifNat_big_num.equalmabi_mips64_dt_base_addressthen"MIPS64_BASE_ADDRESS"elseifNat_big_num.equalmabi_mips64_dt_local_gotnothen"MIPS64_LOCAL_GOTNO"elseifNat_big_num.equalmabi_mips64_dt_symtabnothen"MIPS64_SYMTABNO"elseifNat_big_num.equalmabi_mips64_dt_unrefextnothen"MIPS64_RLD_UNREFEXTNO"elseifNat_big_num.equalmabi_mips64_dt_gotsymthen"MIPS64_RLD_GOTSYM"elseifNat_big_num.equalmabi_mips64_dt_rld_mapthen"MIPS64_RLD_MAP"elseifNat_big_num.equalmabi_mips64_dt_rld_map_relthen"MIPS64_RLD_MAP_REL"else"Invalid MIPS64 dynamic tag 0x"^(hex_string_of_naturalm))(*val abi_mips64_tag_correspondence_of_tag : natural -> error tag_correspondence*)letabi_mips64_tag_correspondence_of_tagm:(tag_correspondence)error=(ifNat_big_num.equalmabi_mips64_dt_rld_versionthenreturnC_ValelseifNat_big_num.equalmabi_mips64_dt_flagsthenreturnC_ValelseifNat_big_num.equalmabi_mips64_dt_base_addressthenreturnC_PtrelseifNat_big_num.equalmabi_mips64_dt_local_gotnothenreturnC_ValelseifNat_big_num.equalmabi_mips64_dt_symtabnothenreturnC_ValelseifNat_big_num.equalmabi_mips64_dt_unrefextnothenreturnC_ValelseifNat_big_num.equalmabi_mips64_dt_gotsymthenreturnC_ValelseifNat_big_num.equalmabi_mips64_dt_rld_mapthenreturnC_PtrelseifNat_big_num.equalmabi_mips64_dt_rld_map_relthenreturnC_Ptrelsefail("abi_mips64_tag_correspondence_of_tag: invalid MIPS64 dynamic tag 0x"^(hex_string_of_naturalm)))(*val abi_mips64_elf64_value_of_elf64_dyn : elf64_dyn -> string_table -> error elf64_dyn_value*)letabi_mips64_elf64_value_of_elf64_dyndynstbl:(((Uint64_wrapper.uint64),(Uint64_wrapper.uint64))dyn_value)error=(lettag=(Nat_big_num.abs(Nat_big_num.of_int64dyn.elf64_dyn_tag))inifNat_big_num.equaltagabi_mips64_dt_rld_versionthenbind(matchdyn.elf64_dyn_d_unwith|D_Valv->returnv|_->fail"abi_mips64_elf64_value_of_elf64_dyn: RLD_VERSION must be a Val")(funv->return(Numeric(Ml_bindings.nat_big_num_of_uint64v)))elseifNat_big_num.equaltagabi_mips64_dt_flagsthenbind(matchdyn.elf64_dyn_d_unwith|D_Valv->returnv|_->fail"abi_mips64_elf64_value_of_elf64_dyn: FLAGS must be a Val")(funflags->return(Flags(Ml_bindings.nat_big_num_of_uint64flags)))elseifNat_big_num.equaltagabi_mips64_dt_base_addressthenbind(matchdyn.elf64_dyn_d_unwith|D_Ptrv->returnv|_->fail"abi_mips64_elf64_value_of_elf64_dyn: BASE_ADDRESS must be a PTR")(funv->return(Addressv))elseifNat_big_num.equaltagabi_mips64_dt_local_gotnothenbind(matchdyn.elf64_dyn_d_unwith|D_Valv->returnv|_->fail"abi_mips64_elf64_value_of_elf64_dyn: LOCAL_GOTNO must be a Val")(funv->return(Numeric(Ml_bindings.nat_big_num_of_uint64v)))elseifNat_big_num.equaltagabi_mips64_dt_symtabnothenbind(matchdyn.elf64_dyn_d_unwith|D_Valv->returnv|_->fail"abi_mips64_elf64_value_of_elf64_dyn: SYMTABNO must be a Val")(funv->return(Numeric(Ml_bindings.nat_big_num_of_uint64v)))elseifNat_big_num.equaltagabi_mips64_dt_unrefextnothenbind(matchdyn.elf64_dyn_d_unwith|D_Valv->returnv|_->fail"abi_mips64_elf64_value_of_elf64_dyn: UNREFEXTNO must be a Val")(funv->return(Numeric(Ml_bindings.nat_big_num_of_uint64v)))elseifNat_big_num.equaltagabi_mips64_dt_gotsymthenbind(matchdyn.elf64_dyn_d_unwith|D_Valv->returnv|_->fail"abi_mips64_elf64_value_of_elf64_dyn: GOTSYM must be a Val")(funv->return(Numeric(Ml_bindings.nat_big_num_of_uint64v)))elseifNat_big_num.equaltagabi_mips64_dt_rld_mapthenbind(matchdyn.elf64_dyn_d_unwith|D_Ptrv->returnv|_->fail"abi_mips64_elf64_value_of_elf64_dyn: RLD_MAP must be a PTR")(funv->return(Addressv))elseifNat_big_num.equaltagabi_mips64_dt_rld_map_relthenbind(matchdyn.elf64_dyn_d_unwith|D_Ptrv->returnv|_->fail"abi_mips64_elf64_value_of_elf64_dyn: RLD_MAP_REL must be a PTR")(funv->return(Addressv))elsefail("abi_mips64_elf64_value_of_elf64_dyn: invalid MIPS64 dynamic tag 0x"^(hex_string_of_naturaltag)))