zequanwu updated this revision to Diff 476221. zequanwu added a comment. Use plugin.object-file.pe-coff.abi as minidump process abi.
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D137873/new/ https://reviews.llvm.org/D137873 Files: lldb/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp lldb/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.h lldb/source/Plugins/Process/minidump/ProcessMinidump.cpp lldb/test/Shell/Minidump/Windows/find-module.test
Index: lldb/test/Shell/Minidump/Windows/find-module.test =================================================================== --- lldb/test/Shell/Minidump/Windows/find-module.test +++ lldb/test/Shell/Minidump/Windows/find-module.test @@ -4,7 +4,25 @@ RUN: yaml2obj %S/Inputs/find-module.exe.yaml -o %T/find-module.exe RUN: yaml2obj %S/Inputs/find-module.dmp.yaml -o %T/find-module.dmp RUN: %lldb -O "settings set target.exec-search-paths %T" \ -RUN: -c %T/find-module.dmp -o "image dump objfile" -o exit | FileCheck %s +RUN: -c %T/find-module.dmp -o "image dump objfile" -o "target list" -o exit \ +RUN: | FileCheck --check-prefix=DEFAULT %s -CHECK-LABEL: image dump objfile -CHECK: ObjectFilePECOFF, file = '{{.*}}find-module.exe', arch = i386 +RUN: %lldb -O "settings set plugin.object-file.pe-coff.abi msvc" \ +RUN: -O "settings set target.exec-search-paths %T" -c %T/find-module.dmp \ +RUN: -o "target list" -o exit | FileCheck --check-prefix=MSVC %s + +RUN: %lldb -O "settings set plugin.object-file.pe-coff.abi gnu" \ +RUN: -O "settings set target.exec-search-paths %T" -c %T/find-module.dmp \ +RUN: -o "target list" -o exit | FileCheck --check-prefix=GNU %s + +DEFAULT-LABEL: image dump objfile +DEFAULT: ObjectFilePECOFF, file = '{{.*}}find-module.exe', arch = i386 + +DEFAULT-LABEL: target list +DEFAULT: arch=i386-pc-windows-{{msvc|gnu}} + +MSVC-LABEL: target list +MSVC: arch=i386-pc-windows-msvc + +GNU-LABEL: target list +GNU: arch=i386-pc-windows-gnu Index: lldb/source/Plugins/Process/minidump/ProcessMinidump.cpp =================================================================== --- lldb/source/Plugins/Process/minidump/ProcessMinidump.cpp +++ lldb/source/Plugins/Process/minidump/ProcessMinidump.cpp @@ -8,6 +8,7 @@ #include "ProcessMinidump.h" +#include "Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.h" #include "ThreadMinidump.h" #include "lldb/Core/DumpDataExtractor.h" @@ -31,6 +32,7 @@ #include "lldb/Utility/Log.h" #include "lldb/Utility/State.h" #include "llvm/BinaryFormat/Magic.h" +#include "llvm/Support/Host.h" #include "llvm/Support/MemoryBuffer.h" #include "llvm/Support/Threading.h" @@ -389,7 +391,23 @@ ArchSpec ProcessMinidump::GetArchitecture() { if (!m_is_wow64) { - return m_minidump_parser->GetArchitecture(); + ArchSpec arch = m_minidump_parser->GetArchitecture(); + if (arch.GetTriple().getOS() == llvm::Triple::OSType::Win32) { + static llvm::Triple::EnvironmentType default_env = [] { + auto def_target = llvm::Triple( + llvm::Triple::normalize(llvm::sys::getDefaultTargetTriple())); + if (def_target.getOS() == llvm::Triple::Win32 && + def_target.getEnvironment() != llvm::Triple::UnknownEnvironment) + return def_target.getEnvironment(); + return llvm::Triple::MSVC; + }(); + llvm::Triple::EnvironmentType env = + ObjectFilePECOFF::GetGlobalPluginEnvironment(); + if (env == llvm::Triple::UnknownEnvironment) + env = default_env; + arch.GetTriple().setEnvironment(env); + } + return arch; } llvm::Triple triple; Index: lldb/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.h =================================================================== --- lldb/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.h +++ lldb/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.h @@ -88,6 +88,8 @@ static lldb::SymbolType MapSymbolType(uint16_t coff_symbol_type); + static llvm::Triple::EnvironmentType GetGlobalPluginEnvironment(); + // LLVM RTTI support static char ID; bool isA(const void *ClassID) const override { Index: lldb/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp =================================================================== --- lldb/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp +++ lldb/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp @@ -389,6 +389,10 @@ return lldb::eSymbolTypeInvalid; } +llvm::Triple::EnvironmentType ObjectFilePECOFF::GetGlobalPluginEnvironment() { + return GetGlobalPluginProperties().ABI(); +} + bool ObjectFilePECOFF::CreateBinary() { if (m_binary) return true;
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits