ROSE  0.9.10.103
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 
8 namespace Rose {
9 namespace BinaryAnalysis {
10 namespace Unparser {
11 
17 struct Settings {
18  virtual ~Settings() {}
19 
20  struct {
23  struct {
24  bool showing;
25  } cg;
26  struct {
27  bool showing;
28  bool concrete;
29  } stackDelta;
30  struct {
31  bool showing;
32  } callconv;
33  struct {
34  bool showing;
35  } noop;
36  struct {
37  bool showing;
38  } mayReturn;
39  } function;
41  struct {
42  struct {
46  } cfg;
47  struct {
49  } reach;
50  } bblock;
52  struct {
53  struct {
54  bool showing;
55  size_t fieldWidth;
56  } address;
58  struct {
59  bool showing;
60  size_t perLine;
61  size_t fieldWidth;
62  } bytes;
64  struct {
65  bool showing;
66  size_t fieldWidth;
67  } stackDelta;
69  struct {
70  size_t fieldWidth;
71  } mnemonic;
73  struct {
74  std::string separator;
75  size_t fieldWidth;
76  } operands;
78  struct {
79  bool showing;
81  std::string pre;
82  std::string post;
83  size_t fieldWidth;
84  } comment;
86  struct {
87  bool showing;
89  bool tracing;
90  } semantics;
91  } insn;
93  Settings();
94  static Settings full();
95  static Settings minimal();
96 };
97 
98 // Forward declarations.
99 class Base;
100 class State;
101 typedef Sawyer::SharedPointer<Base> BasePtr;
102 
105 
106 } // namespace
107 } // namespace
108 } // namespace
109 
110 #endif
struct Rose::BinaryAnalysis::Unparser::Settings::@761::@766 callconv
Settings for function calling convention.
Sawyer::CommandLine::SwitchGroup commandLineSwitches(Settings &settings)
Command-line switches for unparser settings.
struct Rose::BinaryAnalysis::Unparser::Settings::@763 insn
Settings for instructions.
bool usingDescription
Lacking comment, use instruction description as comment?
size_t perLine
Max number of bytes to show per line of output.
struct Rose::BinaryAnalysis::Unparser::Settings::@763::@771 address
Settings for instruction starting addresses.
A collection of related switch declarations.
struct Rose::BinaryAnalysis::Unparser::Settings::@761::@765 stackDelta
Settings for function stack deltas.
Main namespace for the ROSE library.
Settings that control unparsing.
bool showingPredecessors
Show basic block predecessors?
struct Rose::BinaryAnalysis::Unparser::Settings::@762::@770 reach
Reachability analysis results.
struct Rose::BinaryAnalysis::Unparser::Settings::@761::@768 mayReturn
Settings for may-return analysis.
struct Rose::BinaryAnalysis::Unparser::Settings::@763::@776 comment
Settings for instruction comments.
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.
struct Rose::BinaryAnalysis::Unparser::Settings::@762::@769 cfg
Settings for control flow graphs.
std::string pre
String to introduce a comment.
struct Rose::BinaryAnalysis::Unparser::Settings::@762 bblock
Settings for basic blocks.
std::string separator
How to separate one operand from another.
struct Rose::BinaryAnalysis::Unparser::Settings::@763::@774 mnemonic
Settings for instruction mnemonics.
struct Rose::BinaryAnalysis::Unparser::Settings::@763::@775 operands
Settings for the operand list.
std::string post
String to terminate a comment.
struct Rose::BinaryAnalysis::Unparser::Settings::@761::@764 cg
Settings for function call graphs.
size_t fieldWidth
Min characters to use per insn address.
bool concrete
Show concrete or symbolic deltas.
struct Rose::BinaryAnalysis::Unparser::Settings::@763::@772 bytes
Settings for the bytes that make up an instruction.
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::@761::@767 noop
Settings for no-op analysis.
bool showingReachability
Show code reachability in the basic block prologue area.
bool showingSuccessors
Show basic block successors?