diff --git a/lldb/source/Plugins/DynamicLoader/ModuleList-DYLD/DynamicLoaderDumpWithModuleList.cpp b/lldb/source/Plugins/DynamicLoader/ModuleList-DYLD/DynamicLoaderDumpWithModuleList.cpp index 733d3df8b3ca8bc..909f6b89cc2de19 100644 --- a/lldb/source/Plugins/DynamicLoader/ModuleList-DYLD/DynamicLoaderDumpWithModuleList.cpp +++ b/lldb/source/Plugins/DynamicLoader/ModuleList-DYLD/DynamicLoaderDumpWithModuleList.cpp @@ -16,6 +16,7 @@ #include "lldb/Utility/Log.h" #include "Plugins/ObjectFile/Placeholder/ObjectFilePlaceholder.h" +#include using namespace lldb; using namespace lldb_private; @@ -155,14 +156,28 @@ void DynamicLoaderDumpWithModuleList::LoadAllModules( addr_t base_addr, module_size; std::string name; if (!mod_info.get_base(base_addr) || !mod_info.get_name(name) || - !mod_info.get_size(module_size)) + !mod_info.get_size(module_size) || !ShouldLoadModule(name)) continue; - callback(name, base_addr, module_size); + callback(SanitizeName(name), base_addr, module_size); } } } +bool DynamicLoaderDumpWithModuleList::ShouldLoadModule( + const std::string &module_name) { + // Use a regular expression to match /dev/* path + static const std::regex pattern("^/dev/.*$"); + return !std::regex_match(module_name, pattern); +} + +std::string +DynamicLoaderDumpWithModuleList::SanitizeName(const std::string &input) { + // Use a regular expression to match and remove the parenthesized substring + static const std::regex pattern("\\s*\\(\\S+\\)\\s*$"); + return std::regex_replace(input, pattern, ""); +} + void DynamicLoaderDumpWithModuleList::DidAttach() { Log *log = GetLog(LLDBLog::DynamicLoader); LLDB_LOGF(log, "DynamicLoaderDumpWithModuleList::%s() pid %" PRIu64, diff --git a/lldb/source/Plugins/DynamicLoader/ModuleList-DYLD/DynamicLoaderDumpWithModuleList.h b/lldb/source/Plugins/DynamicLoader/ModuleList-DYLD/DynamicLoaderDumpWithModuleList.h index 31a2c897dbd4648..a19d2dbd4ded7ab 100644 --- a/lldb/source/Plugins/DynamicLoader/ModuleList-DYLD/DynamicLoaderDumpWithModuleList.h +++ b/lldb/source/Plugins/DynamicLoader/ModuleList-DYLD/DynamicLoaderDumpWithModuleList.h @@ -77,6 +77,10 @@ class DynamicLoaderDumpWithModuleList : public lldb_private::DynamicLoader { LoadModuleCallback; void LoadAllModules(LoadModuleCallback callback); + bool ShouldLoadModule(const std::string &module_name); + + std::string SanitizeName(const std::string &input); + std::optional GetModuleInfo(lldb::addr_t module_base_addr);