https://github.com/clayborg updated https://github.com/llvm/llvm-project/pull/177289
>From f813cbdfa60fdac02da6e27c31cacc4fd669269a Mon Sep 17 00:00:00 2001 From: Greg Clayton <[email protected]> Date: Wed, 21 Jan 2026 16:46:59 -0800 Subject: [PATCH 1/2] Add the ability to load ELF core file executables and shared libraries from memory. This patch enables ELF core files to be loaded and still show executables and shared libraries. Functionality includes: - Load executable and shared libraries from memory if ELF headers are available - Create placeholder for missing shared libraries and executable. Previously you just wouldn't get anything in the "image list" if no executable was provided. --- lldb/source/Core/DynamicLoader.cpp | 14 ++-- .../POSIX-DYLD/DynamicLoaderPOSIXDYLD.cpp | 18 ++++- .../Process/elf-core/ProcessElfCore.cpp | 37 ++++++++-- .../Plugins/Process/elf-core/ProcessElfCore.h | 4 +- .../postmortem/elf-core/TestLinuxCore.py | 68 ++++++++++++++++++ .../elf-core/linux-x86_64-no-exe.core | Bin 0 -> 225280 bytes 6 files changed, 127 insertions(+), 14 deletions(-) create mode 100644 lldb/test/API/functionalities/postmortem/elf-core/linux-x86_64-no-exe.core diff --git a/lldb/source/Core/DynamicLoader.cpp b/lldb/source/Core/DynamicLoader.cpp index 31d277bc19681..563a81fb8239b 100644 --- a/lldb/source/Core/DynamicLoader.cpp +++ b/lldb/source/Core/DynamicLoader.cpp @@ -176,13 +176,17 @@ ModuleSP DynamicLoader::LoadModuleAtAddress(const FileSpec &file, addr_t link_map_addr, addr_t base_addr, bool base_addr_is_offset) { - if (ModuleSP module_sp = FindModuleViaTarget(file)) { + ModuleSP module_sp = FindModuleViaTarget(file); + // We have a core file, try to load the image from memory if we didn't find + // the module. + if (!module_sp && !m_process->IsLiveDebugSession()) { + module_sp = m_process->ReadModuleFromMemory(file, base_addr); + m_process->GetTarget().GetImages().AppendIfNeeded(module_sp, false); + } + if (module_sp) UpdateLoadedSections(module_sp, link_map_addr, base_addr, base_addr_is_offset); - return module_sp; - } - - return nullptr; + return module_sp; } static ModuleSP ReadUnnamedMemoryModule(Process *process, addr_t addr, diff --git a/lldb/source/Plugins/DynamicLoader/POSIX-DYLD/DynamicLoaderPOSIXDYLD.cpp b/lldb/source/Plugins/DynamicLoader/POSIX-DYLD/DynamicLoaderPOSIXDYLD.cpp index 3605e7b2c6960..1a0ae9378fd80 100644 --- a/lldb/source/Plugins/DynamicLoader/POSIX-DYLD/DynamicLoaderPOSIXDYLD.cpp +++ b/lldb/source/Plugins/DynamicLoader/POSIX-DYLD/DynamicLoaderPOSIXDYLD.cpp @@ -27,6 +27,7 @@ #include "lldb/Utility/Log.h" #include "lldb/Utility/ProcessInfo.h" #include "llvm/Support/ThreadPool.h" +#include "Plugins/ObjectFile/Placeholder/ObjectFilePlaceholder.h" #include <memory> #include <optional> @@ -698,22 +699,33 @@ void DynamicLoaderPOSIXDYLD::LoadAllCurrentModules() { ModuleSP executable = GetTargetExecutable(); SetLoadedModule(executable, m_rendezvous.GetLinkMapAddress()); + Target &target = m_process->GetTarget(); std::vector<FileSpec> module_names; for (I = m_rendezvous.begin(), E = m_rendezvous.end(); I != E; ++I) module_names.push_back(I->file_spec); m_process->PrefetchModuleSpecs( - module_names, m_process->GetTarget().GetArchitecture().GetTriple()); + module_names, target.GetArchitecture().GetTriple()); - auto load_module_fn = [this, &module_list, + auto load_module_fn = [this, &module_list, &target, &log](const DYLDRendezvous::SOEntry &so_entry) { ModuleSP module_sp = LoadModuleAtAddress( so_entry.file_spec, so_entry.link_addr, so_entry.base_addr, true); + if (!module_sp && !m_process->IsLiveDebugSession()) { + ModuleSpec module_spec(so_entry.file_spec, target.GetArchitecture()); + if (UUID uuid = m_process->FindModuleUUID(so_entry.file_spec.GetPath())) + module_spec.GetUUID() = uuid; + module_sp = Module::CreateModuleFromObjectFile<ObjectFilePlaceholder>( + module_spec, so_entry.base_addr, 512); + bool load_addr_changed = false; + target.GetImages().Append(module_sp, false); + module_sp->SetLoadAddress(target, so_entry.base_addr, + false, load_addr_changed); + } if (module_sp.get()) { LLDB_LOG(log, "LoadAllCurrentModules loading module: {0}", so_entry.file_spec.GetFilename()); module_list.Append(module_sp); } else { - Log *log = GetLog(LLDBLog::DynamicLoader); LLDB_LOGF( log, "DynamicLoaderPOSIXDYLD::%s failed loading module %s at 0x%" PRIx64, diff --git a/lldb/source/Plugins/Process/elf-core/ProcessElfCore.cpp b/lldb/source/Plugins/Process/elf-core/ProcessElfCore.cpp index f8e33eac614a4..5e4c67af059db 100644 --- a/lldb/source/Plugins/Process/elf-core/ProcessElfCore.cpp +++ b/lldb/source/Plugins/Process/elf-core/ProcessElfCore.cpp @@ -259,7 +259,7 @@ Status ProcessElfCore::DoLoadCore() { lldb::ModuleSP exe_module_sp = GetTarget().GetExecutableModule(); if (!exe_module_sp) { if (!m_nt_file_entries.empty()) { - llvm::StringRef executable_path = GetMainExecutablePath(); + std::string executable_path = GetMainExecutablePath(); ModuleSpec exe_module_spec; exe_module_spec.GetArchitecture() = arch; exe_module_spec.GetUUID() = FindModuleUUID(executable_path); @@ -268,6 +268,24 @@ Status ProcessElfCore::DoLoadCore() { if (exe_module_spec.GetFileSpec()) { exe_module_sp = GetTarget().GetOrCreateModule(exe_module_spec, true /* notify */); + if (!exe_module_sp) { + // Create an ELF file from memory for the main executable. The dynamic + // loader requires the main executable so that it can extract the + // DT_DEBUG key/value pair from the dynamic section and get the list + // of shared libraries. + std::optional<lldb::addr_t> exe_header_addr; + + // We need to find its load address + for (const NT_FILE_Entry &file_entry : m_nt_file_entries) { + if (file_entry.path == executable_path) { + exe_header_addr = file_entry.start; + break; + } + } + if (exe_header_addr.has_value()) + exe_module_sp = ReadModuleFromMemory(exe_module_spec.GetFileSpec(), + *exe_header_addr); + } if (exe_module_sp) GetTarget().SetExecutableModule(exe_module_sp, eLoadDependentsNo); } @@ -293,12 +311,23 @@ void ProcessElfCore::UpdateBuildIdForNTFileEntries() { } } -llvm::StringRef ProcessElfCore::GetMainExecutablePath() { +std::string ProcessElfCore::GetMainExecutablePath() { + // Always try to read the program name from core file memory first via the + // AUXV_AT_EXECFN entry. This value is the address of a null terminated C + // string that contains the program path. + AuxVector aux_vector(m_auxv); + std::string execfn_str; + if (auto execfn = aux_vector.GetAuxValue(AuxVector::AUXV_AT_EXECFN)) { + Status error; + if (ReadCStringFromMemory(*execfn, execfn_str, error)) + return execfn_str; + } + if (m_nt_file_entries.empty()) - return ""; + return {}; // The first entry in the NT_FILE might be our executable - llvm::StringRef executable_path = m_nt_file_entries[0].path; + std::string executable_path = m_nt_file_entries[0].path; // Prefer the NT_FILE entry matching m_executable_name as main executable. for (const NT_FILE_Entry &file_entry : m_nt_file_entries) if (llvm::StringRef(file_entry.path).ends_with("/" + m_executable_name)) { diff --git a/lldb/source/Plugins/Process/elf-core/ProcessElfCore.h b/lldb/source/Plugins/Process/elf-core/ProcessElfCore.h index 576c6858477a6..7eda33be8634c 100644 --- a/lldb/source/Plugins/Process/elf-core/ProcessElfCore.h +++ b/lldb/source/Plugins/Process/elf-core/ProcessElfCore.h @@ -168,8 +168,8 @@ class ProcessElfCore : public lldb_private::PostMortemProcess { lldb_private::UUID FindModuleUUID(const llvm::StringRef path) override; - // Returns the main executable path - llvm::StringRef GetMainExecutablePath(); + // Returns the main executable path. + std::string GetMainExecutablePath(); // Returns the value of certain type of note of a given start address lldb_private::UUID FindBuidIdInCoreMemory(lldb::addr_t address); diff --git a/lldb/test/API/functionalities/postmortem/elf-core/TestLinuxCore.py b/lldb/test/API/functionalities/postmortem/elf-core/TestLinuxCore.py index e9403b56ae195..84c20f4c5a4e1 100644 --- a/lldb/test/API/functionalities/postmortem/elf-core/TestLinuxCore.py +++ b/lldb/test/API/functionalities/postmortem/elf-core/TestLinuxCore.py @@ -1042,6 +1042,74 @@ def test_read_only_cstring(self): cstr = var.GetSummary() self.assertEqual(cstr, '"_start"') + @skipIfLLVMTargetMissing("X86") + @skipIfWindows + def test_linux_no_exe(self): + """ + Test that we are able to get the shared library list when loading a + linux core file without an executable. This tests LLDB's ability to + create memory object files when the ELF header is available for the + binary in the shared library list, and to create place holder object + files for any files we weren't able to locate or load from memory. It + also tests the dynamic loader's ability to find the list of shared + libraries from the PT_DYNAMIC section's DT_DEBUG entry. The core file + used in this test has the ELF header for the main executable "elf-crash" + and for "/lib64/libm.so.6". This test will verify that all shared + libraries are available. The "image list" output should look like: + + (lldb) image list + [ 0] 7BCC1101 0x000055bb04288000 /data/users/gclayton/args/elf-crash (0x000055bb04288000) + [ 1] 0x00007f27db200000 /lib64/libstdc++.so.6 + [ 2] AF275675-4671-8B49-24C8-A9A657D74115-C80DEE65 0x00007f27db51b000 /lib64/libm.so.6 (0x00007f27db51b000) + [ 3] 0x00007f27db4fe000 /lib64/libgcc_s.so.1 + [ 4] 0x00007f27dae00000 /lib64/libc.so.6 + [ 5] 0x00007f27db606000 /lib64/ld-linux-x86-64.so.2 + """ + target = self.dbg.CreateTarget(None) + process = target.LoadCore("linux-x86_64-no-exe.core") + self.assertTrue(process, PROCESS_IS_VALID) + num_modules = target.GetNumModules() + self.assertEqual(num_modules, 6) + + m = target.module["/data/users/gclayton/args/elf-crash"] + self.assertTrue(m.IsValid()) + self.assertEqual(m.GetObjectFileHeaderAddress().GetLoadAddress(target), + 0x000055bb04288000) + self.assertEqual(m.GetUUIDString(), "7BCC1101") + + m = target.module["/lib64/libstdc++.so.6"] + self.assertTrue(m.IsValid()) + self.assertEqual(m.GetObjectFileHeaderAddress().GetLoadAddress(target), + 0x00007f27db200000) + self.assertEqual(m.GetUUIDString(), None) + + m = target.module["/lib64/libm.so.6"] + self.assertTrue(m.IsValid()) + self.assertEqual(m.GetObjectFileHeaderAddress().GetLoadAddress(target), + 0x00007f27db51b000) + self.assertEqual(m.GetUUIDString(), + "AF275675-4671-8B49-24C8-A9A657D74115-C80DEE65") + + m = target.module["/lib64/libgcc_s.so.1"] + self.assertTrue(m.IsValid()) + self.assertEqual(m.GetObjectFileHeaderAddress().GetLoadAddress(target), + 0x00007f27db4fe000) + self.assertEqual(m.GetUUIDString(), None) + + m = target.module["/lib64/libc.so.6"] + self.assertTrue(m.IsValid()) + self.assertEqual(m.GetObjectFileHeaderAddress().GetLoadAddress(target), + 0x00007f27dae00000) + self.assertEqual(m.GetUUIDString(), None) + + m = target.module["/lib64/ld-linux-x86-64.so.2"] + self.assertTrue(m.IsValid()) + self.assertEqual(m.GetObjectFileHeaderAddress().GetLoadAddress(target), + 0x00007f27db606000) + self.assertEqual(m.GetUUIDString(), None) + + self.dbg.DeleteTarget(target) + def check_memory_regions(self, process, region_count): region_list = process.GetMemoryRegions() self.assertEqual(region_list.GetSize(), region_count) diff --git a/lldb/test/API/functionalities/postmortem/elf-core/linux-x86_64-no-exe.core b/lldb/test/API/functionalities/postmortem/elf-core/linux-x86_64-no-exe.core new file mode 100644 index 0000000000000000000000000000000000000000..74e84b06310331130b7023f4245332ba7cb6b058 GIT binary patch literal 225280 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 z�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 literal 0 HcmV?d00001 >From 46ea6cdf32787883f3bc3f6c3741a024ef8c7e6c Mon Sep 17 00:00:00 2001 From: Greg Clayton <[email protected]> Date: Thu, 22 Jan 2026 09:59:58 -0800 Subject: [PATCH 2/2] Run clang format. --- .../POSIX-DYLD/DynamicLoaderPOSIXDYLD.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lldb/source/Plugins/DynamicLoader/POSIX-DYLD/DynamicLoaderPOSIXDYLD.cpp b/lldb/source/Plugins/DynamicLoader/POSIX-DYLD/DynamicLoaderPOSIXDYLD.cpp index 1a0ae9378fd80..8157210f90ce6 100644 --- a/lldb/source/Plugins/DynamicLoader/POSIX-DYLD/DynamicLoaderPOSIXDYLD.cpp +++ b/lldb/source/Plugins/DynamicLoader/POSIX-DYLD/DynamicLoaderPOSIXDYLD.cpp @@ -9,6 +9,7 @@ // Main header include #include "DynamicLoaderPOSIXDYLD.h" +#include "Plugins/ObjectFile/Placeholder/ObjectFilePlaceholder.h" #include "lldb/Breakpoint/BreakpointLocation.h" #include "lldb/Core/Debugger.h" #include "lldb/Core/Module.h" @@ -27,7 +28,6 @@ #include "lldb/Utility/Log.h" #include "lldb/Utility/ProcessInfo.h" #include "llvm/Support/ThreadPool.h" -#include "Plugins/ObjectFile/Placeholder/ObjectFilePlaceholder.h" #include <memory> #include <optional> @@ -703,8 +703,8 @@ void DynamicLoaderPOSIXDYLD::LoadAllCurrentModules() { std::vector<FileSpec> module_names; for (I = m_rendezvous.begin(), E = m_rendezvous.end(); I != E; ++I) module_names.push_back(I->file_spec); - m_process->PrefetchModuleSpecs( - module_names, target.GetArchitecture().GetTriple()); + m_process->PrefetchModuleSpecs(module_names, + target.GetArchitecture().GetTriple()); auto load_module_fn = [this, &module_list, &target, &log](const DYLDRendezvous::SOEntry &so_entry) { @@ -718,8 +718,8 @@ void DynamicLoaderPOSIXDYLD::LoadAllCurrentModules() { module_spec, so_entry.base_addr, 512); bool load_addr_changed = false; target.GetImages().Append(module_sp, false); - module_sp->SetLoadAddress(target, so_entry.base_addr, - false, load_addr_changed); + module_sp->SetLoadAddress(target, so_entry.base_addr, false, + load_addr_changed); } if (module_sp.get()) { LLDB_LOG(log, "LoadAllCurrentModules loading module: {0}", _______________________________________________ lldb-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
