aboutsummaryrefslogtreecommitdiff
path: root/gcc/gdbhooks.py
diff options
context:
space:
mode:
authorAlex Coplan <alex.coplan@arm.com>2024-08-05 08:45:29 +0100
committerAlex Coplan <alex.coplan@arm.com>2024-08-05 08:45:29 +0100
commit08cc516a8cfe553064f84a86be4c30f05a614342 (patch)
tree8f4cdef64d4fca72aca3adc284ed13b06fc3c693 /gcc/gdbhooks.py
parent1a5734135d265a7b363ead9f821676a2a358969b (diff)
downloadgcc-08cc516a8cfe553064f84a86be4c30f05a614342.zip
gcc-08cc516a8cfe553064f84a86be4c30f05a614342.tar.gz
gcc-08cc516a8cfe553064f84a86be4c30f05a614342.tar.bz2
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.
Diffstat (limited to 'gcc/gdbhooks.py')
-rw-r--r--gcc/gdbhooks.py15
1 files changed, 14 insertions, 1 deletions
diff --git a/gcc/gdbhooks.py b/gcc/gdbhooks.py
index 92e3888..db8ce0d 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 <dot-file>.
+ """
+ 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()