Théophile Bastian
3d336de196
Once rbp has been set in the DWARF, if this flag is set, nothing will remove it from the table. This mimicks gcc and allows us to check easily our tables against theirs.
37 lines
970 B
OCaml
37 lines
970 B
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 () = Cnf.(
|
|
when_ready ((fun {get=(!!)} ->
|
|
Bap.Std.Project.register_pass' (main
|
|
~no_rbp_undef:!!no_rbp_undef
|
|
!!outfile )))
|
|
)
|
|
end
|