ROSE  0.9.10.164
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  } mnemonic;
75  struct {
76  std::string separator;
77  size_t fieldWidth;
78  } operands;
80  struct {
81  bool showing;
83  std::string pre;
84  std::string post;
85  size_t fieldWidth;
86  } comment;
88  struct {
89  bool showing;
91  bool tracing;
92  } semantics;
93  } insn;
95  struct {
97  } arrow;
99  Settings();
100  static Settings full();
101  static Settings minimal();
102 };
103 
104 // Forward declarations.
105 class Base;
106 class State;
107 typedef Sawyer::SharedPointer<Base> BasePtr;
108 
110 Sawyer::CommandLine::SwitchGroup commandLineSwitches(Settings &settings);
111 
112 } // namespace
113 } // namespace
114 } // namespace
115 
116 #endif
struct Rose::BinaryAnalysis::Unparser::Settings::@778::@788 bytes
Settings for the bytes that make up an instruction.
struct Rose::BinaryAnalysis::Unparser::Settings::@778::@792 comment
Settings for instruction comments.
struct Rose::BinaryAnalysis::Unparser::Settings::@776::@782 callconv
Settings for function calling convention.
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::@779 arrow
How to render arrows along the left margin.
Main namespace for the ROSE library.
Settings that control unparsing.
bool showingPredecessors
Show basic block predecessors?
struct Rose::BinaryAnalysis::Unparser::Settings::@776::@783 noop
Settings for no-op analysis.
struct Rose::BinaryAnalysis::Unparser::Settings::@776::@781 stackDelta
Settings for function stack deltas.
EdgeArrows::ArrowStylePreset style
One of the arrow style presets.
struct Rose::BinaryAnalysis::Unparser::Settings::@778::@787 address
Settings for instruction starting addresses.
bool showingSharing
Show functions when block is shared?
bool showing
Show function call graph?
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::@777 bblock
Settings for basic blocks.
bool showingArrows
Draw arrows from one block to another.
std::string separator
How to separate one operand from another.
struct Rose::BinaryAnalysis::Unparser::Settings::@777::@785 cfg
Settings for control flow graphs.
struct Rose::BinaryAnalysis::Unparser::Settings::@778 insn
Settings for instructions.
struct Rose::BinaryAnalysis::Unparser::Settings::@776::@784 mayReturn
Settings for may-return analysis.
struct Rose::BinaryAnalysis::Unparser::Settings::@776::@780 cg
Settings for function call graphs.
std::string post
String to terminate a comment.
struct Rose::BinaryAnalysis::Unparser::Settings::@778::@790 mnemonic
Settings for instruction mnemonics.
struct Rose::BinaryAnalysis::Unparser::Settings::@777::@786 reach
Reachability analysis results.
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::@778::@791 operands
Settings for the operand list.
bool showingReachability
Show code reachability in the basic block prologue area.
bool showingSuccessors
Show basic block successors?