ROSE 0.11.145.147
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/InstructionSemantics/BaseSemantics.h>
9#include <Rose/BinaryAnalysis/Unparser/EdgeArrows.h>
10#include <Sawyer/CommandLine.h>
11
12namespace Rose {
13namespace BinaryAnalysis {
14namespace Unparser {
15
24
30struct Settings {
31 virtual ~Settings() {}
32
35 struct {
36 struct {
38 } line;
39 struct {
42 } comment;
43
44 struct {
50 struct {
51 bool showing;
52 } cg;
53 struct {
54 bool showing;
55 bool concrete;
57 struct {
58 bool showing;
60 struct {
61 bool showing;
62 } noop;
63 struct {
64 bool showing;
68 struct {
70 struct {
76 } cfg;
77 struct {
82 struct {
84 } dblock;
85
86 struct {
87 struct {
88 bool showing;
89 bool useLabels;
90 size_t fieldWidth;
91 Style style;
94 struct {
95 bool showing;
96 size_t perLine;
97 size_t fieldWidth;
98 Style style;
101 struct {
102 bool showing;
103 size_t fieldWidth;
104 Style style;
107 struct {
108 size_t fieldWidth;
111 Style style;
114 struct {
115 std::string separator;
116 size_t fieldWidth;
118 Style style;
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;
137 struct {
141 std::string linePrefix;
142
143 Settings();
144 static Settings full();
145 static Settings minimal();
146};
147
148// Forward declarations.
149class Base;
150class State;
151typedef Sawyer::SharedPointer<Base> BasePtr;
152
155
156} // namespace
157} // namespace
158} // namespace
159
160#endif
161#endif
A collection of related switch declarations.
Holds a value or nothing.
Definition Optional.h:56
Reference-counting intrusive smart pointer.
Sawyer::CommandLine::SwitchGroup commandLineSwitches(Settings &settings)
Command-line switches for unparser settings.
The ROSE library.
Settings that control unparsing.
struct Rose::BinaryAnalysis::Unparser::Settings::@691::@706 operands
Settings for the operand list.
bool showingDemangled
Show demangled name in preference to mangled name.
struct Rose::BinaryAnalysis::Unparser::Settings::@688::@697 callconv
Settings for function calling convention.
bool showingPredecessors
Show basic block predecessors?
struct Rose::BinaryAnalysis::Unparser::Settings::@688::@696 stackDelta
Settings for function stack deltas.
size_t fieldWidth
Min characters to use per insn address.
bool showingReasons
Show reasons for function existing.
size_t perLine
Max number of bytes to show per line of output.
struct Rose::BinaryAnalysis::Unparser::Settings::@688::@695 cg
Settings for function call graphs.
struct Rose::BinaryAnalysis::Unparser::Settings::@691::@702 address
Settings for instruction starting addresses.
bool showingSourceLocation
Show source file name and line number when available.
InstructionSemantics::BaseSemantics::Formatter formatter
How to format the semantic state output.
std::string pre
String to introduce a comment.
bool showing
Show function call graph?
std::string post
String to terminate a comment.
struct Rose::BinaryAnalysis::Unparser::Settings::@687::@693 line
Comment occupying an entire line.
struct Rose::BinaryAnalysis::Unparser::Settings::@687::@694 trailing
Comment extending to the end of the line.
bool tracing
Show instruction semantics traces when showing semantics.
bool showingSuccessors
Show basic block successors?
Style semanticFailureStyle
Style for the semantic failure indicator.
std::string semanticFailureMarker
Mark instruction if it had semantic failures.
struct Rose::BinaryAnalysis::Unparser::Settings::@689::@701 reach
Reachability analysis results.
struct Rose::BinaryAnalysis::Unparser::Settings::@691::@705 mnemonic
Settings for instruction mnemonics.
bool showingReachability
Show code reachability in the basic block prologue area.
Style titleStyle
Style for title line of function.
Style separatorStyle
Style of the line separating functions.
bool showingArrows
Draw arrows from one block to another.
struct Rose::BinaryAnalysis::Unparser::Settings::@688::@699 mayReturn
Settings for may-return analysis.
std::string separator
How to separate one operand from another.
struct Rose::BinaryAnalysis::Unparser::Settings::@689 bblock
Settings for basic blocks.
Color::Colorization colorization
Overrides for global color settings.
struct Rose::BinaryAnalysis::Unparser::Settings::@691 insn
Settings for instructions.
bool showingSharing
Show functions when block is shared?
struct Rose::BinaryAnalysis::Unparser::Settings::@691::@703 bytes
Settings for the bytes that make up an instruction.
struct Rose::BinaryAnalysis::Unparser::Settings::@688::@698 noop
Settings for no-op analysis.
Style style
Style for printing the address.
EdgeArrows::ArrowStylePreset style
One of the arrow style presets.
bool concrete
Show concrete or symbolic deltas.
bool useLabels
Generate labels and use them instead of addresses?
struct Rose::BinaryAnalysis::Unparser::Settings::@689::@700 cfg
Settings for control flow graphs.
struct Rose::BinaryAnalysis::Unparser::Settings::@692 arrow
How to render arrows along the left margin.
bool showingWidth
Show width of all expression terms in square brackets.
struct Rose::BinaryAnalysis::Unparser::Settings::@688 function
Settings for functions.
bool usingDescription
Lacking comment, use instruction description as comment?
Sawyer::Optional< Color::HSV > background
Optional background color.
Sawyer::Optional< Color::HSV > foreground
Optional foreground color.
std::string ansiStyle() const
Generate the ANSI escape for the style.
Control colored command output.
Definition Color.h:37