summaryrefslogtreecommitdiff
path: root/ui
diff options
context:
space:
mode:
authorPeter LaFosse <peter@vector35.com>2019-09-13 09:56:00 -0400
committerPeter LaFosse <peter@vector35.com>2019-11-15 21:10:58 -0500
commitdb48820f5fed420ad298278e8e6b055baa4ddf06 (patch)
tree2b41a6f081f924b622887ddc42f5f579eebbd849 /ui
parent3c329e77e0318db070099be2d1731c4e7ac510ba (diff)
Type workflow improvements
Expand type context for data renderers Add additional linearview helper routines for defining variables inside of structures fix unit tests
Diffstat (limited to 'ui')
-rw-r--r--ui/commands.h5
-rw-r--r--ui/createstructdialog.h2
-rw-r--r--ui/createtypedialog.h2
-rw-r--r--ui/linearview.h20
4 files changed, 25 insertions, 4 deletions
diff --git a/ui/commands.h b/ui/commands.h
index f95664f1..0a591437 100644
--- a/ui/commands.h
+++ b/ui/commands.h
@@ -18,7 +18,7 @@ bool BINARYNINJAUIAPI askForNewType(QWidget* parent, BinaryViewRef data, Functio
TypeRef& type, BinaryNinja::QualifiedName& name);
bool BINARYNINJAUIAPI inputNewType(QWidget* parent, BinaryViewRef data, FunctionRef currentFunction,
uint64_t currentAddr, HighlightTokenState& highlight);
-bool BINARYNINJAUIAPI createInferredMember(BinaryViewRef data, HighlightTokenState& highlight);
+bool BINARYNINJAUIAPI createInferredMember(QWidget* parent, BinaryViewRef data, HighlightTokenState& highlight, FunctionRef func);
bool BINARYNINJAUIAPI overwriteCode(BinaryViewRef data, ArchitectureRef arch,
uint64_t addr, size_t len, const BinaryNinja::DataBuffer& buffer);
@@ -29,3 +29,6 @@ StructureRef BINARYNINJAUIAPI getInnerMostStructureContaining(BinaryViewRef data
size_t& memberIndex, const std::vector<std::string>& nameList, size_t nameIndex, TypeRef& type, std::string& typeName);
StructureRef BINARYNINJAUIAPI getInnerMostStructureContainingOffset(BinaryViewRef data, StructureRef structure,
const std::vector<std::string>& nameList, size_t nameIndex, size_t& offset, TypeRef& type, std::string& typeName);
+
+// Auto generate a structure name
+std::string BINARYNINJAUIAPI createStructureName(BinaryViewRef data); \ No newline at end of file
diff --git a/ui/createstructdialog.h b/ui/createstructdialog.h
index df117411..096adefb 100644
--- a/ui/createstructdialog.h
+++ b/ui/createstructdialog.h
@@ -16,7 +16,7 @@ class BINARYNINJAUIAPI CreateStructDialog: public QDialog
uint64_t m_resultSize;
public:
- CreateStructDialog(QWidget* parent);
+ CreateStructDialog(QWidget* parent, const std::string& name);
BinaryNinja::QualifiedName getName() { return m_resultName; }
uint64_t getSize() { return m_resultSize; }
diff --git a/ui/createtypedialog.h b/ui/createtypedialog.h
index 1d0effe3..552f2076 100644
--- a/ui/createtypedialog.h
+++ b/ui/createtypedialog.h
@@ -16,7 +16,7 @@ class BINARYNINJAUIAPI CreateTypeDialog: public QDialog
std::map<BinaryNinja::QualifiedName, TypeRef> m_results;
public:
- CreateTypeDialog(QWidget* parent, BinaryViewRef data, const QString& definition);
+ CreateTypeDialog(QWidget* parent, BinaryViewRef data, const QString& title, const QString& definition);
std::map<BinaryNinja::QualifiedName, TypeRef> getResults() { return m_results; }
private Q_SLOTS:
diff --git a/ui/linearview.h b/ui/linearview.h
index b30e127c..53e8802c 100644
--- a/ui/linearview.h
+++ b/ui/linearview.h
@@ -127,6 +127,18 @@ class BINARYNINJAUIAPI LinearView: public QAbstractScrollArea, public View, publ
bool isLineValidHighlight(const BinaryNinja::LinearDisassemblyLine& line);
void ensureLineVisible(size_t line);
+ TypeRef createStructure(BinaryNinja::QualifiedName& name, uint64_t size);
+ StructureRef defineInnerType(TypeRef type, TypeRef baseType, uint64_t offset, uint64_t size);
+ StructureRef defineInnerPointer(TypeRef type, ArchitectureRef arch, uint64_t baseAddress, uint64_t offset, uint64_t size);
+ StructureRef defineInnerStruct(TypeRef type, uint64_t offset, uint64_t size);
+ StructureRef defineInnerArray(TypeRef type, uint64_t offset, uint64_t size);
+ StructureRef defineInnerName(TypeRef type, uint64_t offset, uint64_t size);
+ StructureRef defineInnerUnknownType(QWidget* parent, TypeRef type, uint64_t offset, uint64_t size);
+ StructureRef defineInnerIntegerSize(TypeRef type, uint64_t offset, uint64_t size);
+ StructureRef defineInnerSign(TypeRef type, uint64_t offset, uint64_t size);
+ TypeRef getPointerTypeAndName(ArchitectureRef arch, uint64_t addr, std::string& name);
+ std::string getVariableName(uint64_t addr);
+
private Q_SLOTS:
void viewInHexEditor();
void viewInGraph();
@@ -155,15 +167,21 @@ private Q_SLOTS:
void skipAndReturnZero();
void skipAndReturnValue();
+ void makeTypes(TypeRef type);
void makeInt8();
void makeInt16();
void makeInt32();
void makeInt64();
void toggleIntSize();
+ void toggleIntSign();
void makePtr();
void makeString();
void changeType();
- void inferStructureType();
+ void createStructOrinferStructureType();
+ void createArray();
+ void createStruct();
+ void createNewTypes();
+
size_t getStringLength(uint64_t startAddr);
void displayAsDefault();