From 24993e749ccd0b8f701f5d8cecaaa49cc205aaa2 Mon Sep 17 00:00:00 2001 From: Zequan Wu Date: Thu, 17 Nov 2022 13:31:40 -0800 Subject: [PATCH] [LLDB][Minidump] Merge executable module's architecture into target's architecture. This allows minidump process ABI to match the PE/COFF file ABI. Reviewed By: labath Differential Revision: https://reviews.llvm.org/D137873 --- .../Plugins/Process/minidump/ProcessMinidump.cpp | 3 ++- lldb/test/Shell/Minidump/Windows/find-module.test | 24 +++++++++++++++++++--- .../unwind-via-stack-win-no-memory-info.yaml | 10 ++++----- 3 files changed, 28 insertions(+), 9 deletions(-) diff --git a/lldb/source/Plugins/Process/minidump/ProcessMinidump.cpp b/lldb/source/Plugins/Process/minidump/ProcessMinidump.cpp index 5c56f03..8722039 100644 --- a/lldb/source/Plugins/Process/minidump/ProcessMinidump.cpp +++ b/lldb/source/Plugins/Process/minidump/ProcessMinidump.cpp @@ -290,7 +290,8 @@ Status ProcessMinidump::DoLoadCore() { SetUnixSignals(UnixSignals::Create(GetArchitecture())); ReadModuleList(); - + if (ModuleSP module = GetTarget().GetExecutableModule()) + GetTarget().MergeArchitecture(module->GetArchitecture()); llvm::Optional pid = m_minidump_parser->GetPid(); if (!pid) { Debugger::ReportWarning("unable to retrieve process ID from minidump file, " diff --git a/lldb/test/Shell/Minidump/Windows/find-module.test b/lldb/test/Shell/Minidump/Windows/find-module.test index c07a1f2..7ac2f74 100644 --- a/lldb/test/Shell/Minidump/Windows/find-module.test +++ b/lldb/test/Shell/Minidump/Windows/find-module.test @@ -4,7 +4,25 @@ use it when opening minidumps. 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 diff --git a/lldb/test/Shell/SymbolFile/Breakpad/unwind-via-stack-win-no-memory-info.yaml b/lldb/test/Shell/SymbolFile/Breakpad/unwind-via-stack-win-no-memory-info.yaml index 6075c33..8981c84 100644 --- a/lldb/test/Shell/SymbolFile/Breakpad/unwind-via-stack-win-no-memory-info.yaml +++ b/lldb/test/Shell/SymbolFile/Breakpad/unwind-via-stack-win-no-memory-info.yaml @@ -50,7 +50,7 @@ Streams: ... --- !COFF -OptionalHeader: +OptionalHeader: AddressOfEntryPoint: 0 ImageBase: 720896 SectionAlignment: 4096 @@ -67,13 +67,13 @@ OptionalHeader: SizeOfStackCommit: 4096 SizeOfHeapReserve: 1048576 SizeOfHeapCommit: 4096 - Debug: + Debug: RelativeVirtualAddress: 8192 Size: 28 -header: - Machine: IMAGE_FILE_MACHINE_AMD64 +header: + Machine: IMAGE_FILE_MACHINE_I386 Characteristics: [ IMAGE_FILE_EXECUTABLE_IMAGE, IMAGE_FILE_LARGE_ADDRESS_AWARE, IMAGE_FILE_DLL ] -sections: +sections: - Name: .text Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ] VirtualAddress: 4096 -- 2.7.4