https://gcc.gnu.org/g:ca948ee810949179aac598a14a714ec9550dd9c6
commit r16-5545-gca948ee810949179aac598a14a714ec9550dd9c6 Author: Jonathan Wakely <[email protected]> Date: Mon Nov 24 12:36:32 2025 +0000 libstdc++: Fix XMethods for debug mode [PR122821] The Python GDB XMethods were not matching the debug mode containers, because the is_specialization_of helper function matches std::(__\d::)? and so fails to match std::__debug::deque etc. This makes it match std::__debug:: as well as std:: and std::__8::. Since the regex already handles the versioned namespace with (__\d::)? we don't need to also include the _versioned_namespace variable explicitly. This means we now match std::(__\d::|__debug::)?name<.*> instead of matching std::(__\d::)?(__8::)?name<.*> which redundantly included two ways to match the __8 versioned namespace. libstdc++-v3/ChangeLog: PR libstdc++/122821 * python/libstdcxx/v6/xmethods.py (_versioned_namespace): Remove global variable. (is_specialization_of): Do not use _versioned_namespace. Add __debug:: to regex. Diff: --- libstdc++-v3/python/libstdcxx/v6/xmethods.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/libstdc++-v3/python/libstdcxx/v6/xmethods.py b/libstdc++-v3/python/libstdcxx/v6/xmethods.py index 109ca10956ab..30359c50b6f9 100644 --- a/libstdc++-v3/python/libstdcxx/v6/xmethods.py +++ b/libstdc++-v3/python/libstdcxx/v6/xmethods.py @@ -28,8 +28,6 @@ def get_bool_type(): def get_std_size_type(): return gdb.lookup_type('std::size_t') -_versioned_namespace = '__8::' - def is_specialization_of(x, template_name): """ Test whether a type is a specialization of the named class template. @@ -39,8 +37,7 @@ def is_specialization_of(x, template_name): """ if isinstance(x, gdb.Type): x = x.tag - template_name = '(%s)?%s' % (_versioned_namespace, template_name) - return re.match(r'^std::(__\d::)?%s<.*>$' % template_name, x) is not None + return re.match(r'^std::(__\d::|__debug::)?%s<.*>$' % template_name, x) is not None class LibStdCxxXMethod(gdb.xmethod.XMethod): def __init__(self, name, worker_class):
