46 lines
1.2 KiB
OCaml
46 lines
1.2 KiB
OCaml
(** dwarfsynth
|
|
*
|
|
* Entry point for the BAP plugin `dwarfsynth`, defining the command line
|
|
* interface
|
|
**)
|
|
|
|
module Self = struct
|
|
include Bap.Std.Self()
|
|
end
|
|
|
|
let main = DwarfSynth.Main.main
|
|
|
|
module Cmdline = struct
|
|
module Cnf = Self.Config
|
|
|
|
let outfile = Cnf.(
|
|
param (string) "output"
|
|
~doc:("The file in which the output marshalled data will be written. "
|
|
^ "Output goes to ./tmp.marshal by default.")
|
|
~default:"tmp.marshal"
|
|
)
|
|
|
|
let no_rbp_undef = Cnf.(
|
|
param (bool) "no-rbp-undef"
|
|
~doc:("Do not unset %rbp after it has been set once in a FDE. "
|
|
^"This mimics gcc eh_frame for ease of validation.")
|
|
~as_flag:true
|
|
~default:false
|
|
)
|
|
|
|
let timers = Cnf.(
|
|
param (bool) "timers"
|
|
~doc:("Enable timers: print time probes at various points of the "
|
|
^"code.")
|
|
~as_flag:true
|
|
~default: false
|
|
)
|
|
|
|
let () = Cnf.(
|
|
when_ready ((fun {get=(!!)} ->
|
|
Bap.Std.Project.register_pass' (main
|
|
~no_rbp_undef:!!no_rbp_undef
|
|
~timers:!!timers
|
|
!!outfile )))
|
|
)
|
|
end
|