From a341d96add049e1ebc94e7350ff59e82b03043d2 Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Fri, 9 May 2025 11:39:39 +0100 Subject: [PATCH] libstdc++: Suppress GDB output from new 'skip' commands [PR118260] MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 (cherry picked from commit 31cbac3037b7811bd0df63f4a09aa981b250c4bf) --- libstdc++-v3/python/hook.in | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/libstdc++-v3/python/hook.in b/libstdc++-v3/python/hook.in index d63909d2af4c..74a097cd0a00 100644 --- a/libstdc++-v3/python/hook.in +++ b/libstdc++-v3/python/hook.in @@ -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. -- 2.47.2