--- /dev/null
+#ifndef INCLUDE__BasicBlock_hxx
+#define INCLUDE__BasicBlock_hxx
+
+#include <cassert>
+#include <string>
+#include <sstream>
+
+class BasicBlock {
+public:
+ BasicBlock() {
+ next_blocks[0] = 0;
+ next_blocks[1] = 0;
+ }
+
+ uint64_t getStartAddress() const {
+ return start_address;
+ }
+
+ uint64_t getEndAddress() const {
+ return end_address;
+ }
+
+ uint64_t getNextBlock(size_t index) const {
+ assert(index < 2);
+ return next_blocks[index];
+ }
+
+ void setNextBlock(size_t index, uint64_t address) {
+ assert(index < 2);
+ next_blocks[index] = address;
+ }
+
+ void setStartAddress(uint64_t address) {
+ start_address = address;
+ }
+
+ void setEndAddress(uint64_t address) {
+ end_address = address;
+ }
+
+ std::string getName() {
+ std::stringstream s;
+ s << "BLOCK_" << std::hex << start_address << '_' << end_address;
+ return s.str();
+ }
+
+private:
+ uint64_t start_address;
+ uint64_t end_address;
+
+ uint64_t next_blocks[2];
+};
+
+#endif
--- /dev/null
+#ifndef INCLUDE__Function_hxx
+#define INCLUDE__Function_hxx
+
+#include <map>
+#include "BasicBlock.hxx"
+
+class Function {
+public:
+ Function(const std::string& name, uint64_t start_address)
+ : name(name)
+ , start_address(start_address) {
+ }
+
+ uint64_t getStartAddress() const {
+ return start_address;
+ }
+
+ std::string getName() const {
+ return name;
+ }
+
+ void addBasicBlock(BasicBlock* block) {
+ _blocks.insert(std::make_pair(block->getStartAddress(), block));
+ }
+
+ std::map<uint64_t, BasicBlock*>& blocks() {
+ return _blocks;
+ }
+private:
+ std::string name;
+ uint64_t start_address;
+ std::map<uint64_t, BasicBlock*> _blocks;
+};
+
+#endif
#include "InformationManager.hxx"
#include "disassembler/llvm/LLVMDisassembler.hxx"
+#include "core/Function.hxx"
+#include "core/BasicBlock.hxx"
+
#include "gui/qt.hxx"
-#include "quazip/quazip.h"
-#include "quazip/quazipfile.h"
+#include <quazip/quazip.h>
+#include <quazip/quazipfile.h>
void InformationManager::reset(const std::string& filename) {
disassembler.reset(createLLVMDisassembler(filename, this));
class Disassembler;
class Function;
+class BasicBlock;
class QString;
+++ /dev/null
-#ifndef INCLUDE__BasicBlock_hxx
-#define INCLUDE__BasicBlock_hxx
-
-#include <cassert>
-#include <string>
-#include <sstream>
-
-class BasicBlock {
-public:
- BasicBlock() {
- next_blocks[0] = 0;
- next_blocks[1] = 0;
- }
-
- uint64_t getStartAddress() const {
- return start_address;
- }
-
- uint64_t getEndAddress() const {
- return end_address;
- }
-
- uint64_t getNextBlock(size_t index) const {
- assert(index < 2);
- return next_blocks[index];
- }
-
- void setNextBlock(size_t index, uint64_t address) {
- assert(index < 2);
- next_blocks[index] = address;
- }
-
- void setStartAddress(uint64_t address) {
- start_address = address;
- }
-
- void setEndAddress(uint64_t address) {
- end_address = address;
- }
-
- std::string getName() {
- std::stringstream s;
- s << "BLOCK_" << std::hex << start_address << '_' << end_address;
- return s.str();
- }
-
-private:
- uint64_t start_address;
- uint64_t end_address;
-
- uint64_t next_blocks[2];
-};
-
-#endif
#include <string>
#include <functional>
-#include "disassembler/BasicBlock.hxx"
-#include "disassembler/Function.hxx"
-#include "core/InformationManager.hxx"
+class Function;
+class BasicBlock;
+class InformationManager;
class Disassembler {
public:
+++ /dev/null
-#ifndef INCLUDE__Function_hxx
-#define INCLUDE__Function_hxx
-
-#include "disassembler/BasicBlock.hxx"
-#include <map>
-
-class Function {
-public:
- Function(const std::string& name, uint64_t start_address)
- : name(name)
- , start_address(start_address) {
- }
-
- uint64_t getStartAddress() const {
- return start_address;
- }
-
- std::string getName() const {
- return name;
- }
-
- void addBasicBlock(BasicBlock* block) {
- _blocks.insert(std::make_pair(block->getStartAddress(), block));
- }
-
- std::map<uint64_t, BasicBlock*>& blocks() {
- return _blocks;
- }
-private:
- std::string name;
- uint64_t start_address;
- std::map<uint64_t, BasicBlock*> _blocks;
-};
-
-#endif
#ifndef INCLUDE__LLVMBasicBlock_hxx
#define INCLUDE__LLVMBasicBlock_hxx
-#include "disassembler/BasicBlock.hxx"
+#include "core/BasicBlock.hxx"
class Disassembler;
#include "disassembler/llvm/LLVMDisassembler.hxx"
#include "disassembler/llvm/LLVMBasicBlock.hxx"
#include "disassembler/llvm/LLVMFunction.hxx"
+#include "core/InformationManager.hxx"
#include <stack>
#include <algorithm>
#include "include_llvm.hxx"
#include "disassembler/Disassembler.hxx"
-#include "disassembler/BasicBlock.hxx"
-#include "disassembler/Function.hxx"
-#include "disassembler/llvm/LLVMBasicBlock.hxx"
-#include "disassembler/llvm/LLVMFunction.hxx"
+class Function;
+class BasicBlock;
+class LLVMFunction;
+class LLVMBasicBlock;
Disassembler * createLLVMDisassembler(const std::string& filename, InformationManager* manager);
#ifndef INCLUDE__LLVMFunction_hxx
#define INCLUDE__LLVMFunction_hxx
-#include "disassembler/Function.hxx"
+#include "core/Function.hxx"
class LLVMFunction : public Function {
public:
#include "Mainwindow.hxx"
#include "qt.hxx"
#include "disassembler/llvm/LLVMDisassembler.hxx"
-
+#include "core/Function.hxx"
+#include "core/BasicBlock.hxx"
+#include "core/InformationManager.hxx"
+#include "widgets/ScriptingDock.hxx"
#include "widgets/CFGScene.hxx"
#include "dialogs/NewFunctionDialog.hxx"
#include "dialogs/SimpleStringDialog.hxx"
#include <log4cxx/logger.h>
-#include "disassembler/Disassembler.hxx"
-#include "widgets/BasicBlockWidget.hxx"
-#include "widgets/ScriptingDock.hxx"
-#include "core/InformationManager.hxx"
+class Disassembler;
+class Function;
+class InformationManager;
+class BasicBlockWidget;
+class ScriptingDock;
class Mainwindow : public QMainWindow {
Q_OBJECT
#include "BasicBlockWidget.hxx"
#include "gui/Mainwindow.hxx"
#include "gui/dialogs/SimpleStringDialog.hxx"
+#include "core/BasicBlock.hxx"
class CustomQGraphicsTextItem : public QObject, public QGraphicsTextItem {
public:
#define INCLUDE__BasicBlockWidget_hxx
#include "gui/qt.hxx"
-#include "disassembler/BasicBlock.hxx"
#include <vector>
#include <cassert>
#include <tuple>
#include <memory>
class Mainwindow;
+class BasicBlock;
class BasicBlockWidget : public QObject, public QGraphicsItem
{