From 11cf9f176f45f03df16bf69c5ca33789ba0ded22 Mon Sep 17 00:00:00 2001 From: Rusty Wagner Date: Sat, 23 Jul 2016 21:29:52 -0400 Subject: Add endian argument to registering archs with views --- binaryninjaapi.h | 6 +++--- binaryninjacore.h | 6 ++++-- binaryviewtype.cpp | 12 ++++++------ python/__init__.py | 8 ++++---- 4 files changed, 17 insertions(+), 15 deletions(-) diff --git a/binaryninjaapi.h b/binaryninjaapi.h index 85a0fc41..1bdaab13 100644 --- a/binaryninjaapi.h +++ b/binaryninjaapi.h @@ -924,9 +924,9 @@ namespace BinaryNinja static std::vector> GetViewTypes(); static std::vector> GetViewTypesForData(BinaryView* data); - static void RegisterArchitecture(const std::string& name, uint32_t id, Architecture* arch); - void RegisterArchitecture(uint32_t id, Architecture* arch); - Ref GetArchitecture(uint32_t id); + static void RegisterArchitecture(const std::string& name, uint32_t id, BNEndianness endian, Architecture* arch); + void RegisterArchitecture(uint32_t id, BNEndianness endian, Architecture* arch); + Ref GetArchitecture(uint32_t id, BNEndianness endian); static void RegisterPlatform(const std::string& name, uint32_t id, Architecture* arch, Platform* platform); static void RegisterDefaultPlatform(const std::string& name, Architecture* arch, Platform* platform); diff --git a/binaryninjacore.h b/binaryninjacore.h index 837a99e1..241f1f3d 100644 --- a/binaryninjacore.h +++ b/binaryninjacore.h @@ -1139,8 +1139,10 @@ extern "C" BINARYNINJACOREAPI BNBinaryViewType* BNRegisterBinaryViewType(const char* name, const char* longName, BNCustomBinaryViewType* type); - BINARYNINJACOREAPI void BNRegisterArchitectureForViewType(BNBinaryViewType* type, uint32_t id, BNArchitecture* arch); - BINARYNINJACOREAPI BNArchitecture* BNGetArchitectureForViewType(BNBinaryViewType* type, uint32_t id); + BINARYNINJACOREAPI void BNRegisterArchitectureForViewType(BNBinaryViewType* type, uint32_t id, + BNEndianness endian, BNArchitecture* arch); + BINARYNINJACOREAPI BNArchitecture* BNGetArchitectureForViewType(BNBinaryViewType* type, uint32_t id, + BNEndianness endian); BINARYNINJACOREAPI void BNRegisterPlatformForViewType(BNBinaryViewType* type, uint32_t id, BNArchitecture* arch, BNPlatform* platform); diff --git a/binaryviewtype.cpp b/binaryviewtype.cpp index 12883bd6..e7feb68c 100644 --- a/binaryviewtype.cpp +++ b/binaryviewtype.cpp @@ -106,24 +106,24 @@ vector> BinaryViewType::GetViewTypesForData(BinaryView* data } -void BinaryViewType::RegisterArchitecture(const string& name, uint32_t id, Architecture* arch) +void BinaryViewType::RegisterArchitecture(const string& name, uint32_t id, BNEndianness endian, Architecture* arch) { Ref type = BinaryViewType::GetByName(name); if (!type) return; - type->RegisterArchitecture(id, arch); + type->RegisterArchitecture(id, endian, arch); } -void BinaryViewType::RegisterArchitecture(uint32_t id, Architecture* arch) +void BinaryViewType::RegisterArchitecture(uint32_t id, BNEndianness endian, Architecture* arch) { - BNRegisterArchitectureForViewType(m_object, id, arch->GetObject()); + BNRegisterArchitectureForViewType(m_object, id, endian, arch->GetObject()); } -Ref BinaryViewType::GetArchitecture(uint32_t id) +Ref BinaryViewType::GetArchitecture(uint32_t id, BNEndianness endian) { - BNArchitecture* arch = BNGetArchitectureForViewType(m_object, id); + BNArchitecture* arch = BNGetArchitectureForViewType(m_object, id, endian); if (!arch) return nullptr; return new CoreArchitecture(arch); diff --git a/python/__init__.py b/python/__init__.py index 9f090c2f..4d7e7fb8 100644 --- a/python/__init__.py +++ b/python/__init__.py @@ -649,11 +649,11 @@ class BinaryViewType(object): def is_valid_for_data(self, data): return core.BNIsBinaryViewTypeValidForData(self.handle, data.handle) - def register_arch(self, ident, arch): - core.BNRegisterArchitectureForViewType(self.handle, ident, arch.handle) + def register_arch(self, ident, endian, arch): + core.BNRegisterArchitectureForViewType(self.handle, ident, endian, arch.handle) - def get_arch(self, ident): - arch = core.BNGetArchitectureForViewType(self.handle, ident) + def get_arch(self, ident, endian): + arch = core.BNGetArchitectureForViewType(self.handle, ident, endian) if arch is None: return None return Architecture(arch) -- cgit v1.3.1