blob: e16c3c8ef87256675c974f84309547f14fce13d0 [file] [log] [blame]
# Copyright (C) 2001-2019 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
# GCC is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3, or (at your option)
# any later version.
#
# GCC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
define pp
call debug ($)
end
document pp
Print a representation of the GCC data structure that is $.
Works only when an inferior is executing.
end
define pr
set debug_rtx ($)
end
document pr
Print the full structure of the rtx that is $.
Works only when an inferior is executing.
end
define prl
set debug_rtx_list ($, debug_rtx_count)
end
document prl
Print the full structure of all rtx insns beginning at $.
Works only when an inferior is executing.
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 $.
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 ($)
end
document pt
Print the full structure of the tree that is $.
Works only when an inferior is executing.
end
define pct
set debug_c_tree ($)
end
document pct
Print the tree that is $ in C syntax.
Works only when an inferior is executing.
end
define pgg
set debug_gimple_stmt ($)
end
document pgg
Print the Gimple statement that is $ in C syntax.
Works only when an inferior is executing.
end
define pgq
set debug_gimple_seq ($)
end
document pgq
Print the Gimple sequence that is $ in C syntax.
Works only when an inferior is executing.
end
define pgs
set debug_generic_stmt ($)
end
document pgs
Print the statement that is $ in C syntax.
Works only when an inferior is executing.
end
define pge
set debug_generic_expr ($)
end
document pge
Print the expression that is $ in C syntax.
Works only when an inferior is executing.
end
define pmz
set mpz_out_str(stderr, 10, $)
end
document pmz
Print the mpz value that is $
Works only when an inferior is executing.
end
define ptc
output (enum tree_code) $.common.code
echo \n
end
document ptc
Print the tree-code of the tree node that is $.
end
define pdn
output $.decl_minimal.name->identifier.id.str
echo \n
end
document pdn
Print the name of the decl-node that is $.
end
define ptn
output $.type.name->decl_minimal.name->identifier.id.str
echo \n
end
document ptn
Print the name of the type-node that is $.
end
define pdd
set debug_dwarf_die ($)
end
document pdd
Print the dw_die_ref that is in $.
end
define prc
output (enum rtx_code) $.code
echo \ (
output $.mode
echo )\n
end
document prc
Print the rtx-code and machine mode of the rtx that is $.
end
define pi
print $.u.fld[0].rt_rtx@7
end
document pi
Print the fields of an instruction that is $.
end
define pbs
set print_binding_stack ()
end
document pbs
In cc1plus, print the current binding stack, frame by frame, up to and
including the global binding level.
end
define pbm
set bitmap_print (stderr, $, "", "\n")
end
document pbm
Dump the bitmap that is in $ as a comma-separated list of numbers.
end
define pel
output expand_location ($)
echo \n
end
document pel
Print expanded location of $.
end
define pcfun
output debug_function (cfun ? cfun->decl : current_function_decl, 0)
echo \n
end
document pcfun
Print current function.
end
define break-on-diagnostic
break diagnostic_show_locus
end
document break-on-diagnostic
Put a breakpoint on diagnostic_show_locus, called whenever a diagnostic
is emitted (as opposed to those warnings that are suppressed by
command-line options).
end
# Define some macros helpful to gdb when it is expanding macros.
macro define __FILE__ "gdb"
macro define __LINE__ 1
macro define __FUNCTION__ "gdb"
macro define __null 0
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
# Put breakpoints at exit and fancy_abort in case abort is mapped
# to either fprintf/exit or fancy_abort.
b fancy_abort
# Put a breakpoint on internal_error to help with debugging ICEs.
b internal_error
set complaints 0
# Don't let abort actually run, as it will make
# stdio stop working and therefore the `pr' command above as well.
# Put this last because gcc does not reference it any more unless
# USE_SYSTEM_ABORT is defined, so gdb may complain and bail out.
b exit
b abort
# Disable strict type checking. This allows developers to (for example)
# make inferior calls without casting absolute address to a suitable
# pointer type.
set check type off
# Skip all inline functions in tree.h.
# These are used in accessor macros.
# Note that this is added at the end because older gdb versions
# do not understand the 'skip' command.
# See https://sourceware.org/gdb/current/onlinedocs/gdb/Skipping-Over-Functions-and-Files.html
skip file tree.h
# Also skip inline functions in is-a.h.
skip file is-a.h
# And line-map.h.
skip file line-map.h
# And timevar.h.
skip file timevar.h
# Likewise, skip various inline functions in rtl.h.
skip rtx_expr_list::next
skip rtx_expr_list::element
skip rtx_insn_list::next
skip rtx_insn_list::insn
skip rtx_sequence::len
skip rtx_sequence::element
skip rtx_sequence::insn
skip INSN_UID
skip PREV_INSN
skip SET_PREV_INSN
skip NEXT_INSN
skip SET_NEXT_INSN
skip BLOCK_FOR_INSN
skip PATTERN
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")