Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Source file types.ml
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306(**************************************************************************)(* This file is part of BINSEC. *)(* *)(* Copyright (C) 2016-2024 *)(* CEA (Commissariat à l'énergie atomique et aux énergies *)(* alternatives) *)(* *)(* you can redistribute it and/or modify it under the terms of the GNU *)(* Lesser General Public License as published by the Free Software *)(* Foundation, version 2.1. *)(* *)(* It is distributed in the hope that it will be useful, *)(* but WITHOUT ANY WARRANTY; without even the implied warranty of *)(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *)(* GNU Lesser General Public License for more details. *)(* *)(* See the GNU Lesser General Public License version 2.1 *)(* for more details (enclosed in the file licenses/LGPLv2.1). *)(* *)(**************************************************************************)moduleS=Basic_types.StringmoduleI=Basic_types.IntmoduleA=structtypet=stringoptionletequaltt'=match(t,t')with|None,None->true|Somename,Somename'->String.equalnamename'|(None|Some_),(None|Some_)->falseletcomparett'=match(t,t')with|None,None->0|Somename,Somename'->String.comparenamename'|None,Some_->-1|Some_,None->1lethash=functionNone->129913994|Somename->Hashtbl.hashnameletdefault=NoneendmoduleExpr=Dba.ExprmoduleVar=Dba.VarmoduleOutput=structtypeformat=Bin|Dec|Hex|Asciitypet=|Model|Formula|Sliceof(Expr.t*string)list|Valueofformat*Expr.t|Streamofstring|Stringofstringletformat_str=function|Bin->"bin"|Dec->"dec"|Hex->"hexa"|Ascii->"ascii"letppppf=function|Model->Format.pp_print_stringppf"model"|Formula->Format.pp_print_stringppf"formula"|Slicedefs->Format.fprintfppf"formula for %a"(Format.pp_print_list~pp_sep:(funppf()->Format.pp_print_stringppf", ")(funppf(expr,name)->Format.fprintfppf"%a as %s"Dba_printer.Ascii.pp_bl_termexprname))defs|Value(fmt,e)->Format.fprintfppf"%s %a"(format_strfmt)Dba_printer.Ascii.pp_bl_terme|Streamname->Format.fprintfppf"ascii stream %s"name|Stringname->Format.fprintfppf"c string %s"nameendexceptionUnknownexceptionUnresolvedofstring*Var.Tag.attributeexceptionUndefofVar.texceptionUninterpofstringexceptionNon_uniqueexceptionNon_mergeablelet()=Printexc.register_printer(function|Unresolved(name,attr)->Some(Format.asprintf"Can not resolve symbol <%s%a>"nameDba.Var.Tag.pp_attributeattr)|_->None)type'atest=Trueof'a|Falseof'a|Bothof{t:'a;f:'a}type'atarget=('a*string)listoptiontypesize=Term.sizeand'ainterval='aTerm.intervalandunary=Term.unaryandbinary=Term.binaryand'aoperator='aTerm.operator=|Not:unaryoperator|Sext:size->unaryoperator|Uext:size->unaryoperator|Restrict:intinterval->unaryoperator|Plus:binaryoperator|Minus:_operator|Mul:binaryoperator|Udiv:binaryoperator(* Corresponds to *)|Umod:binaryoperator(* the truncated division *)|Sdiv:binaryoperator(* of C99 and most *)|Smod:binaryoperator(* processors *)|Or:binaryoperator|And:binaryoperator|Xor:binaryoperator|Concat:binaryoperator|Lsl:binaryoperator|Lsr:binaryoperator|Asr:binaryoperator|Rol:binaryoperator|Ror:binaryoperator|Eq:binaryoperator|Diff:binaryoperator|Ule:binaryoperator|Ult:binaryoperator|Uge:binaryoperator|Ugt:binaryoperator|Sle:binaryoperator|Slt:binaryoperator|Sge:binaryoperator|Sgt:binaryoperatortype_value=..type_value+=Abstract:_valuemoduletypeUID=sigtypetvalzero:tvalsucc:t->tvalcompare:t->t->intendmoduletypeVALUE=sigtypet(** Symbolic value *)typeidtypestatevalkind:tvaluevalconstant:Bitvector.t->tvalvar:id->string->int->tvalunary:unaryoperator->t->tvalbinary:binaryoperator->t->t->tvalite:t->t->t->tendtype'afeature=..moduletypeRAW_STATE=sigtypet(** Symbolic state *)moduleUid:UIDmoduleValue:VALUEwithtypeid:=Uid.tandtypestate:=tvallookup:Var.t->t->Value.tvalread:addr:Value.t->int->Machine.endianness->t->Value.t*tvalselect:string->addr:Value.t->int->Machine.endianness->t->Value.t*tvalempty:unit->tvalassume:Value.t->t->toptionvaltest:Value.t->t->ttestvalget_value:Value.t->t->Bitvector.tvalget_a_value:Value.t->t->Bitvector.tvalenumerate:Value.t->?n:int->?except:Bitvector.tlist->t->(Bitvector.t*t)listvalalloc:array:string->t->tvalassign:Var.t->Value.t->t->tvalwrite:addr:Value.t->Value.t->Machine.endianness->t->tvalstore:string->addr:Value.t->Value.t->Machine.endianness->t->tvalmemcpy:addr:Bitvector.t->int->Loader_buf.t->t->tvalmerge:parent:t->t->t->tvalassertions:t->Value.tlistvalpp:Format.formatter->t->unitvalpp_smt:Value.ttarget->Format.formatter->t->unitvalto_formula:t->Formula.formulavalgetter:'afeature->(t->'a)option(** [getter feature]
returns a getter function from a state to an extended feature.
It returns [None] if the current implementation does not support the
queried feature.
*)valsetter:'afeature->('a->t->t)option(** [setter feature]
returns a setter function to update an extended feature.
It returns [None] if the current implementation does not support the
queried feature.
*)endtype_keymoduletypeSTATE=sigincludeRAW_STATEvalid:Uid.tkeyvalsymbols:Value.tlistS.Map.tkeyendtypestatus=|Halt|Cut|Unsatisfiable_assumption|Assertion_failed|Max_depth|Enumeration_limit|Unresolved_formula|Non_executable_code|DiemoduletypeEXPLORATION_STATISTICS=sigvalget_paths:unit->intvalget_completed_paths:unit->intvalget_unknown_paths:unit->intvalget_pending_paths:unit->intvalget_status:status->intvalget_total_asserts:unit->intvalget_failed_asserts:unit->intvalget_branches:unit->intvalget_max_depth:unit->intvalget_instructions:unit->intvalget_unique_insts:unit->intvalget_time:unit->floatvalpp:Format.formatter->unit->unitvalto_toml:unit->Toml.Types.tableendmoduletypeEXPLORATION_STATISTICS_FULL=sigincludeEXPLORATION_STATISTICSvalreset:unit->unitvaladd_path:unit->unitvalterminate_path:status->unitvaladd_assert:unit->unitvaladd_failed_assert:unit->unitvaladd_branch:unit->unitvalupdate_depth:int->unitvaladd_instructions:int->unitvalregister_address:Virtual_address.t->unitendmoduletypeQUERY_STATISTICS=sigmodulePreprocess:sigvalget_true:unit->intvalget_false:unit->intvalget_const:unit->intvalincr_true:unit->unitvalincr_false:unit->unitvalincr_const:unit->unitvalpp:Format.formatter->unit->unitvalto_toml:unit->Toml.Types.tableendmoduleSolver:sigvalget_sat:unit->intvalget_unsat:unit->intvalget_err:unit->intvalget_time:unit->floatvalincr_sat:unit->unitvalincr_unsat:unit->unitvalincr_err:unit->unitvalstart_timer:unit->unitvalstop_timer:unit->unitvalpp:Format.formatter->unit->unitvalto_toml:unit->Toml.Types.tableendvalreset:unit->unitvalpp:Format.formatter->unit->unitendmoduletypeSTATE_FACTORY=functor(QS:QUERY_STATISTICS)->RAW_STATEmoduletypeWORKLIST=sigtype'atvalpush:'a->'at->'atvalpop:'at->'a*'atvalsingleton:'a->'atvallength:'at->intvalis_empty:'at->boolvalempty:'atend