[Lldb-commits] [lldb] [lldb] Fix regex support in SBTarget.modules_access (PR #116452)
Dave Lee via lldb-commits
lldb-commits at lists.llvm.org
Fri Nov 15 15:43:48 PST 2024
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.com at 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.
More information about the lldb-commits
mailing list