ROSE  0.11.51.0
Unparser/Settings.h
1 // Basic types for binary unparsing.
2 #ifndef ROSE_BinaryAnalysis_Unparser_Settings_H
3 #define ROSE_BinaryAnalysis_Unparser_Settings_H
4 #include <featureTests.h>
5 #ifdef ROSE_ENABLE_BINARY_ANALYSIS
6 
7 #include <Rose/Color.h>
8 #include <Rose/BinaryAnalysis/InstructionSemantics2/BaseSemantics.h>
9 #include <Rose/BinaryAnalysis/Unparser/EdgeArrows.h>
10 #include <Sawyer/CommandLine.h>
11 
12 namespace Rose {
13 namespace BinaryAnalysis {
14 namespace Unparser {
15 
17 struct Style {
22  std::string ansiStyle() const;
23 };
24 
30 struct Settings {
31  virtual ~Settings() {}
32 
35  struct {
36  struct {
38  } line;
39  struct {
40  Style style;
41  } trailing;
42  } comment;
43 
44  struct {
50  struct {
51  bool showing;
52  } cg;
53  struct {
54  bool showing;
55  bool concrete;
56  } stackDelta;
57  struct {
58  bool showing;
59  } callconv;
60  struct {
61  bool showing;
62  } noop;
63  struct {
64  bool showing;
65  } mayReturn;
66  } function;
68  struct {
70  struct {
76  } cfg;
77  struct {
79  } reach;
80  } bblock;
82  struct {
84  } dblock;
85 
86  struct {
87  struct {
88  bool showing;
89  bool useLabels;
90  size_t fieldWidth;
91  Style style;
92  } address;
94  struct {
95  bool showing;
96  size_t perLine;
97  size_t fieldWidth;
98  Style style;
99  } bytes;
101  struct {
102  bool showing;
103  size_t fieldWidth;
104  Style style;
105  } stackDelta;
107  struct {
108  size_t fieldWidth;
109  std::string semanticFailureMarker;
111  Style style;
112  } mnemonic;
114  struct {
115  std::string separator;
116  size_t fieldWidth;
118  Style style;
119  } operands;
121  struct {
122  bool showing;
124  std::string pre;
125  std::string post;
126  size_t fieldWidth;
127  } comment;
129  struct {
130  bool showing;
132  bool tracing;
133  Style style;
134  } semantics;
135  } insn;
137  struct {
139  } arrow;
141  Settings();
142  static Settings full();
143  static Settings minimal();
144 };
145 
146 // Forward declarations.
147 class Base;
148 class State;
149 typedef Sawyer::SharedPointer<Base> BasePtr;
150 
152 Sawyer::CommandLine::SwitchGroup commandLineSwitches(Settings &settings);
153 
154 } // namespace
155 } // namespace
156 } // namespace
157 
158 #endif
159 #endif
struct Rose::BinaryAnalysis::Unparser::Settings::@852::@863 cfg
Settings for control flow graphs.
Control colored command output.
Definition: Rose/Color.h:40
struct Rose::BinaryAnalysis::Unparser::Settings::@854 insn
Settings for instructions.
struct Rose::BinaryAnalysis::Unparser::Settings::@851::@861 noop
Settings for no-op analysis.
struct Rose::BinaryAnalysis::Unparser::Settings::@850::@857 trailing
Comment extending to the end of the line.
std::string semanticFailureMarker
Mark instruction if it had semantic failures.
Color::Colorization colorization
Overrides for global color settings.
struct Rose::BinaryAnalysis::Unparser::Settings::@851::@862 mayReturn
Settings for may-return analysis.
struct Rose::BinaryAnalysis::Unparser::Settings::@854::@866 bytes
Settings for the bytes that make up an instruction.
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::@852 bblock
Settings for basic blocks.
struct Rose::BinaryAnalysis::Unparser::Settings::@852::@864 reach
Reachability analysis results.
struct Rose::BinaryAnalysis::Unparser::Settings::@851::@860 callconv
Settings for function calling convention.
Main namespace for the ROSE library.
Settings that control unparsing.
bool showingPredecessors
Show basic block predecessors?
struct Rose::BinaryAnalysis::Unparser::Settings::@854::@868 mnemonic
Settings for instruction mnemonics.
EdgeArrows::ArrowStylePreset style
One of the arrow style presets.
bool useLabels
Generate labels and use them instead of addresses?
struct Rose::BinaryAnalysis::Unparser::Settings::@854::@869 operands
Settings for the operand list.
Sawyer::Optional< Color::HSV > background
Optional background color.
Sawyer::Optional< Color::HSV > foreground
Optional foreground color.
bool showingSharing
Show functions when block is shared?
bool showing
Show function call graph?
std::string ansiStyle() const
Generate the ANSI escape for the style.
bool tracing
Show instruction semantics traces when showing semantics.
Style style
Style for printing the address.
bool showingReasons
Show reasons for function existing.
Style titleStyle
Style for title line of function.
bool showingSourceLocation
Show source file name and line number when available.
struct Rose::BinaryAnalysis::Unparser::Settings::@855 arrow
How to render arrows along the left margin.
std::string pre
String to introduce a comment.
bool showingArrows
Draw arrows from one block to another.
std::string separator
How to separate one operand from another.
struct Rose::BinaryAnalysis::Unparser::Settings::@850::@856 line
Comment occupying an entire line.
Style separatorStyle
Style of the line separating functions.
struct Rose::BinaryAnalysis::Unparser::Settings::@854::@865 address
Settings for instruction starting addresses.
Style semanticFailureStyle
Style for the semantic failure indicator.
struct Rose::BinaryAnalysis::Unparser::Settings::@851::@858 cg
Settings for function call graphs.
std::string post
String to terminate a comment.
bool showingWidth
Show width of all expression terms in square brackets.
size_t fieldWidth
Min characters to use per insn address.
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.
struct Rose::BinaryAnalysis::Unparser::Settings::@851::@859 stackDelta
Settings for function stack deltas.
bool showingReachability
Show code reachability in the basic block prologue area.
bool showingSuccessors
Show basic block successors?