summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--binaryninjacore.h10
-rw-r--r--highlevelilinstruction.cpp22
-rw-r--r--highlevelilinstruction.h2
-rw-r--r--lowlevelilinstruction.cpp22
-rw-r--r--lowlevelilinstruction.h2
-rw-r--r--mediumlevelilinstruction.cpp22
-rw-r--r--mediumlevelilinstruction.h2
7 files changed, 47 insertions, 35 deletions
diff --git a/binaryninjacore.h b/binaryninjacore.h
index 20fe50e8..6404268c 100644
--- a/binaryninjacore.h
+++ b/binaryninjacore.h
@@ -37,14 +37,14 @@
// Current ABI version for linking to the core. This is incremented any time
// there are changes to the API that affect linking, including new functions,
// new types, or modifications to existing functions or types.
-#define BN_CURRENT_CORE_ABI_VERSION 160
+#define BN_CURRENT_CORE_ABI_VERSION 161
// Minimum ABI version that is supported for loading of plugins. Plugins that
// are linked to an ABI version less than this will not be able to load and
// will require rebuilding. The minimum version is increased when there are
// incompatible changes that break binary compatibility, such as changes to
// existing types or functions.
-#define BN_MINIMUM_CORE_ABI_VERSION 160
+#define BN_MINIMUM_CORE_ABI_VERSION 161
#ifdef __GNUC__
#ifdef BINARYNINJACORE_LIBRARY
@@ -6445,7 +6445,7 @@ extern "C"
BINARYNINJACOREAPI uint64_t* BNLowLevelILGetOperandList(
BNLowLevelILFunction* func, size_t expr, size_t operand, size_t* count);
BINARYNINJACOREAPI void BNLowLevelILFreeOperandList(uint64_t* operands);
- BINARYNINJACOREAPI const uint64_t* BNLowLevelILGetOperandPointer(
+ BINARYNINJACOREAPI uint64_t BNLowLevelILGetOperand(
BNLowLevelILFunction* func, size_t offset);
BINARYNINJACOREAPI size_t BNCacheLowLevelILPossibleValueSet(BNLowLevelILFunction* func, BNPossibleValueSet* pvs);
@@ -6604,7 +6604,7 @@ extern "C"
BINARYNINJACOREAPI uint64_t* BNMediumLevelILGetOperandList(
BNMediumLevelILFunction* func, size_t expr, size_t operand, size_t* count);
BINARYNINJACOREAPI void BNMediumLevelILFreeOperandList(uint64_t* operands);
- BINARYNINJACOREAPI const uint64_t* BNMediumLevelILGetOperandPointer(
+ BINARYNINJACOREAPI uint64_t BNMediumLevelILGetOperand(
BNMediumLevelILFunction* func, size_t offset);
BINARYNINJACOREAPI size_t BNCacheMediumLevelILPossibleValueSet(BNMediumLevelILFunction* func, BNPossibleValueSet* pvs);
@@ -6767,7 +6767,7 @@ extern "C"
BINARYNINJACOREAPI uint64_t* BNHighLevelILGetOperandList(
BNHighLevelILFunction* func, size_t expr, size_t operand, size_t* count);
BINARYNINJACOREAPI void BNHighLevelILFreeOperandList(uint64_t* operands);
- BINARYNINJACOREAPI const uint64_t* BNHighLevelILGetOperandPointer(
+ BINARYNINJACOREAPI uint64_t BNHighLevelILGetOperand(
BNHighLevelILFunction* func, size_t offset);
BINARYNINJACOREAPI size_t BNCacheHighLevelILPossibleValueSet(BNHighLevelILFunction* func, BNPossibleValueSet* pvs);
diff --git a/highlevelilinstruction.cpp b/highlevelilinstruction.cpp
index ad8f416d..7f4bad39 100644
--- a/highlevelilinstruction.cpp
+++ b/highlevelilinstruction.cpp
@@ -288,14 +288,18 @@ bool HighLevelILIntegerList::ListIterator::operator<(const ListIterator& a) cons
HighLevelILIntegerList::ListIterator& HighLevelILIntegerList::ListIterator::operator++()
{
count--;
- cur++;
+ offset++;
return *this;
}
uint64_t HighLevelILIntegerList::ListIterator::operator*()
{
- return *cur;
+#ifdef BINARYNINJACORE_LIBRARY
+ return function->GetOperand(offset);
+#else
+ return BNHighLevelILGetOperand(function->GetObject(), offset);
+#endif
}
@@ -303,11 +307,7 @@ HighLevelILIntegerList::HighLevelILIntegerList(
HighLevelILFunction* func, size_t offset, size_t count)
{
m_start.function = func;
-#ifdef BINARYNINJACORE_LIBRARY
- m_start.cur = func->GetOperandPointer(offset);
-#else
- m_start.cur = BNHighLevelILGetOperandPointer(func->GetObject(), offset);
-#endif
+ m_start.offset = offset;
m_start.count = count;
}
@@ -322,7 +322,7 @@ HighLevelILIntegerList::const_iterator HighLevelILIntegerList::end() const
{
const_iterator result;
result.function = m_start.function;
- result.cur = m_start.cur + m_start.count;
+ result.offset = m_start.offset + m_start.count;
result.count = 0;
return result;
}
@@ -338,7 +338,11 @@ uint64_t HighLevelILIntegerList::operator[](size_t i) const
{
if (i >= size())
throw HighLevelILInstructionAccessException();
- return m_start.cur[i];
+#ifdef BINARYNINJACORE_LIBRARY
+ return m_start.function->GetOperand(m_start.offset + i);
+#else
+ return BNHighLevelILGetOperand(m_start.function->GetObject(), m_start.offset + i);
+#endif
}
diff --git a/highlevelilinstruction.h b/highlevelilinstruction.h
index 93152241..bf2b5162 100644
--- a/highlevelilinstruction.h
+++ b/highlevelilinstruction.h
@@ -196,7 +196,7 @@ namespace BinaryNinja
#else
Ref<HighLevelILFunction> function;
#endif
- const uint64_t* cur;
+ size_t offset;
size_t count;
bool operator==(const ListIterator& a) const;
diff --git a/lowlevelilinstruction.cpp b/lowlevelilinstruction.cpp
index 33c556bd..ba26b82e 100644
--- a/lowlevelilinstruction.cpp
+++ b/lowlevelilinstruction.cpp
@@ -597,14 +597,18 @@ bool LowLevelILIntegerList::ListIterator::operator<(const ListIterator& a) const
LowLevelILIntegerList::ListIterator& LowLevelILIntegerList::ListIterator::operator++()
{
count--;
- cur++;
+ offset++;
return *this;
}
uint64_t LowLevelILIntegerList::ListIterator::operator*()
{
- return *cur;
+#ifdef BINARYNINJACORE_LIBRARY
+ return function->GetOperand(offset);
+#else
+ return BNLowLevelILGetOperand(function->GetObject(), offset);
+#endif
}
@@ -612,11 +616,7 @@ LowLevelILIntegerList::LowLevelILIntegerList(
LowLevelILFunction* func, size_t offset, size_t count)
{
m_start.function = func;
-#ifdef BINARYNINJACORE_LIBRARY
- m_start.cur = func->GetOperandPointer(offset);
-#else
- m_start.cur = BNLowLevelILGetOperandPointer(func->GetObject(), offset);
-#endif
+ m_start.offset = offset;
m_start.count = count;
}
@@ -631,7 +631,7 @@ LowLevelILIntegerList::const_iterator LowLevelILIntegerList::end() const
{
const_iterator result;
result.function = m_start.function;
- result.cur = m_start.cur + m_start.count;
+ result.offset = m_start.offset + m_start.count;
result.count = 0;
return result;
}
@@ -647,7 +647,11 @@ uint64_t LowLevelILIntegerList::operator[](size_t i) const
{
if (i >= size())
throw LowLevelILInstructionAccessException();
- return m_start.cur[i];
+#ifdef BINARYNINJACORE_LIBRARY
+ return m_start.function->GetOperand(m_start.offset + i);
+#else
+ return BNLowLevelILGetOperand(m_start.function->GetObject(), m_start.offset + i);
+#endif
}
diff --git a/lowlevelilinstruction.h b/lowlevelilinstruction.h
index 5feef433..97f10c32 100644
--- a/lowlevelilinstruction.h
+++ b/lowlevelilinstruction.h
@@ -385,7 +385,7 @@ namespace BinaryNinja
#else
Ref<LowLevelILFunction> function;
#endif
- const uint64_t* cur;
+ size_t offset;
size_t count;
bool operator==(const ListIterator& a) const;
diff --git a/mediumlevelilinstruction.cpp b/mediumlevelilinstruction.cpp
index c7dc7a5a..0c89ace3 100644
--- a/mediumlevelilinstruction.cpp
+++ b/mediumlevelilinstruction.cpp
@@ -320,14 +320,18 @@ bool MediumLevelILIntegerList::ListIterator::operator<(const ListIterator& a) co
MediumLevelILIntegerList::ListIterator& MediumLevelILIntegerList::ListIterator::operator++()
{
count--;
- cur++;
+ offset++;
return *this;
}
uint64_t MediumLevelILIntegerList::ListIterator::operator*()
{
- return *cur;
+#ifdef BINARYNINJACORE_LIBRARY
+ return function->GetOperand(offset);
+#else
+ return BNMediumLevelILGetOperand(function->GetObject(), offset);
+#endif
}
@@ -335,11 +339,7 @@ MediumLevelILIntegerList::MediumLevelILIntegerList(
MediumLevelILFunction* func, size_t offset, size_t count)
{
m_start.function = func;
-#ifdef BINARYNINJACORE_LIBRARY
- m_start.cur = func->GetOperandPointer(offset);
-#else
- m_start.cur = BNMediumLevelILGetOperandPointer(func->GetObject(), offset);
-#endif
+ m_start.offset = offset;
m_start.count = count;
}
@@ -354,7 +354,7 @@ MediumLevelILIntegerList::const_iterator MediumLevelILIntegerList::end() const
{
const_iterator result;
result.function = m_start.function;
- result.cur = m_start.cur + m_start.count;
+ result.offset = m_start.offset + m_start.count;
result.count = 0;
return result;
}
@@ -370,7 +370,11 @@ uint64_t MediumLevelILIntegerList::operator[](size_t i) const
{
if (i >= size())
throw MediumLevelILInstructionAccessException();
- return m_start.cur[i];
+#ifdef BINARYNINJACORE_LIBRARY
+ return m_start.function->GetOperand(m_start.offset + i);
+#else
+ return BNMediumLevelILGetOperand(m_start.function->GetObject(), m_start.offset + i);
+#endif
}
diff --git a/mediumlevelilinstruction.h b/mediumlevelilinstruction.h
index bbc8f432..3d7da6b9 100644
--- a/mediumlevelilinstruction.h
+++ b/mediumlevelilinstruction.h
@@ -247,7 +247,7 @@ namespace BinaryNinja
#else
Ref<MediumLevelILFunction> function;
#endif
- const uint64_t* cur;
+ size_t offset;
size_t count;
bool operator==(const ListIterator& a) const;