diff options
| author | Rusty Wagner <rusty.wagner@gmail.com> | 2025-11-04 19:23:44 -0500 |
|---|---|---|
| committer | Rusty Wagner <rusty.wagner@gmail.com> | 2025-11-04 20:48:56 -0500 |
| commit | 21324fa57b44ba77e46be4952a02484cb8c3ef5c (patch) | |
| tree | 7cb747c5c1a670ac799596e5bc645931f1f69a39 /demangler | |
| parent | 864374e250e87901bbbad66086abb9c0b5924022 (diff) | |
Remove indenting APIs from Logger. These are thread unsafe by design.
Loggers are not owned by a specific thread and many are used by multiple threads. The indenting APIs could not be made to be thread safe in any way as they exist, so they have been removed. The data races caused by the indenting APIs are actually an important stability issue that could cause the indentation level to go out of bounds and crash the product.
If you were using the indentation APIs, you will need to rewrite the usage to manually manage the indentation level in a thread safe way.
Diffstat (limited to 'demangler')
| -rw-r--r-- | demangler/msvc/demangle_msvc.cpp | 52 |
1 files changed, 26 insertions, 26 deletions
diff --git a/demangler/msvc/demangle_msvc.cpp b/demangler/msvc/demangle_msvc.cpp index c82d816a..cabee544 100644 --- a/demangler/msvc/demangle_msvc.cpp +++ b/demangler/msvc/demangle_msvc.cpp @@ -162,7 +162,7 @@ Demangle::Demangle(Architecture* arch, string mangledName) : m_view(nullptr) { m_logger = LogRegistry::CreateLogger("MSVCDemangle"); - m_logger->ResetIndent(); + //m_logger->ResetIndent(); } @@ -173,7 +173,7 @@ Demangle::Demangle(Ref<Platform> platform, string mangledName) : m_view(nullptr) { m_logger = LogRegistry::CreateLogger("MSVCDemangle"); - m_logger->ResetIndent(); + //m_logger->ResetIndent(); } @@ -186,7 +186,7 @@ Demangle::Demangle(Ref<BinaryView> view, string mangledName) : throw DemangleException(); m_arch = m_platform->GetArchitecture(); m_logger = LogRegistry::CreateLogger("MSVCDemangle"); - m_logger->ResetIndent(); + //m_logger->ResetIndent(); } @@ -293,9 +293,9 @@ TypeBuilder Demangle::DemangleVarType(BackrefList& varList, bool isReturn, Quali case 'O': { QualifiedName name; - m_logger->Indent(); + //m_logger->Indent(); auto childType = DemangleVarType(varList, false, name); - m_logger->Dedent(); + //m_logger->Dedent(); newType = TypeBuilder::ArrayType(childType.Finalize(), 0); break; } @@ -340,9 +340,9 @@ TypeBuilder Demangle::DemangleVarType(BackrefList& varList, bool isReturn, Quali reader.Consume(2); DemangleModifiers(_const, _volatile, isMember); QualifiedName name; - m_logger->Indent(); + //m_logger->Indent(); newType = DemangleVarType(varList, false, name); - m_logger->Dedent(); + //m_logger->Dedent(); newType.SetConst(_const); newType.SetVolatile(_volatile); return newType; @@ -467,9 +467,9 @@ TypeBuilder Demangle::DemangleVarType(BackrefList& varList, bool isReturn, Quali elementList.push_back(element); } QualifiedName name; - m_logger->Indent(); + //m_logger->Indent(); child = DemangleVarType(varList, false, name); - m_logger->Dedent(); + //m_logger->Dedent(); for (auto i = elementList.rbegin(); i != elementList.rend(); i++) { @@ -479,9 +479,9 @@ TypeBuilder Demangle::DemangleVarType(BackrefList& varList, bool isReturn, Quali else { QualifiedName name; - m_logger->Indent(); + //m_logger->Indent(); child = DemangleVarType(varList, true, name); - m_logger->Dedent(); + //m_logger->Dedent(); } child.SetConst(_const2); @@ -501,17 +501,17 @@ TypeBuilder Demangle::DemangleVarType(BackrefList& varList, bool isReturn, Quali } case EnumerationTypeClass: m_logger->LogDebug("Demangle enumeration\n"); - m_logger->Indent(); + //m_logger->Indent(); DemangleName(typeName, classFunctionType, varList); - m_logger->Dedent(); + //m_logger->Dedent(); newType = TypeBuilder::NamedType(NamedTypeReference::GenerateAutoDemangledTypeReference(EnumNamedTypeClass, typeName), width, width); break; case StructureTypeClass: m_logger->LogDebug("Demangle structure\n"); - m_logger->Indent(); + //m_logger->Indent(); DemangleName(typeName, classFunctionType, varList); - m_logger->Dedent(); + //m_logger->Dedent(); switch (structType) { case ClassStructureType: @@ -721,9 +721,9 @@ void Demangle::DemangleVariableList(vector<FunctionParameter>& paramList, Backre FunctionParameter vt; QualifiedName name; m_logger->LogDebug("Argument %d: %s", i, reader.GetRaw()); - m_logger->Indent(); + //m_logger->Indent(); TypeBuilder type = DemangleVarType(varList, false, name); - m_logger->Dedent(); + //m_logger->Dedent(); if (hasModifiers) { type.SetConst(_const); @@ -820,9 +820,9 @@ void Demangle::DemangleNameTypeRtti(BNNameType& classFunctionType, DemangleModifiers(_const, _volatile, isMember); QualifiedName name; - m_logger->Indent(); + //m_logger->Indent(); rtti = DemangleVarType(nameBackrefList, false, name); - m_logger->Dedent(); + //m_logger->Dedent(); rtti.SetConst(_const); rtti.SetVolatile(_volatile); rtti.SetPointerSuffix(suffix); @@ -991,9 +991,9 @@ string Demangle::DemangleTemplateInstantiationName(BackrefList& nameBackrefList) string Demangle::DemangleTemplateParams(vector<FunctionParameter>& params, BackrefList& nameBackrefList, string& out) { - m_logger->Indent(); + //m_logger->Indent(); DemangleVariableList(params, nameBackrefList); - m_logger->Dedent(); + //m_logger->Dedent(); m_logger->LogDebug("VariableList done\n"); out += "<"; for (size_t i = 0; i < params.size(); i++) @@ -1564,10 +1564,10 @@ TypeBuilder Demangle::DemangleFunction(BNNameType classFunctionType, bool pointe QualifiedName name; m_logger->LogDebug("Demangle function return type %s", reader.GetRaw()); - m_logger->Indent(); + //m_logger->Indent(); returnType = DemangleVarType(nameBackrefList, true, name); m_logger->LogDebug("Return type: %s", returnType.GetString().c_str()); - m_logger->Dedent(); + //m_logger->Dedent(); if (hasModifiers) { returnType.SetConst(return_const); @@ -1641,9 +1641,9 @@ TypeBuilder Demangle::DemangleData() m_logger->LogDebug("%s: '%s'\n", __FUNCTION__, reader.GetRaw()); bool _const = false, _volatile = false, isMember = false; QualifiedName name; - m_logger->Indent(); + //m_logger->Indent(); TypeBuilder newType = DemangleVarType(m_backrefList, false, name); - m_logger->Dedent(); + //m_logger->Dedent(); auto suffix = DemanglePointerSuffix(); DemangleModifiers(_const, _volatile, isMember); newType.SetConst(_const); @@ -1701,7 +1701,7 @@ TypeBuilder Demangle::DemangleVTable() Demangle::DemangleContext Demangle::DemangleSymbol() { m_logger->LogDebug("%s: '%s'\n", __FUNCTION__, reader.GetRaw()); - m_logger->Indent(); + //m_logger->Indent(); BNNameType classFunctionType = NoNameType; QualifiedName varName; |
