https://github.com/kastiglione created https://github.com/llvm/llvm-project/pull/116452
First, `SRE_Pattern` does not exist on newer Python's, use `type(re.compile(''))` like other Python extensions do. The dynamic type is because some earlier versions of Python 3 do not have `re.Pattern`. Second, `SBModule` has a `file` property, not a `path` property. >From 5379412f53352acafd75575d8b54806050de535d Mon Sep 17 00:00:00 2001 From: Dave Lee <davelee....@gmail.com> Date: Fri, 15 Nov 2024 15:24:44 -0800 Subject: [PATCH] [lldb] Fix regex support in SBTarget.modules_access First, `SRE_Pattern` does not exist on newer Python's, use `type(re.compile(''))` like other Python extensions do. The dynamic type is because some earlier versions of Python 3 do not have `re.Pattern`. Second, `SBModule` has a `file` property, not a `path` property. --- lldb/bindings/interface/SBTargetExtensions.i | 4 ++-- .../API/lang/cpp/stl/TestStdCXXDisassembly.py | 15 ++++++--------- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/lldb/bindings/interface/SBTargetExtensions.i b/lldb/bindings/interface/SBTargetExtensions.i index d756a351a810ab..43125d8970615b 100644 --- a/lldb/bindings/interface/SBTargetExtensions.i +++ b/lldb/bindings/interface/SBTargetExtensions.i @@ -79,11 +79,11 @@ STRING_EXTENSION_LEVEL_OUTSIDE(SBTarget, lldb::eDescriptionLevelBrief) module = self.sbtarget.GetModuleAtIndex(idx) if module.uuid == key: return module - elif type(key) is re.SRE_Pattern: + elif isinstance(key, type(re.compile(''))): matching_modules = [] for idx in range(num_modules): module = self.sbtarget.GetModuleAtIndex(idx) - re_match = key.search(module.path.fullpath) + re_match = key.search(module.file.fullpath) if re_match: matching_modules.append(module) return matching_modules diff --git a/lldb/test/API/lang/cpp/stl/TestStdCXXDisassembly.py b/lldb/test/API/lang/cpp/stl/TestStdCXXDisassembly.py index 06f338b3ed1ded..bcf8735c7c3f98 100644 --- a/lldb/test/API/lang/cpp/stl/TestStdCXXDisassembly.py +++ b/lldb/test/API/lang/cpp/stl/TestStdCXXDisassembly.py @@ -3,6 +3,7 @@ """ import os +import re import lldb from lldbsuite.test.lldbtest import * import lldbsuite.test.lldbutil as lldbutil @@ -30,15 +31,11 @@ def test_stdcxx_disasm(self): self.runCmd("disassemble -n '%s'" % function.GetName()) lib_stdcxx = "FAILHORRIBLYHERE" - # Iterate through the available modules, looking for stdc++ library... - for i in range(target.GetNumModules()): - module = target.GetModuleAtIndex(i) - fs = module.GetFileSpec() - if fs.GetFilename().startswith("libstdc++") or fs.GetFilename().startswith( - "libc++" - ): - lib_stdcxx = str(fs) - break + # Find the stdc++ library... + stdlib_regex = re.compile(r"/lib(std)?c\+\+") + for module in target.module[stdlib_regex]: + lib_stdcxx = module.file.fullpath + break # At this point, lib_stdcxx is the full path to the stdc++ library and # module is the corresponding SBModule. _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits