]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
libstdc++: Suppress GDB output from new 'skip' commands [PR118260]
authorJonathan Wakely <jwakely@redhat.com>
Fri, 9 May 2025 10:39:39 +0000 (11:39 +0100)
committerJonathan Wakely <redi@gcc.gnu.org>
Mon, 12 May 2025 08:44:43 +0000 (09:44 +0100)
I added some gdb.execute('skip -rfu ...') commands to the Python hook
loaded with libstdc++.so but this makes GDB print output like:

Function(s) ^std::(move|forward|as_const|(__)?addressof) will be skipped when stepping.

This probably aren't interesting to users, so this change suppresses
that output by capturing the output into the gdb.execute return value
(which is then ignored). An exception is thrown if the gdb.execute
command fails, so this doesn't suppress any errors which might be
meaningful to users or libstdc++ developers.

libstdc++-v3/ChangeLog:

PR libstdc++/118260
* python/hook.in: Suppress output from gdb.execute calls to
register skips.

Reviewed-by: Tomasz KamiƄski <tkaminsk@redhat.com>
libstdc++-v3/python/hook.in

index d63909d2af4c6ce749a79ba55be773d33071cc36..74a097cd0a00db075c43cb0752d42c9027ac496c 100644 (file)
@@ -55,10 +55,14 @@ if gdb.current_objfile () is not None:
     if not dir_ in sys.path:
         sys.path.insert(0, dir_)
 
-    gdb.execute('skip -rfu ^std::(move|forward|as_const|(__)?addressof)')
-    gdb.execute('skip -rfu ^std::(shared|unique)_ptr<.*>::(get|operator)')
-    gdb.execute('skip -rfu ^std::(basic_string|vector|array|deque|(forward_)?list|(unordered_|flat_)?(multi)?(map|set)|span)<.*>::(c?r?(begin|end)|front|back|data|size|empty)')
-    gdb.execute('skip -rfu ^std::(basic_string|vector|array|deque|span)<.*>::operator.]')
+    gdb.execute('skip -rfu ^std::(move|forward|as_const|(__)?addressof)',
+                to_string=True)
+    gdb.execute('skip -rfu ^std::(shared|unique)_ptr<.*>::(get|operator)',
+                to_string=True)
+    gdb.execute('skip -rfu ^std::(basic_string|vector|array|deque|(forward_)?list|(unordered_|flat_)?(multi)?(map|set)|span)<.*>::(c?r?(begin|end)|front|back|data|size|empty)',
+                to_string=True)
+    gdb.execute('skip -rfu ^std::(basic_string|vector|array|deque|span)<.*>::operator.]',
+                to_string=True)
 
 # Call a function as a plain import would not execute body of the included file
 # on repeated reloads of this object file.