summaryrefslogtreecommitdiff
path: root/binaryview.cpp
diff options
context:
space:
mode:
authorRusty Wagner <rusty@vector35.com>2017-08-17 22:05:32 -0400
committerRusty Wagner <rusty@vector35.com>2017-08-17 22:31:55 -0400
commit78d90c30df96364cdc8dde1954be7341531cfe07 (patch)
treec854bc915a27485b9e8650f3916757f98f7ba00e /binaryview.cpp
parent5e25409d02479285d1f16d6cc55df1b267e9ba06 (diff)
Adding section semantics to deal with semantically read-only sections inside of writable areas
Diffstat (limited to 'binaryview.cpp')
-rw-r--r--binaryview.cpp33
1 files changed, 25 insertions, 8 deletions
diff --git a/binaryview.cpp b/binaryview.cpp
index 23a62aec..2c7da23e 100644
--- a/binaryview.cpp
+++ b/binaryview.cpp
@@ -758,6 +758,18 @@ bool BinaryView::IsOffsetBackedByFile(uint64_t offset) const
}
+bool BinaryView::IsOffsetCodeSemantics(uint64_t offset) const
+{
+ return BNIsOffsetCodeSemantics(m_object, offset);
+}
+
+
+bool BinaryView::IsOffsetWritableSemantics(uint64_t offset) const
+{
+ return BNIsOffsetWritableSemantics(m_object, offset);
+}
+
+
uint64_t BinaryView::GetNextValidOffset(uint64_t offset) const
{
return BNGetNextValidOffset(m_object, offset);
@@ -1716,11 +1728,12 @@ bool BinaryView::GetAddressForDataOffset(uint64_t offset, uint64_t& addr)
}
-void BinaryView::AddAutoSection(const string& name, uint64_t start, uint64_t length, const string& type,
- uint64_t align, uint64_t entrySize, const string& linkedSection, const string& infoSection, uint64_t infoData)
+void BinaryView::AddAutoSection(const string& name, uint64_t start, uint64_t length, BNSectionSemantics semantics,
+ const string& type, uint64_t align, uint64_t entrySize, const string& linkedSection,
+ const string& infoSection, uint64_t infoData)
{
- BNAddAutoSection(m_object, name.c_str(), start, length, type.c_str(), align, entrySize, linkedSection.c_str(),
- infoSection.c_str(), infoData);
+ BNAddAutoSection(m_object, name.c_str(), start, length, semantics, type.c_str(), align, entrySize,
+ linkedSection.c_str(), infoSection.c_str(), infoData);
}
@@ -1730,11 +1743,12 @@ void BinaryView::RemoveAutoSection(const string& name)
}
-void BinaryView::AddUserSection(const string& name, uint64_t start, uint64_t length, const string& type,
- uint64_t align, uint64_t entrySize, const string& linkedSection, const string& infoSection, uint64_t infoData)
+void BinaryView::AddUserSection(const string& name, uint64_t start, uint64_t length, BNSectionSemantics semantics,
+ const string& type, uint64_t align, uint64_t entrySize, const string& linkedSection,
+ const string& infoSection, uint64_t infoData)
{
- BNAddUserSection(m_object, name.c_str(), start, length, type.c_str(), align, entrySize, linkedSection.c_str(),
- infoSection.c_str(), infoData);
+ BNAddUserSection(m_object, name.c_str(), start, length, semantics, type.c_str(), align, entrySize,
+ linkedSection.c_str(), infoSection.c_str(), infoData);
}
@@ -1762,6 +1776,7 @@ vector<Section> BinaryView::GetSections()
section.infoData = sections[i].infoData;
section.align = sections[i].align;
section.entrySize = sections[i].entrySize;
+ section.semantics = sections[i].semantics;
result.push_back(section);
}
@@ -1788,6 +1803,7 @@ vector<Section> BinaryView::GetSectionsAt(uint64_t addr)
section.infoData = sections[i].infoData;
section.align = sections[i].align;
section.entrySize = sections[i].entrySize;
+ section.semantics = sections[i].semantics;
result.push_back(section);
}
@@ -1811,6 +1827,7 @@ bool BinaryView::GetSectionByName(const string& name, Section& result)
result.infoData = section.infoData;
result.align = section.align;
result.entrySize = section.entrySize;
+ result.semantics = section.semantics;
BNFreeSection(&section);
return true;