From: Alex Coplan Date: Mon, 5 Aug 2024 07:45:29 +0000 (+0100) Subject: gdbhooks: Make dot viewer configurable X-Git-Tag: basepoints/gcc-16~6839 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=08cc516a8cfe553064f84a86be4c30f05a614342;p=thirdparty%2Fgcc.git gdbhooks: Make dot viewer configurable This adds a new GDB parameter 'gcc-dot-cmd' which allows the user to configure the command used to render the CFG within dot-fn. E.g. with this patch the user can change their dot viewer like so: (gdb) show gcc-dot-cmd The current value of 'gcc-dot-cmd' is "dot -Tx11". (gdb) set gcc-dot-cmd xdot (gdb) dot-fn # opens in xdot The second patch in this series adds a hook which users can define in their .gdbinit in order to be called when the GCC extensions have finished loading, thus allowing users to automatically configure gcc-dot-cmd as desired in their .gdbinit. gcc/ChangeLog: * gdbhooks.py (GCCDotCmd): New. (gcc_dot_cmd): New. Use it ... (DotFn.invoke): ... here. --- diff --git a/gcc/gdbhooks.py b/gcc/gdbhooks.py index 92e38880a70..db8ce0d071b 100644 --- a/gcc/gdbhooks.py +++ b/gcc/gdbhooks.py @@ -783,6 +783,18 @@ class DumpFn(gdb.Command): DumpFn() +class GCCDotCmd(gdb.Parameter): + """ + This parameter controls the command used to render dot files within + GCC's dot-fn command. It will be invoked as gcc-dot-cmd . + """ + def __init__(self): + super(GCCDotCmd, self).__init__('gcc-dot-cmd', + gdb.COMMAND_NONE, gdb.PARAM_STRING) + self.value = "dot -Tx11" + +gcc_dot_cmd = GCCDotCmd() + class DotFn(gdb.Command): """ A custom command to show a gimple/rtl function control flow graph. @@ -848,7 +860,8 @@ class DotFn(gdb.Command): return # Show graph in temp file - os.system("( dot -Tx11 \"%s\"; rm \"%s\" ) &" % (filename, filename)) + dot_cmd = gcc_dot_cmd.value + os.system("( %s \"%s\"; rm \"%s\" ) &" % (dot_cmd, filename, filename)) DotFn()