From 8788b2a15003aba8040e27d73a33760b0b8da06b Mon Sep 17 00:00:00 2001 From: Rusty Wagner Date: Wed, 18 Mar 2015 22:41:42 -0400 Subject: Add a symbol management API --- binaryninjaapi.h | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'binaryninjaapi.h') diff --git a/binaryninjaapi.h b/binaryninjaapi.h index 113ecfc7..1c5db1f1 100644 --- a/binaryninjaapi.h +++ b/binaryninjaapi.h @@ -310,6 +310,25 @@ namespace BinaryNinja class Function; class BasicBlock; + class Symbol: public RefCountObject + { + BNSymbol* m_sym; + + public: + Symbol(BNSymbolType type, const std::string& shortName, const std::string& fullName, + const std::string& rawName, uint64_t addr); + Symbol(BNSymbol* sym); + virtual ~Symbol(); + + BNSymbol* GetSymbolObject() const { return m_sym; } + + BNSymbolType GetType() const; + std::string GetShortName() const; + std::string GetFullName() const; + std::string GetRawName() const; + uint64_t GetAddress() const; + }; + class BinaryView: public RefCountObject { protected: @@ -406,6 +425,18 @@ namespace BinaryNinja Ref GetRecentBasicBlockForAddress(uint64_t addr); std::vector> GetBasicBlocksForAddress(uint64_t addr); + + Ref GetSymbolByAddress(uint64_t addr); + Ref GetSymbolByRawName(const std::string& name); + std::vector> GetSymbolsByName(const std::string& name); + std::vector> GetSymbols(); + std::vector> GetSymbolsOfType(BNSymbolType type); + + void DefineAutoSymbol(Symbol* sym); + void UndefineAutoSymbol(Symbol* sym); + + void DefineSymbol(Symbol* sym); + void UndefineSymbol(Symbol* sym); }; class BinaryData: public BinaryView -- cgit v1.3.1