ROSE  0.9.10.54
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 
7 namespace Rose {
8 namespace BinaryAnalysis {
9 namespace Unparser {
10 
16 struct Settings {
17  virtual ~Settings() {}
18 
19  struct {
22  struct {
23  bool showing;
24  } cg;
25  struct {
26  bool showing;
27  bool concrete;
28  } stackDelta;
29  struct {
30  bool showing;
31  } callconv;
32  struct {
33  bool showing;
34  } noop;
35  struct {
36  bool showing;
37  } mayReturn;
38  } function;
40  struct {
41  struct {
45  } cfg;
46  } bblock;
48  struct {
49  struct {
50  bool showing;
51  size_t fieldWidth;
52  } address;
54  struct {
55  bool showing;
56  size_t perLine;
57  size_t fieldWidth;
58  } bytes;
60  struct {
61  bool showing;
62  size_t fieldWidth;
63  } stackDelta;
65  struct {
66  size_t fieldWidth;
67  } mnemonic;
69  struct {
70  std::string separator;
71  size_t fieldWidth;
72  } operands;
74  struct {
75  bool showing;
77  std::string pre;
78  std::string post;
79  size_t fieldWidth;
80  } comment;
81  } insn;
83  Settings();
84  static Settings full();
85  static Settings minimal();
86 };
87 
88 // Forward declarations.
89 class Base;
90 class State;
91 typedef Sawyer::SharedPointer<Base> BasePtr;
92 
95 
96 } // namespace
97 } // namespace
98 } // namespace
99 
100 #endif
struct Rose::BinaryAnalysis::Unparser::Settings::@751::@754 cg
Settings for function call graphs.
struct Rose::BinaryAnalysis::Unparser::Settings::@753::@763 mnemonic
Settings for instruction mnemonics.
Sawyer::CommandLine::SwitchGroup commandLineSwitches(Settings &settings)
Command-line switches for unparser settings.
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::@752::@759 cfg
Settings for control flow graphs.
struct Rose::BinaryAnalysis::Unparser::Settings::@753::@761 bytes
Settings for the bytes that make up an instruction.
Main namespace for the ROSE library.
Settings that control unparsing.
struct Rose::BinaryAnalysis::Unparser::Settings::@751::@757 noop
Settings for no-op analysis.
bool showingPredecessors
Show basic block predecessors?
struct Rose::BinaryAnalysis::Unparser::Settings::@751::@758 mayReturn
Settings for may-return analysis.
struct Rose::BinaryAnalysis::Unparser::Settings::@753::@764 operands
Settings for the operand list.
struct Rose::BinaryAnalysis::Unparser::Settings::@753::@760 address
Settings for instruction starting addresses.
struct Rose::BinaryAnalysis::Unparser::Settings::@753 insn
Settings for instructions.
bool showingSharing
Show functions when block is shared?
bool showing
Show function call graph?
struct Rose::BinaryAnalysis::Unparser::Settings::@751::@756 callconv
Settings for function calling convention.
struct Rose::BinaryAnalysis::Unparser::Settings::@752 bblock
Settings for basic blocks.
bool showingReasons
Show reasons for function existing.
std::string pre
String to introduce a comment.
struct Rose::BinaryAnalysis::Unparser::Settings::@751::@755 stackDelta
Settings for function stack deltas.
std::string separator
How to separate one operand from another.
struct Rose::BinaryAnalysis::Unparser::Settings::@753::@765 comment
Settings for instruction comments.
std::string post
String to terminate a comment.
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.
bool showingSuccessors
Show basic block successors?