Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Source file read_symbols_main.ml
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364openBap_knowledgeopenCore_kernelopenRegular.StdopenBap_future.StdopenBap.StdincludeSelf()letextractnamearch=letblk_of_sexpx=[%of_sexp:string*int64*int64]xinletwidth=Arch.addr_sizearch|>Size.in_bitsinletaddr=Addr.of_int64~widthinIn_channel.with_filename~f:(funch->Sexp.input_sexpsch|>List.map~f:blk_of_sexp|>List.map~f:(fun(n,s,e)->n,addrs,addre))moduletypeTarget=sigtypetvalof_blocks:(string*addr*addr)seq->tvalset_path:t->string->tvalprovide:Knowledge.agent->t->unitendletagent=letreliability=Knowledge.Agent.authorativeinKnowledge.Agent.register~package:"bap"~reliability"user-symbolizer"~desc:"reads symbols from the user provided file"letregistersyms=letprovide(moduleT:Target)=letproviders=Stream.mergeProject.Info.archProject.Info.file~f:(funarchpath->extractsymsarch|>Seq.of_list|>T.of_blocks|>funt->T.set_pathtpath)inStream.observeproviders(T.provideagent)inprovide(modulestructincludeRooterletprovide_s=providesend);provide(moduleSymbolizer)let()=let()=Config.manpage[`S"DESCRIPTION";`P"Read symbol information from a file and provide rooter,
symbolizer and a reconstructor, based on this information. Once
symbols are read, use $(b,--)$(i,SERVICE)=$(b,file) to use them.
where $(i,SERVICE) is one of $(b,rooter), $(b,symbolizer) or $(b,reconstructor).
";`S"SEE ALSO";`P"$(b,bap-plugin-objdump)(1), $(b,bap-plugin-byteweight)(1), $(b,bap-plugin-ida)(1)";]inletsymsfile=Config.(param(somenon_dir_file)"from"~docv:"SYMS"~doc:"Use this file as symbols source")inConfig.when_ready(fun{Config.get=(!)}->match!symsfilewith|Somefile->registerfile|None->())