Mercurial > hg > CbC > CbC_gcc
diff gcc/gdbinit.in @ 145:1830386684a0
gcc-9.2.0
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 11:34:05 +0900 |
parents | 84e7813d76e9 |
children |
line wrap: on
line diff
--- a/gcc/gdbinit.in Thu Oct 25 07:37:49 2018 +0900 +++ b/gcc/gdbinit.in Thu Feb 13 11:34:05 2020 +0900 @@ -1,4 +1,4 @@ -# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# Copyright (C) 2001-2020 Free Software Foundation, Inc. # # This file is part of GCC. # @@ -16,149 +16,220 @@ # along with GCC; see the file COPYING3. If not see # <http://www.gnu.org/licenses/>. +define help-gcc-hooks +help help-gcc-hooks +end + +document help-gcc-hooks +GCC gdbinit file introduces several debugging shorthands: + + pr [rtx], prl [rtx], prc [rtx], pi [rtx_insn], + pt [tree], pct [tree], ptc [tree], trt [tree], + pgs [tree], pge [tree], pdn [tree], ptn [tree], + pgg [gimple], pgq [gimple_seq], + pmz [mpz_t], + pdd [dw_die_ref], + pbm [bitmap], + pel [location_t], + pp, pbs, pcfun + +They are generally implemented by calling a function that prints to stderr, +and therefore will not work when the compiler is not executing. + +Most shorthands accept an optional argument. When it is not supplied, +they use value in GDB register $, i.e. the last printed value. +end + +define pp +eval "set $debug_arg = $%s", $argc ? "arg0" : "" +call debug ($debug_arg) +end + +document pp +GCC hook: pp [any] +Print a representation of any GCC data structure for which an instance of +overloaded function 'debug' is available. +See also 'help-gcc-hooks'. +end + define pr -set debug_rtx ($) +eval "set $debug_arg = $%s", $argc ? "arg0" : "" +call debug_rtx ($debug_arg) end document pr -Print the full structure of the rtx that is $. -Works only when an inferior is executing. +GCC hook: pr [rtx] +Print the full structure of given rtx. +See also 'help-gcc-hooks'. end define prl -set debug_rtx_list ($, debug_rtx_count) +eval "set $debug_arg = $%s", $argc ? "arg0" : "" +call debug_rtx_list ($debug_arg, debug_rtx_count) end document prl -Print the full structure of all rtx insns beginning at $. -Works only when an inferior is executing. +GCC hook: prl [rtx] +Print the full structure of all rtx insns beginning at given rtx. Uses variable debug_rtx_count to control number of insns printed: - debug_rtx_count > 0: print from $ on. - debug_rtx_count < 0: print a window around $. + debug_rtx_count > 0: print from given rtx on. + debug_rtx_count < 0: print a window around given rtx. There is also debug_rtx_find (rtx, uid) that will scan a list for UID and print it using debug_rtx_list. Usage example: set $foo=debug_rtx_find(first, 42) end define pt -set debug_tree ($) +eval "set $debug_arg = $%s", $argc ? "arg0" : "" +call debug_tree ($debug_arg) end document pt -Print the full structure of the tree that is $. -Works only when an inferior is executing. +GCC hook: pt [tree] +Print the full structure of given tree. +See also 'help-gcc-hooks'. end define pct -set debug_c_tree ($) +eval "set $debug_arg = $%s", $argc ? "arg0" : "" +call debug_c_tree ($debug_arg) end document pct -Print the tree that is $ in C syntax. -Works only when an inferior is executing. +GCC hook: pct [tree] +Print given tree in C syntax. +See also 'help-gcc-hooks'. end define pgg -set debug_gimple_stmt ($) +eval "set $debug_arg = $%s", $argc ? "arg0" : "" +call debug_gimple_stmt ($debug_arg) end document pgg -Print the Gimple statement that is $ in C syntax. -Works only when an inferior is executing. +GCC hook: pgg [gimple] +Print given GIMPLE statement in C syntax. +See also 'help-gcc-hooks'. end define pgq -set debug_gimple_seq ($) +eval "set $debug_arg = $%s", $argc ? "arg0" : "" +call debug_gimple_seq ($debug_arg) end document pgq -Print the Gimple sequence that is $ in C syntax. -Works only when an inferior is executing. +GCC hook: pgq [gimple_seq] +Print given GIMPLE sequence in C syntax. +See also 'help-gcc-hooks'. end define pgs -set debug_generic_stmt ($) +eval "set $debug_arg = $%s", $argc ? "arg0" : "" +call debug_generic_stmt ($debug_arg) end document pgs -Print the statement that is $ in C syntax. -Works only when an inferior is executing. +GCC hook: pgq [tree] +Print given GENERIC statement in C syntax. +See also 'help-gcc-hooks'. end define pge -set debug_generic_expr ($) +eval "set $debug_arg = $%s", $argc ? "arg0" : "" +call debug_generic_expr ($debug_arg) end document pge -Print the expression that is $ in C syntax. -Works only when an inferior is executing. +GCC hook: pge [tree] +Print given GENERIC expression in C syntax. +See also 'help-gcc-hooks'. end define pmz -set mpz_out_str(stderr, 10, $) +eval "set $debug_arg = $%s", $argc ? "arg0" : "" +call mpz_out_str(stderr, 10, $debug_arg) end document pmz -Print the mpz value that is $ -Works only when an inferior is executing. +GCC hook: pmz [mpz_t] +Print given mpz value. +See also 'help-gcc-hooks'. end define ptc -output (enum tree_code) $.common.code +eval "set $debug_arg = $%s", $argc ? "arg0" : "" +output (enum tree_code) $debug_arg.base.code echo \n end document ptc -Print the tree-code of the tree node that is $. +GCC hook: ptc [tree] +Print the tree-code of given tree node. +See also 'help-gcc-hooks'. end define pdn -output $.decl_minimal.name->identifier.id.str +eval "set $debug_arg = $%s", $argc ? "arg0" : "" +output $debug_arg.decl_minimal.name->identifier.id.str echo \n end document pdn -Print the name of the decl-node that is $. +GCC hook: pdn [tree] +Print the name of given decl-node. +See also 'help-gcc-hooks'. end define ptn -output $.type.name->decl_minimal.name->identifier.id.str +eval "set $debug_arg = $%s", $argc ? "arg0" : "" +output $debug_arg.type.name->decl_minimal.name->identifier.id.str echo \n end document ptn -Print the name of the type-node that is $. +GCC hook: ptn [tree] +Print the name of given type-node. +See also 'help-gcc-hooks'. end define pdd -set debug_dwarf_die ($) +eval "set $debug_arg = $%s", $argc ? "arg0" : "" +call debug_dwarf_die ($debug_arg) end document pdd -Print the dw_die_ref that is in $. +GCC hook: pdd [dw_die_ref] +Print given dw_die_ref. +See also 'help-gcc-hooks'. end define prc -output (enum rtx_code) $.code +eval "set $debug_arg = $%s", $argc ? "arg0" : "" +output (enum rtx_code) $debug_arg.code echo \ ( -output $.mode +output $debug_arg.mode echo )\n end document prc -Print the rtx-code and machine mode of the rtx that is $. +GCC hook: prc [rtx] +Print the rtx-code and machine mode of given rtx. +See also 'help-gcc-hooks'. end define pi -print $.u.fld[0].rt_rtx@7 +eval "set $debug_arg = $%s", $argc ? "arg0" : "" +print $debug_arg.u.fld[0].rt_rtx@7 end document pi -Print the fields of an instruction that is $. +GCC hook: pi [rtx_insn] +Print the fields of given RTL instruction. +See also 'help-gcc-hooks'. end define pbs -set print_binding_stack () +call print_binding_stack () end document pbs @@ -166,29 +237,27 @@ including the global binding level. end -define pbb -set debug ($) -end - -document pbb -Dump the basic block that is in $, including rtx. -end - define pbm -set bitmap_print (stderr, $, "", "\n") +eval "set $debug_arg = $%s", $argc ? "arg0" : "" +call bitmap_print (stderr, $debug_arg, "", "\n") end document pbm -Dump the bitmap that is in $ as a comma-separated list of numbers. +GCC hook: pbm [bitmap] +Dump given bitmap as a comma-separated list of numbers. +See also 'help-gcc-hooks'. end define pel -output expand_location ($) +eval "set $debug_arg = $%s", $argc ? "arg0" : "" +output expand_location ($debug_arg) echo \n end document pel -Print expanded location of $. +GCC hook: pel [location_t] +Print given location. +See also 'help-gcc-hooks'. end define pcfun @@ -200,6 +269,17 @@ Print current function. end +define trt +eval "set $debug_arg = $%s", $argc ? "arg0" : "" +print ($debug_arg.typed.type) +end + +document trt +GCC hook: trt [tree] +Print TREE_TYPE of given tree node. +See also 'help-gcc-hooks'. +end + define break-on-diagnostic break diagnostic_show_locus end @@ -210,6 +290,26 @@ command-line options). end +define break-on-saved-diagnostic +break ana::diagnostic_manager::add_diagnostic +end + +document break-on-saved-diagnostic +Put a breakpoint on ana::diagnostic_manager::add_diagnostic, called within +the analyzer whenever a diagnostic is saved for later de-duplication and +possible emission. +end + +define reload-gdbhooks +python import imp; imp.reload(gdbhooks) +end + +document reload-gdbhooks +Load the gdbhooks.py module again in order to pick up any changes made to it. +end + +alias rh = reload-gdbhooks + # Define some macros helpful to gdb when it is expanding macros. macro define __FILE__ "gdb" macro define __LINE__ 1 @@ -218,6 +318,11 @@ macro define input_line expand_location(input_location).line macro define input_filename expand_location(input_location).file +# Remember previous pagination status and turn it off, so that +# the messages for skip commands don't require pagination. +python __gcc_prev_pagination=gdb.parameter("pagination") +set pagination off + # Gracefully handle aborts in functions used from gdb. set unwindonsignal on @@ -275,3 +380,6 @@ skip INSN_LOCATION skip INSN_HAS_LOCATION skip JUMP_LABEL_AS_INSN + +# Restore pagination to the previous state. +python if __gcc_prev_pagination: gdb.execute("set pagination on")