summaryrefslogtreecommitdiff
path: root/binaryview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'binaryview.cpp')
-rw-r--r--binaryview.cpp289
1 files changed, 141 insertions, 148 deletions
diff --git a/binaryview.cpp b/binaryview.cpp
index 5ab24694..62bb6f2b 100644
--- a/binaryview.cpp
+++ b/binaryview.cpp
@@ -91,7 +91,8 @@ void BinaryDataNotification::DataVariableAddedCallback(void* ctxt, BNBinaryView*
{
BinaryDataNotification* notify = (BinaryDataNotification*)ctxt;
Ref<BinaryView> view = new BinaryView(BNNewViewReference(object));
- DataVariable varObj(var->address, Confidence<Ref<Type>>(new Type(BNNewTypeReference(var->type)), var->typeConfidence), var->autoDiscovered);
+ DataVariable varObj(var->address,
+ Confidence<Ref<Type>>(new Type(BNNewTypeReference(var->type)), var->typeConfidence), var->autoDiscovered);
notify->OnDataVariableAdded(view, varObj);
}
@@ -100,7 +101,8 @@ void BinaryDataNotification::DataVariableRemovedCallback(void* ctxt, BNBinaryVie
{
BinaryDataNotification* notify = (BinaryDataNotification*)ctxt;
Ref<BinaryView> view = new BinaryView(BNNewViewReference(object));
- DataVariable varObj(var->address, Confidence<Ref<Type>>(new Type(BNNewTypeReference(var->type)), var->typeConfidence), var->autoDiscovered);
+ DataVariable varObj(var->address,
+ Confidence<Ref<Type>>(new Type(BNNewTypeReference(var->type)), var->typeConfidence), var->autoDiscovered);
notify->OnDataVariableRemoved(view, varObj);
}
@@ -109,7 +111,8 @@ void BinaryDataNotification::DataVariableUpdatedCallback(void* ctxt, BNBinaryVie
{
BinaryDataNotification* notify = (BinaryDataNotification*)ctxt;
Ref<BinaryView> view = new BinaryView(BNNewViewReference(object));
- DataVariable varObj(var->address, Confidence<Ref<Type>>(new Type(BNNewTypeReference(var->type)), var->typeConfidence), var->autoDiscovered);
+ DataVariable varObj(var->address,
+ Confidence<Ref<Type>>(new Type(BNNewTypeReference(var->type)), var->typeConfidence), var->autoDiscovered);
notify->OnDataVariableUpdated(view, varObj);
}
@@ -182,7 +185,8 @@ void BinaryDataNotification::SymbolRemovedCallback(void* ctxt, BNBinaryView* obj
}
-void BinaryDataNotification::StringFoundCallback(void* ctxt, BNBinaryView* object, BNStringType type, uint64_t offset, size_t len)
+void BinaryDataNotification::StringFoundCallback(
+ void* ctxt, BNBinaryView* object, BNStringType type, uint64_t offset, size_t len)
{
BinaryDataNotification* notify = (BinaryDataNotification*)ctxt;
Ref<BinaryView> view = new BinaryView(BNNewViewReference(object));
@@ -190,7 +194,8 @@ void BinaryDataNotification::StringFoundCallback(void* ctxt, BNBinaryView* objec
}
-void BinaryDataNotification::StringRemovedCallback(void* ctxt, BNBinaryView* object, BNStringType type, uint64_t offset, size_t len)
+void BinaryDataNotification::StringRemovedCallback(
+ void* ctxt, BNBinaryView* object, BNStringType type, uint64_t offset, size_t len)
{
BinaryDataNotification* notify = (BinaryDataNotification*)ctxt;
Ref<BinaryView> view = new BinaryView(BNNewViewReference(object));
@@ -216,7 +221,8 @@ void BinaryDataNotification::TypeUndefinedCallback(void* ctxt, BNBinaryView* dat
}
-void BinaryDataNotification::TypeReferenceChangedCallback(void* ctxt, BNBinaryView* data, BNQualifiedName* name, BNType* type)
+void BinaryDataNotification::TypeReferenceChangedCallback(
+ void* ctxt, BNBinaryView* data, BNQualifiedName* name, BNType* type)
{
BinaryDataNotification* notify = (BinaryDataNotification*)ctxt;
Ref<BinaryView> view = new BinaryView(BNNewViewReference(data));
@@ -225,7 +231,8 @@ void BinaryDataNotification::TypeReferenceChangedCallback(void* ctxt, BNBinaryVi
}
-void BinaryDataNotification::TypeFieldReferenceChangedCallback(void* ctxt, BNBinaryView* data, BNQualifiedName* name, uint64_t offset)
+void BinaryDataNotification::TypeFieldReferenceChangedCallback(
+ void* ctxt, BNBinaryView* data, BNQualifiedName* name, uint64_t offset)
{
BinaryDataNotification* notify = (BinaryDataNotification*)ctxt;
Ref<BinaryView> view = new BinaryView(BNNewViewReference(data));
@@ -233,7 +240,6 @@ void BinaryDataNotification::TypeFieldReferenceChangedCallback(void* ctxt, BNBin
}
-
BinaryDataNotification::BinaryDataNotification()
{
m_callbacks.context = this;
@@ -265,7 +271,7 @@ BinaryDataNotification::BinaryDataNotification()
Symbol::Symbol(BNSymbolType type, const string& shortName, const string& fullName, const string& rawName, uint64_t addr,
- BNSymbolBinding binding, const NameSpace& nameSpace, uint64_t ordinal)
+ BNSymbolBinding binding, const NameSpace& nameSpace, uint64_t ordinal)
{
BNNameSpace ns = nameSpace.GetAPIObject();
m_object = BNCreateSymbol(type, shortName.c_str(), fullName.c_str(), rawName.c_str(), addr, binding, &ns, ordinal);
@@ -274,12 +280,11 @@ Symbol::Symbol(BNSymbolType type, const string& shortName, const string& fullNam
Symbol::Symbol(BNSymbolType type, const std::string& name, uint64_t addr, BNSymbolBinding binding,
- const NameSpace& nameSpace, uint64_t ordinal)
+ const NameSpace& nameSpace, uint64_t ordinal)
{
BNNameSpace ns = nameSpace.GetAPIObject();
m_object = BNCreateSymbol(type, name.c_str(), name.c_str(), name.c_str(), addr, binding, &ns, ordinal);
NameSpace::FreeAPIObject(&ns);
-
}
@@ -361,8 +366,8 @@ Ref<Symbol> Symbol::ImportedFunctionFromImportAddressSymbol(Symbol* sym, uint64_
}
-AnalysisCompletionEvent::AnalysisCompletionEvent(BinaryView* view, const std::function<void()>& callback):
- m_callback(callback)
+AnalysisCompletionEvent::AnalysisCompletionEvent(BinaryView* view, const std::function<void()>& callback) :
+ m_callback(callback)
{
m_object = BNAddAnalysisCompletionEvent(view->GetObject(), this, CompletionCallback);
}
@@ -374,14 +379,16 @@ void AnalysisCompletionEvent::CompletionCallback(void* ctxt)
unique_lock<recursive_mutex> lock(event->m_mutex);
event->m_callback();
- event->m_callback = []() {};
+ event->m_callback = []() {
+ };
}
void AnalysisCompletionEvent::Cancel()
{
unique_lock<recursive_mutex> lock(m_mutex);
- m_callback = []() {};
+ m_callback = []() {
+ };
// This allows the API side to free the BinaryNinja::AnalysisCompletionEvent object
BNCancelAnalysisCompletionEvent(m_object);
}
@@ -542,9 +549,7 @@ std::vector<Ref<Tag>> Tag::ConvertAndFreeTagList(BNTag** tags, size_t count)
}
-TagReference::TagReference()
-{
-}
+TagReference::TagReference() {}
TagReference::TagReference(const BNTagReference& ref)
@@ -568,14 +573,14 @@ bool TagReference::operator==(const TagReference& other) const
return false;
switch (refType)
{
- case AddressTagReference:
- return func == other.func && arch == other.arch && addr == other.addr;
- case FunctionTagReference:
- return func == other.func;
- case DataTagReference:
- return addr == other.addr;
- default:
- return false;
+ case AddressTagReference:
+ return func == other.func && arch == other.arch && addr == other.addr;
+ case FunctionTagReference:
+ return func == other.func;
+ case DataTagReference:
+ return addr == other.addr;
+ default:
+ return false;
}
}
@@ -605,7 +610,7 @@ BNTagReference* TagReference::CreateTagReferenceList(const std::vector<TagRefere
BNTagReference* refs = new BNTagReference[*count];
- for (size_t i = 0; i < *count; i ++)
+ for (size_t i = 0; i < *count; i++)
{
refs[i] = tags[i];
}
@@ -618,7 +623,7 @@ std::vector<TagReference> TagReference::ConvertTagReferenceList(BNTagReference*
{
std::vector<TagReference> result;
result.reserve(count);
- for (size_t i = 0; i < count; i ++)
+ for (size_t i = 0; i < count; i++)
{
result.emplace_back(tags[i]);
}
@@ -853,8 +858,8 @@ BinaryView::BinaryView(const std::string& typeName, FileMetadata* file, BinaryVi
view.save = SaveCallback;
m_file = file;
AddRefForRegistration();
- m_object = BNCreateCustomBinaryView(typeName.c_str(), m_file->GetObject(),
- parentView ? parentView->GetObject() : nullptr, &view);
+ m_object = BNCreateCustomBinaryView(
+ typeName.c_str(), m_file->GetObject(), parentView ? parentView->GetObject() : nullptr, &view);
}
@@ -1156,7 +1161,7 @@ bool BinaryView::CreateDatabase(const string& path, Ref<SaveSettings> settings)
bool BinaryView::CreateDatabase(const string& path,
- const function<bool(size_t progress, size_t total)>& progressCallback, Ref<SaveSettings> settings)
+ const function<bool(size_t progress, size_t total)>& progressCallback, Ref<SaveSettings> settings)
{
auto parent = GetParentView();
if (parent)
@@ -1171,7 +1176,8 @@ bool BinaryView::SaveAutoSnapshot(Ref<SaveSettings> settings)
}
-bool BinaryView::SaveAutoSnapshot(const function<bool(size_t progress, size_t total)>& progressCallback, Ref<SaveSettings> settings)
+bool BinaryView::SaveAutoSnapshot(
+ const function<bool(size_t progress, size_t total)>& progressCallback, Ref<SaveSettings> settings)
{
return m_file->SaveAutoSnapshot(this, progressCallback, settings);
}
@@ -1614,7 +1620,9 @@ map<uint64_t, DataVariable> BinaryView::GetDataVariables()
for (size_t i = 0; i < count; i++)
{
result.emplace(piecewise_construct, forward_as_tuple(vars[i].address),
- forward_as_tuple(vars[i].address, Confidence<Ref<Type>>(new Type(BNNewTypeReference(vars[i].type)), vars[i].typeConfidence), vars[i].autoDiscovered));
+ forward_as_tuple(vars[i].address,
+ Confidence<Ref<Type>>(new Type(BNNewTypeReference(vars[i].type)), vars[i].typeConfidence),
+ vars[i].autoDiscovered));
}
BNFreeDataVariables(vars, count);
@@ -1664,7 +1672,7 @@ AnalysisInfo BinaryView::GetAnalysisInfo()
result.activeInfo.reserve(info->count);
for (size_t i = 0; i < info->count; i++)
result.activeInfo.emplace_back(new Function(BNNewFunctionReference(info->activeInfo[i].func)),
- info->activeInfo[i].analysisTime, info->activeInfo[i].submitCount, info->activeInfo[i].updateCount);
+ info->activeInfo[i].analysisTime, info->activeInfo[i].submitCount, info->activeInfo[i].updateCount);
BNFreeAnalysisInfo(info);
return result;
}
@@ -1829,7 +1837,7 @@ vector<ReferenceSource> BinaryView::GetCodeReferences(uint64_t addr, uint64_t le
vector<uint64_t> BinaryView::GetCodeReferencesFrom(ReferenceSource src)
{
size_t count;
- BNReferenceSource _src{ src.func->m_object, src.arch->m_object, src.addr };
+ BNReferenceSource _src {src.func->m_object, src.arch->m_object, src.addr};
uint64_t* refs = BNGetCodeReferencesFrom(m_object, &_src, &count);
vector<uint64_t> result(refs, &refs[count]);
BNFreeAddressList(refs);
@@ -1840,7 +1848,7 @@ vector<uint64_t> BinaryView::GetCodeReferencesFrom(ReferenceSource src)
vector<uint64_t> BinaryView::GetCodeReferencesFrom(ReferenceSource src, uint64_t len)
{
size_t count;
- BNReferenceSource _src{ src.func->m_object, src.arch->m_object, src.addr };
+ BNReferenceSource _src {src.func->m_object, src.arch->m_object, src.addr};
uint64_t* refs = BNGetCodeReferencesFromInRange(m_object, &_src, len, &count);
vector<uint64_t> result(refs, &refs[count]);
BNFreeAddressList(refs);
@@ -2027,7 +2035,7 @@ vector<TypeReferenceSource> BinaryView::GetTypeReferencesForTypeField(const Qual
vector<TypeReferenceSource> BinaryView::GetCodeReferencesForTypeFrom(ReferenceSource src)
{
size_t count;
- BNReferenceSource _src{ src.func->m_object, src.arch->m_object, src.addr };
+ BNReferenceSource _src {src.func->m_object, src.arch->m_object, src.addr};
BNTypeReferenceSource* refs = BNGetCodeReferencesForTypeFrom(m_object, &_src, &count);
vector<TypeReferenceSource> result;
@@ -2049,7 +2057,7 @@ vector<TypeReferenceSource> BinaryView::GetCodeReferencesForTypeFrom(ReferenceSo
vector<TypeReferenceSource> BinaryView::GetCodeReferencesForTypeFrom(ReferenceSource src, uint64_t len)
{
size_t count;
- BNReferenceSource _src{ src.func->m_object, src.arch->m_object, src.addr };
+ BNReferenceSource _src {src.func->m_object, src.arch->m_object, src.addr};
BNTypeReferenceSource* refs = BNGetCodeReferencesForTypeFromInRange(m_object, &_src, len, &count);
vector<TypeReferenceSource> result;
@@ -2070,7 +2078,7 @@ vector<TypeReferenceSource> BinaryView::GetCodeReferencesForTypeFrom(ReferenceSo
vector<TypeReferenceSource> BinaryView::GetCodeReferencesForTypeFieldFrom(ReferenceSource src)
{
size_t count;
- BNReferenceSource _src{ src.func->m_object, src.arch->m_object, src.addr };
+ BNReferenceSource _src {src.func->m_object, src.arch->m_object, src.addr};
BNTypeReferenceSource* refs = BNGetCodeReferencesForTypeFieldsFrom(m_object, &_src, &count);
vector<TypeReferenceSource> result;
@@ -2092,7 +2100,7 @@ vector<TypeReferenceSource> BinaryView::GetCodeReferencesForTypeFieldFrom(Refere
vector<TypeReferenceSource> BinaryView::GetCodeReferencesForTypeFieldFrom(ReferenceSource src, uint64_t len)
{
size_t count;
- BNReferenceSource _src{ src.func->m_object, src.arch->m_object, src.addr };
+ BNReferenceSource _src {src.func->m_object, src.arch->m_object, src.addr};
BNTypeReferenceSource* refs = BNGetCodeReferencesForTypeFieldsFromInRange(m_object, &_src, len, &count);
vector<TypeReferenceSource> result;
@@ -2125,13 +2133,11 @@ vector<uint64_t> BinaryView::GetAllFieldsReferenced(const QualifiedName& type)
}
-std::map<uint64_t, std::vector<size_t>> BinaryView::GetAllSizesReferenced(
- const QualifiedName& type)
+std::map<uint64_t, std::vector<size_t>> BinaryView::GetAllSizesReferenced(const QualifiedName& type)
{
size_t count;
BNQualifiedName nameObj = type.GetAPIObject();
- BNTypeFieldReferenceSizeInfo* fields = BNGetAllSizesReferenced(m_object,
- &nameObj, &count);
+ BNTypeFieldReferenceSizeInfo* fields = BNGetAllSizesReferenced(m_object, &nameObj, &count);
std::map<uint64_t, std::vector<size_t>> result;
for (size_t i = 0; i < count; i++)
@@ -2148,13 +2154,11 @@ std::map<uint64_t, std::vector<size_t>> BinaryView::GetAllSizesReferenced(
}
-std::map<uint64_t, std::vector<Confidence<Ref<Type>>>>
- BinaryView::GetAllTypesReferenced(const QualifiedName& type)
+std::map<uint64_t, std::vector<Confidence<Ref<Type>>>> BinaryView::GetAllTypesReferenced(const QualifiedName& type)
{
size_t count;
BNQualifiedName nameObj = type.GetAPIObject();
- BNTypeFieldReferenceTypeInfo* fields = BNGetAllTypesReferenced(m_object,
- &nameObj, &count);
+ BNTypeFieldReferenceTypeInfo* fields = BNGetAllTypesReferenced(m_object, &nameObj, &count);
std::map<uint64_t, std::vector<Confidence<Ref<Type>>>> result;
for (size_t i = 0; i < count; i++)
@@ -2173,8 +2177,7 @@ std::map<uint64_t, std::vector<Confidence<Ref<Type>>>>
}
-std::vector<size_t> BinaryView::GetSizesReferenced(const QualifiedName& type,
- uint64_t offset)
+std::vector<size_t> BinaryView::GetSizesReferenced(const QualifiedName& type, uint64_t offset)
{
size_t count;
BNQualifiedName nameObj = type.GetAPIObject();
@@ -2190,13 +2193,11 @@ std::vector<size_t> BinaryView::GetSizesReferenced(const QualifiedName& type,
}
-std::vector<Confidence<Ref<Type>>> BinaryView::GetTypesReferenced(
- const QualifiedName& type, uint64_t offset)
+std::vector<Confidence<Ref<Type>>> BinaryView::GetTypesReferenced(const QualifiedName& type, uint64_t offset)
{
size_t count;
BNQualifiedName nameObj = type.GetAPIObject();
- BNTypeWithConfidence* types = BNGetTypesReferenced(m_object, &nameObj, offset,
- &count);
+ BNTypeWithConfidence* types = BNGetTypesReferenced(m_object, &nameObj, offset, &count);
std::vector<Confidence<Ref<Type>>> result;
result.reserve(count);
@@ -2215,7 +2216,7 @@ std::vector<Confidence<Ref<Type>>> BinaryView::GetTypesReferenced(
vector<uint64_t> BinaryView::GetCallees(ReferenceSource callSite)
{
size_t count;
- BNReferenceSource src { callSite.func->m_object, callSite.arch->m_object, callSite.addr };
+ BNReferenceSource src {callSite.func->m_object, callSite.arch->m_object, callSite.addr};
uint64_t* refs = BNGetCallees(m_object, &src, &count);
vector<uint64_t> result(refs, &refs[count]);
BNFreeAddressList(refs);
@@ -2334,7 +2335,8 @@ vector<Ref<Symbol>> BinaryView::GetSymbolsOfType(BNSymbolType type, const NameSp
}
-vector<Ref<Symbol>> BinaryView::GetSymbolsOfType(BNSymbolType type, uint64_t start, uint64_t len, const NameSpace& nameSpace)
+vector<Ref<Symbol>> BinaryView::GetSymbolsOfType(
+ BNSymbolType type, uint64_t start, uint64_t len, const NameSpace& nameSpace)
{
size_t count;
BNNameSpace ns = nameSpace.GetAPIObject();
@@ -2376,7 +2378,8 @@ void BinaryView::DefineAutoSymbol(Ref<Symbol> sym)
Ref<Symbol> BinaryView::DefineAutoSymbolAndVariableOrFunction(Ref<Platform> platform, Ref<Symbol> sym, Ref<Type> type)
{
- BNSymbol* result = BNDefineAutoSymbolAndVariableOrFunction(m_object, platform ? platform->GetObject() : nullptr, sym->GetObject(), type ? type->GetObject() : nullptr);
+ BNSymbol* result = BNDefineAutoSymbolAndVariableOrFunction(
+ m_object, platform ? platform->GetObject() : nullptr, sym->GetObject(), type ? type->GetObject() : nullptr);
if (!result)
return nullptr;
return new Symbol(result);
@@ -2403,7 +2406,8 @@ void BinaryView::UndefineUserSymbol(Ref<Symbol> sym)
void BinaryView::DefineImportedFunction(Ref<Symbol> importAddressSym, Ref<Function> func, Ref<Type> type)
{
- BNDefineImportedFunction(m_object, importAddressSym->GetObject(), func->GetObject(), type ? type->GetObject() : nullptr);
+ BNDefineImportedFunction(
+ m_object, importAddressSym->GetObject(), func->GetObject(), type ? type->GetObject() : nullptr);
}
@@ -2478,7 +2482,7 @@ std::vector<Ref<TagType>> BinaryView::GetTagTypes()
std::vector<Ref<TagType>> result;
result.reserve(count);
- for (size_t i = 0; i < count; i ++)
+ for (size_t i = 0; i < count; i++)
{
result.push_back(new TagType(BNNewTagTypeReference(tagTypes[i])));
}
@@ -2564,7 +2568,7 @@ std::map<Ref<TagType>, size_t> BinaryView::GetAllTagReferenceTypeCounts()
BNGetAllTagReferenceTypeCounts(m_object, &types, &counts, &count);
std::map<Ref<TagType>, size_t> result;
- for (size_t i = 0; i < count; i ++)
+ for (size_t i = 0; i < count; i++)
{
result[new TagType(BNNewTagTypeReference(types[i]))] = counts[i];
}
@@ -2718,7 +2722,8 @@ void BinaryView::RemoveTagReference(const TagReference& ref)
}
-Ref<Tag> BinaryView::CreateAutoDataTag(uint64_t addr, const std::string& tagTypeName, const std::string& data, bool unique)
+Ref<Tag> BinaryView::CreateAutoDataTag(
+ uint64_t addr, const std::string& tagTypeName, const std::string& data, bool unique)
{
Ref<TagType> tagType = GetTagTypeByName(tagTypeName);
if (!tagType)
@@ -2728,7 +2733,8 @@ Ref<Tag> BinaryView::CreateAutoDataTag(uint64_t addr, const std::string& tagType
}
-Ref<Tag> BinaryView::CreateUserDataTag(uint64_t addr, const std::string& tagTypeName, const std::string& data, bool unique)
+Ref<Tag> BinaryView::CreateUserDataTag(
+ uint64_t addr, const std::string& tagTypeName, const std::string& data, bool unique)
{
Ref<TagType> tagType = GetTagTypeByName(tagTypeName);
if (!tagType)
@@ -2780,7 +2786,6 @@ Ref<Tag> BinaryView::CreateUserDataTag(uint64_t addr, Ref<TagType> tagType, cons
bool BinaryView::CanAssemble(Architecture* arch)
{
return BNCanAssemble(m_object, arch->GetObject());
-
}
bool BinaryView::IsNeverBranchPatchAvailable(Architecture* arch, uint64_t addr)
@@ -2946,7 +2951,8 @@ uint64_t BinaryView::GetPreviousDataVariableStartBeforeAddress(uint64_t addr)
}
-bool BinaryView::ParsePossibleValueSet(const string& value, BNRegisterValueType state, PossibleValueSet& result, uint64_t here, string& errors)
+bool BinaryView::ParsePossibleValueSet(
+ const string& value, BNRegisterValueType state, PossibleValueSet& result, uint64_t here, string& errors)
{
BNPossibleValueSet res;
char* errorStr = nullptr;
@@ -2968,7 +2974,7 @@ bool BinaryView::ParsePossibleValueSet(const string& value, BNRegisterValueType
bool BinaryView::ParseTypeString(const string& text, QualifiedNameAndType& result, string& errors,
- const std::set<QualifiedName>& typesAllowRedefinition)
+ const std::set<QualifiedName>& typesAllowRedefinition)
{
BNQualifiedNameAndType nt;
char* errorStr;
@@ -2977,10 +2983,10 @@ bool BinaryView::ParseTypeString(const string& text, QualifiedNameAndType& resul
typesList.count = typesAllowRedefinition.size();
typesList.names = new BNQualifiedName[typesList.count];
size_t i = 0;
- for(auto& type : typesAllowRedefinition)
+ for (auto& type : typesAllowRedefinition)
{
typesList.names[i] = type.GetAPIObject();
- i ++;
+ i++;
}
if (!BNParseTypeString(m_object, text.c_str(), &nt, &errorStr, &typesList))
@@ -3001,8 +3007,8 @@ bool BinaryView::ParseTypeString(const string& text, QualifiedNameAndType& resul
bool BinaryView::ParseTypeString(const string& source, map<QualifiedName, Ref<Type>>& types,
- map<QualifiedName, Ref<Type>>& variables, map<QualifiedName, Ref<Type>>& functions, string& errors,
- const std::set<QualifiedName>& typesAllowRedefinition)
+ map<QualifiedName, Ref<Type>>& variables, map<QualifiedName, Ref<Type>>& functions, string& errors,
+ const std::set<QualifiedName>& typesAllowRedefinition)
{
BNTypeParserResult result;
char* errorStr = nullptr;
@@ -3015,10 +3021,10 @@ bool BinaryView::ParseTypeString(const string& source, map<QualifiedName, Ref<Ty
typesList.count = typesAllowRedefinition.size();
typesList.names = new BNQualifiedName[typesList.count];
size_t i = 0;
- for(auto& type : typesAllowRedefinition)
+ for (auto& type : typesAllowRedefinition)
{
typesList.names[i] = type.GetAPIObject();
- i ++;
+ i++;
}
bool ok = BNParseTypesString(m_object, source.c_str(), &result, &errorStr, &typesList);
@@ -3183,20 +3189,19 @@ void BinaryView::RegisterPlatformTypes(Platform* platform)
}
-bool BinaryView::FindNextData(uint64_t start, const DataBuffer& data, uint64_t& result,
- BNFindFlag flags)
+bool BinaryView::FindNextData(uint64_t start, const DataBuffer& data, uint64_t& result, BNFindFlag flags)
{
return BNFindNextData(m_object, start, data.GetBufferObject(), &result, flags);
}
bool BinaryView::FindNextText(uint64_t start, const std::string& data, uint64_t& result,
- Ref<DisassemblySettings> settings, BNFindFlag flags, BNFunctionGraphType graph)
+ Ref<DisassemblySettings> settings, BNFindFlag flags, BNFunctionGraphType graph)
{
return BNFindNextText(m_object, start, data.c_str(), &result, settings->GetObject(), flags, graph);
}
-bool BinaryView::FindNextConstant(uint64_t start, uint64_t constant, uint64_t& result,
- Ref<DisassemblySettings> settings, BNFunctionGraphType graph)
+bool BinaryView::FindNextConstant(
+ uint64_t start, uint64_t constant, uint64_t& result, Ref<DisassemblySettings> settings, BNFunctionGraphType graph)
{
return BNFindNextConstant(m_object, start, constant, &result, settings->GetObject(), graph);
}
@@ -3234,8 +3239,7 @@ struct MatchCallbackContextForText
};
-static bool MatchCallbackForText(void* ctxt, uint64_t addr, const char* buffer,
- BNLinearDisassemblyLine* line)
+static bool MatchCallbackForText(void* ctxt, uint64_t addr, const char* buffer, BNLinearDisassemblyLine* line)
{
MatchCallbackContextForText* cb = (MatchCallbackContextForText*)ctxt;
@@ -3264,76 +3268,74 @@ static bool MatchCallbackForConstant(void* ctxt, uint64_t addr, BNLinearDisassem
bool BinaryView::FindNextData(uint64_t start, uint64_t end, const DataBuffer& data, uint64_t& addr, BNFindFlag flags,
- const std::function<bool(size_t current, size_t total)>& progress)
+ const std::function<bool(size_t current, size_t total)>& progress)
{
FindProgressCallbackContext fp;
fp.func = progress;
- return BNFindNextDataWithProgress(m_object, start, end, data.GetBufferObject(), &addr, flags, &fp, FindProgressCallback);
+ return BNFindNextDataWithProgress(
+ m_object, start, end, data.GetBufferObject(), &addr, flags, &fp, FindProgressCallback);
}
-bool BinaryView::FindNextText(uint64_t start, uint64_t end, const std::string& data,
- uint64_t& addr, Ref<DisassemblySettings> settings, BNFindFlag flags, BNFunctionGraphType graph,
- const std::function<bool(size_t current, size_t total)>& progress)
+bool BinaryView::FindNextText(uint64_t start, uint64_t end, const std::string& data, uint64_t& addr,
+ Ref<DisassemblySettings> settings, BNFindFlag flags, BNFunctionGraphType graph,
+ const std::function<bool(size_t current, size_t total)>& progress)
{
FindProgressCallbackContext fp;
fp.func = progress;
- return BNFindNextTextWithProgress(m_object, start, end, data.c_str(), &addr,
- settings->GetObject(), flags, graph, &fp, FindProgressCallback);
+ return BNFindNextTextWithProgress(
+ m_object, start, end, data.c_str(), &addr, settings->GetObject(), flags, graph, &fp, FindProgressCallback);
}
bool BinaryView::FindNextConstant(uint64_t start, uint64_t end, uint64_t constant, uint64_t& addr,
- Ref<DisassemblySettings> settings, BNFunctionGraphType graph,
- const std::function<bool(size_t current, size_t total)>& progress)
+ Ref<DisassemblySettings> settings, BNFunctionGraphType graph,
+ const std::function<bool(size_t current, size_t total)>& progress)
{
FindProgressCallbackContext fp;
fp.func = progress;
- return BNFindNextConstantWithProgress(m_object, start, end, constant, &addr,
- settings->GetObject(), graph, &fp, FindProgressCallback);
+ return BNFindNextConstantWithProgress(
+ m_object, start, end, constant, &addr, settings->GetObject(), graph, &fp, FindProgressCallback);
}
-bool BinaryView::FindAllData(uint64_t start, uint64_t end, const DataBuffer& data,
- BNFindFlag flags, const std::function<bool(size_t current, size_t total)>& progress,
- const std::function<bool(uint64_t addr, const DataBuffer& match)>& matchCallback)
+bool BinaryView::FindAllData(uint64_t start, uint64_t end, const DataBuffer& data, BNFindFlag flags,
+ const std::function<bool(size_t current, size_t total)>& progress,
+ const std::function<bool(uint64_t addr, const DataBuffer& match)>& matchCallback)
{
FindProgressCallbackContext fp;
fp.func = progress;
MatchCallbackContextForDataBuffer mc;
mc.func = matchCallback;
- return BNFindAllDataWithProgress(m_object, start, end, data.GetBufferObject(),
- flags, &fp, FindProgressCallback, &mc, MatchCallbackForDataBuffer);
+ return BNFindAllDataWithProgress(m_object, start, end, data.GetBufferObject(), flags, &fp, FindProgressCallback,
+ &mc, MatchCallbackForDataBuffer);
}
-bool BinaryView::FindAllText(uint64_t start, uint64_t end, const std::string& data,
- Ref<DisassemblySettings> settings, BNFindFlag flags, BNFunctionGraphType graph,
- const std::function<bool(size_t current, size_t total)>& progress,
- const std::function<bool(uint64_t addr, const std::string& match,
- const LinearDisassemblyLine& line)>& matchCallback)
+bool BinaryView::FindAllText(uint64_t start, uint64_t end, const std::string& data, Ref<DisassemblySettings> settings,
+ BNFindFlag flags, BNFunctionGraphType graph, const std::function<bool(size_t current, size_t total)>& progress,
+ const std::function<bool(uint64_t addr, const std::string& match, const LinearDisassemblyLine& line)>&
+ matchCallback)
{
FindProgressCallbackContext fp;
fp.func = progress;
MatchCallbackContextForText mc;
mc.func = matchCallback;
- return BNFindAllTextWithProgress(m_object, start, end, data.c_str(), settings->GetObject(),
- flags, graph, &fp, FindProgressCallback, &mc, MatchCallbackForText);
+ return BNFindAllTextWithProgress(m_object, start, end, data.c_str(), settings->GetObject(), flags, graph, &fp,
+ FindProgressCallback, &mc, MatchCallbackForText);
}
-bool BinaryView::FindAllConstant(uint64_t start, uint64_t end, uint64_t constant,
- Ref<DisassemblySettings> settings, BNFunctionGraphType graph,
- const std::function<bool(size_t current, size_t total)>& progress,
- const std::function<bool(uint64_t addr, const LinearDisassemblyLine& line)>&
- matchCallback)
+bool BinaryView::FindAllConstant(uint64_t start, uint64_t end, uint64_t constant, Ref<DisassemblySettings> settings,
+ BNFunctionGraphType graph, const std::function<bool(size_t current, size_t total)>& progress,
+ const std::function<bool(uint64_t addr, const LinearDisassemblyLine& line)>& matchCallback)
{
FindProgressCallbackContext fp;
fp.func = progress;
MatchCallbackContextForConstant mc;
mc.func = matchCallback;
- return BNFindAllConstantWithProgress(m_object, start, end, constant, settings->GetObject(),
- graph, &fp, FindProgressCallback, &mc, MatchCallbackForConstant);
+ return BNFindAllConstantWithProgress(m_object, start, end, constant, settings->GetObject(), graph, &fp,
+ FindProgressCallback, &mc, MatchCallbackForConstant);
}
@@ -3391,8 +3393,8 @@ bool BinaryView::GetAddressInput(uint64_t& result, const string& prompt, const s
}
-void BinaryView::AddAutoSegment(uint64_t start, uint64_t length, uint64_t dataOffset, uint64_t dataLength,
- uint32_t flags)
+void BinaryView::AddAutoSegment(
+ uint64_t start, uint64_t length, uint64_t dataOffset, uint64_t dataLength, uint32_t flags)
{
BNAddAutoSegment(m_object, start, length, dataOffset, dataLength, flags);
}
@@ -3404,8 +3406,8 @@ void BinaryView::RemoveAutoSegment(uint64_t start, uint64_t length)
}
-void BinaryView::AddUserSegment(uint64_t start, uint64_t length, uint64_t dataOffset, uint64_t dataLength,
- uint32_t flags)
+void BinaryView::AddUserSegment(
+ uint64_t start, uint64_t length, uint64_t dataOffset, uint64_t dataLength, uint32_t flags)
{
BNAddUserSegment(m_object, start, length, dataOffset, dataLength, flags);
}
@@ -3449,11 +3451,11 @@ bool BinaryView::GetAddressForDataOffset(uint64_t offset, uint64_t& addr)
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)
+ 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, semantics, type.c_str(), align, entrySize,
- linkedSection.c_str(), infoSection.c_str(), infoData);
+ linkedSection.c_str(), infoSection.c_str(), infoData);
}
@@ -3464,11 +3466,11 @@ void BinaryView::RemoveAutoSection(const string& name)
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)
+ 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, semantics, type.c_str(), align, entrySize,
- linkedSection.c_str(), infoSection.c_str(), infoData);
+ linkedSection.c_str(), infoSection.c_str(), infoData);
}
@@ -3484,7 +3486,7 @@ vector<Ref<Section>> BinaryView::GetSections()
BNSection** sections = BNGetSections(m_object, &count);
vector<Ref<Section>> result;
- result.reserve(count);
+ result.reserve(count);
for (size_t i = 0; i < count; i++)
result.push_back(new Section(BNNewSectionReference(sections[i])));
@@ -3499,7 +3501,7 @@ vector<Ref<Section>> BinaryView::GetSectionsAt(uint64_t addr)
BNSection** sections = BNGetSectionsAt(m_object, addr, &count);
vector<Ref<Section>> result;
- result.reserve(count);
+ result.reserve(count);
for (size_t i = 0; i < count; i++)
{
result.push_back(new Section(BNNewSectionReference(sections[i])));
@@ -3719,7 +3721,8 @@ NameSpace BinaryView::GetExternalNameSpace()
}
-bool BinaryView::ParseExpression(Ref<BinaryView> view, const string& expression, uint64_t &offset, uint64_t here, string& errorString)
+bool BinaryView::ParseExpression(
+ Ref<BinaryView> view, const string& expression, uint64_t& offset, uint64_t here, string& errorString)
{
char* err = nullptr;
if (!BNParseExpression(view ? view->GetObject() : nullptr, expression.c_str(), &offset, here, &err))
@@ -3735,22 +3738,18 @@ bool BinaryView::ParseExpression(Ref<BinaryView> view, const string& expression,
}
-Ref<Structure> BinaryView::CreateStructureFromOffsetAccess(const QualifiedName& type,
- bool* newMemberAdded) const
+Ref<Structure> BinaryView::CreateStructureFromOffsetAccess(const QualifiedName& type, bool* newMemberAdded) const
{
BNQualifiedName typeObj = type.GetAPIObject();
- BNStructure* result = BNCreateStructureFromOffsetAccess(m_object, &typeObj,
- newMemberAdded);
+ BNStructure* result = BNCreateStructureFromOffsetAccess(m_object, &typeObj, newMemberAdded);
return new Structure(result);
}
-Confidence<Ref<Type>> BinaryView::CreateStructureMemberFromAccess(
- const QualifiedName& name, uint64_t offset) const
+Confidence<Ref<Type>> BinaryView::CreateStructureMemberFromAccess(const QualifiedName& name, uint64_t offset) const
{
BNQualifiedName typeObj = name.GetAPIObject();
- BNTypeWithConfidence type = BNCreateStructureMemberFromAccess(m_object, &typeObj,
- offset);
+ BNTypeWithConfidence type = BNCreateStructureMemberFromAccess(m_object, &typeObj, offset);
if (type.type)
return Confidence<Ref<Type>>(new Type(type.type), type.confidence);
@@ -3797,30 +3796,24 @@ Ref<Symbol> Relocation::GetSymbol() const
}
-BinaryData::BinaryData(FileMetadata* file): BinaryView(BNCreateBinaryDataView(file->GetObject()))
-{
-}
+BinaryData::BinaryData(FileMetadata* file) : BinaryView(BNCreateBinaryDataView(file->GetObject())) {}
-BinaryData::BinaryData(FileMetadata* file, const DataBuffer& data):
- BinaryView(BNCreateBinaryDataViewFromBuffer(file->GetObject(), data.GetBufferObject()))
-{
-}
+BinaryData::BinaryData(FileMetadata* file, const DataBuffer& data) :
+ BinaryView(BNCreateBinaryDataViewFromBuffer(file->GetObject(), data.GetBufferObject()))
+{}
-BinaryData::BinaryData(FileMetadata* file, const void* data, size_t len):
- BinaryView(BNCreateBinaryDataViewFromData(file->GetObject(), data, len))
-{
-}
+BinaryData::BinaryData(FileMetadata* file, const void* data, size_t len) :
+ BinaryView(BNCreateBinaryDataViewFromData(file->GetObject(), data, len))
+{}
-BinaryData::BinaryData(FileMetadata* file, const string& path):
- BinaryView(BNCreateBinaryDataViewFromFilename(file->GetObject(), path.c_str()))
-{
-}
+BinaryData::BinaryData(FileMetadata* file, const string& path) :
+ BinaryView(BNCreateBinaryDataViewFromFilename(file->GetObject(), path.c_str()))
+{}
-BinaryData::BinaryData(FileMetadata* file, FileAccessor* accessor):
- BinaryView(BNCreateBinaryDataViewFromFile(file->GetObject(), accessor->GetCallbacks()))
-{
-}
+BinaryData::BinaryData(FileMetadata* file, FileAccessor* accessor) :
+ BinaryView(BNCreateBinaryDataViewFromFile(file->GetObject(), accessor->GetCallbacks()))
+{}