ROSE  0.9.10.230
BinaryUnparser.h
1 // Basic types for binary unparsing.
2 #ifndef ROSE_BinaryAnalysis_Unparser_H
3 #define ROSE_BinaryAnalysis_Unparser_H
4 
5 #include <Sawyer/CommandLine.h>
6 #include <BaseSemantics2.h>
7 #include <BinaryEdgeArrows.h>
8 
9 namespace Rose {
10 namespace BinaryAnalysis {
11 namespace Unparser {
12 
18 struct Settings {
19  virtual ~Settings() {}
20 
21  struct {
24  struct {
25  bool showing;
26  } cg;
27  struct {
28  bool showing;
29  bool concrete;
30  } stackDelta;
31  struct {
32  bool showing;
33  } callconv;
34  struct {
35  bool showing;
36  } noop;
37  struct {
38  bool showing;
39  } mayReturn;
40  } function;
42  struct {
43  struct {
48  } cfg;
49  struct {
51  } reach;
52  } bblock;
54  struct {
55  struct {
56  bool showing;
57  size_t fieldWidth;
58  } address;
60  struct {
61  bool showing;
62  size_t perLine;
63  size_t fieldWidth;
64  } bytes;
66  struct {
67  bool showing;
68  size_t fieldWidth;
69  } stackDelta;
71  struct {
72  size_t fieldWidth;
73  std::string semanticFailureMarker;
74  } mnemonic;
76  struct {
77  std::string separator;
78  size_t fieldWidth;
79  } operands;
81  struct {
82  bool showing;
84  std::string pre;
85  std::string post;
86  size_t fieldWidth;
87  } comment;
89  struct {
90  bool showing;
92  bool tracing;
93  } semantics;
94  } insn;
96  struct {
98  } arrow;
100  Settings();
101  static Settings full();
102  static Settings minimal();
103 };
104 
105 // Forward declarations.
106 class Base;
107 class State;
108 typedef Sawyer::SharedPointer<Base> BasePtr;
109 
111 Sawyer::CommandLine::SwitchGroup commandLineSwitches(Settings &settings);
112 
113 } // namespace
114 } // namespace
115 } // namespace
116 
117 #endif
struct Rose::BinaryAnalysis::Unparser::Settings::@779::@785 callconv
Settings for function calling convention.
struct Rose::BinaryAnalysis::Unparser::Settings::@781::@795 comment
Settings for instruction comments.
std::string semanticFailureMarker
Mark instruction if it had semantic failures.
bool usingDescription
Lacking comment, use instruction description as comment?
size_t perLine
Max number of bytes to show per line of output.
A collection of related switch declarations.
struct Rose::BinaryAnalysis::Unparser::Settings::@780::@788 cfg
Settings for control flow graphs.
Main namespace for the ROSE library.
Settings that control unparsing.
bool showingPredecessors
Show basic block predecessors?
struct Rose::BinaryAnalysis::Unparser::Settings::@781::@791 bytes
Settings for the bytes that make up an instruction.
struct Rose::BinaryAnalysis::Unparser::Settings::@780::@789 reach
Reachability analysis results.
struct Rose::BinaryAnalysis::Unparser::Settings::@781::@790 address
Settings for instruction starting addresses.
EdgeArrows::ArrowStylePreset style
One of the arrow style presets.
struct Rose::BinaryAnalysis::Unparser::Settings::@779::@786 noop
Settings for no-op analysis.
bool showingSharing
Show functions when block is shared?
bool showing
Show function call graph?
struct Rose::BinaryAnalysis::Unparser::Settings::@779::@784 stackDelta
Settings for function stack deltas.
struct Rose::BinaryAnalysis::Unparser::Settings::@779::@783 cg
Settings for function call graphs.
bool tracing
Show instruction semantics traces when showing semantics.
bool showingReasons
Show reasons for function existing.
std::string pre
String to introduce a comment.
struct Rose::BinaryAnalysis::Unparser::Settings::@781::@793 mnemonic
Settings for instruction mnemonics.
bool showingArrows
Draw arrows from one block to another.
std::string separator
How to separate one operand from another.
struct Rose::BinaryAnalysis::Unparser::Settings::@779::@787 mayReturn
Settings for may-return analysis.
struct Rose::BinaryAnalysis::Unparser::Settings::@781::@794 operands
Settings for the operand list.
std::string post
String to terminate a comment.
size_t fieldWidth
Min characters to use per insn address.
struct Rose::BinaryAnalysis::Unparser::Settings::@781 insn
Settings for instructions.
bool concrete
Show concrete or symbolic deltas.
bool showingDemangled
Show demangled name in preference to mangled name.
InstructionSemantics2::BaseSemantics::Formatter formatter
How to format the semantic state output.
bool showingReachability
Show code reachability in the basic block prologue area.
struct Rose::BinaryAnalysis::Unparser::Settings::@782 arrow
How to render arrows along the left margin.
bool showingSuccessors
Show basic block successors?
struct Rose::BinaryAnalysis::Unparser::Settings::@780 bblock
Settings for basic blocks.