diff options
| author | Rusty Wagner <rusty@vector35.com> | 2015-08-29 23:48:01 -0400 |
|---|---|---|
| committer | Rusty Wagner <rusty@vector35.com> | 2015-08-29 23:48:01 -0400 |
| commit | c0e76778ad4149565de0f2729c6c36464fb522f0 (patch) | |
| tree | bfb6d430a59933f48a879f6fca6534d03237b0f6 /architecture.cpp | |
| parent | 00c92fcf81f6144a35936855b5cc47c945fae321 (diff) | |
Implement part of the Python API to register new architectures
Diffstat (limited to 'architecture.cpp')
| -rw-r--r-- | architecture.cpp | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/architecture.cpp b/architecture.cpp index ae4dd225..e4d3e4f0 100644 --- a/architecture.cpp +++ b/architecture.cpp @@ -47,6 +47,13 @@ Architecture::Architecture(const string& name): m_nameForRegister(name) } +void Architecture::InitCallback(void* ctxt, BNArchitecture* obj) +{ + Architecture* arch = (Architecture*)ctxt; + arch->m_arch = obj; +} + + BNEndianness Architecture::GetEndiannessCallback(void* ctxt) { Architecture* arch = (Architecture*)ctxt; @@ -179,10 +186,10 @@ void Architecture::FreeRegisterListCallback(void*, uint32_t* regs) } -BNRegisterInfo Architecture::GetRegisterInfoCallback(void* ctxt, uint32_t reg) +void Architecture::GetRegisterInfoCallback(void* ctxt, uint32_t reg, BNRegisterInfo* result) { Architecture* arch = (Architecture*)ctxt; - return arch->GetRegisterInfo(reg); + *result = arch->GetRegisterInfo(reg); } @@ -273,6 +280,7 @@ void Architecture::Register(Architecture* arch) { BNCustomArchitecture callbacks; callbacks.context = arch; + callbacks.init = InitCallback; callbacks.getEndianness = GetEndiannessCallback; callbacks.getAddressSize = GetAddressSizeCallback; callbacks.getDefaultIntegerSize = GetDefaultIntegerSizeCallback; @@ -298,7 +306,7 @@ void Architecture::Register(Architecture* arch) callbacks.alwaysBranch = AlwaysBranchCallback; callbacks.invertBranch = InvertBranchCallback; callbacks.skipAndReturnValue = SkipAndReturnValueCallback; - arch->m_arch = BNRegisterArchitecture(arch->m_nameForRegister.c_str(), &callbacks); + BNRegisterArchitecture(arch->m_nameForRegister.c_str(), &callbacks); } |
