summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRusty Wagner <rusty@vector35.com>2016-07-23 21:29:52 -0400
committerRusty Wagner <rusty@vector35.com>2016-07-23 21:29:52 -0400
commit11cf9f176f45f03df16bf69c5ca33789ba0ded22 (patch)
tree8545794dfdef1fec42d481c12a55da6645540308
parent13491e5eb8d50c242cf6858b111e404ea9f79239 (diff)
Add endian argument to registering archs with views
-rw-r--r--binaryninjaapi.h6
-rw-r--r--binaryninjacore.h6
-rw-r--r--binaryviewtype.cpp12
-rw-r--r--python/__init__.py8
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<Ref<BinaryViewType>> GetViewTypes();
static std::vector<Ref<BinaryViewType>> GetViewTypesForData(BinaryView* data);
- static void RegisterArchitecture(const std::string& name, uint32_t id, Architecture* arch);
- void RegisterArchitecture(uint32_t id, Architecture* arch);
- Ref<Architecture> 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<Architecture> 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<Ref<BinaryViewType>> 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<BinaryViewType> 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<Architecture> BinaryViewType::GetArchitecture(uint32_t id)
+Ref<Architecture> 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)