1# Copyright (C) 2001-2015 Free Software Foundation, Inc.
2#
3# This file is part of GCC.
4#
5# GCC is free software; you can redistribute it and/or modify
6# it under the terms of the GNU General Public License as published by
7# the Free Software Foundation; either version 3, or (at your option)
8# any later version.
9#
10# GCC is distributed in the hope that it will be useful,
11# but WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13# GNU General Public License for more details.
14#
15# You should have received a copy of the GNU General Public License
16# along with GCC; see the file COPYING3.  If not see
17# <http://www.gnu.org/licenses/>.
18
19define pr
20set debug_rtx ($)
21end
22
23document pr
24Print the full structure of the rtx that is $.
25Works only when an inferior is executing.
26end
27
28define prl
29set debug_rtx_list ($, debug_rtx_count)
30end
31
32document prl
33Print the full structure of all rtx insns beginning at $.
34Works only when an inferior is executing.
35Uses variable debug_rtx_count to control number of insns printed:
36  debug_rtx_count > 0: print from $ on.
37  debug_rtx_count < 0: print a window around $.
38
39There is also debug_rtx_find (rtx, uid) that will scan a list for UID and print
40it using debug_rtx_list. Usage example: set $foo=debug_rtx_find(first, 42)
41end
42
43define pt
44set debug_tree ($)
45end
46
47document pt
48Print the full structure of the tree that is $.
49Works only when an inferior is executing.
50end
51
52define pct
53set debug_c_tree ($)
54end
55
56document pct
57Print the tree that is $ in C syntax.
58Works only when an inferior is executing.
59end
60
61define pgg
62set debug_gimple_stmt ($)
63end
64
65document pgg
66Print the Gimple statement that is $ in C syntax.
67Works only when an inferior is executing.
68end
69
70define pgq
71set debug_gimple_seq ($)
72end
73
74document pgq
75Print the Gimple sequence that is $ in C syntax.
76Works only when an inferior is executing.
77end
78
79define pgs
80set debug_generic_stmt ($)
81end
82
83document pgs
84Print the statement that is $ in C syntax.
85Works only when an inferior is executing.
86end
87
88define pge
89set debug_generic_expr ($)
90end
91
92document pge
93Print the expression that is $ in C syntax.
94Works only when an inferior is executing.
95end
96
97define pmz
98set mpz_out_str(stderr, 10, $)
99end
100
101document pmz
102Print the mpz value that is $
103Works only when an inferior is executing.
104end
105
106define ptc
107output (enum tree_code) $.common.code
108echo \n
109end
110
111document ptc
112Print the tree-code of the tree node that is $.
113end
114
115define pdn
116output $.decl_minimal.name->identifier.id.str
117echo \n
118end
119
120document pdn
121Print the name of the decl-node that is $.
122end
123
124define ptn
125output $.type.name->decl_minimal.name->identifier.id.str
126echo \n
127end
128
129document ptn
130Print the name of the type-node that is $.
131end
132
133define pvt
134set debug_vec_tree ($)
135end
136
137document pvt
138Print the VEC(tree) that is in $.
139end
140
141define pdd
142set debug_dwarf_die ($)
143end
144
145document pdd
146Print the dw_die_ref that is in $.
147end
148
149define prc
150output (enum rtx_code) $.code
151echo \ (
152output $.mode
153echo )\n
154end
155
156document prc
157Print the rtx-code and machine mode of the rtx that is $.
158end
159
160define pi
161print $.u.fld[0].rt_rtx@7
162end
163
164document pi
165Print the fields of an instruction that is $.
166end
167
168define pbs
169set print_binding_stack ()
170end
171
172document pbs
173In cc1plus, print the current binding stack, frame by frame, up to and
174including the global binding level.
175end
176
177define pbb
178set debug ($)
179end
180
181document pbb
182Dump the basic block that is in $, including rtx.
183end
184
185define pbm
186set bitmap_print (stderr, $, "", "\n")
187end
188
189document pbm
190Dump the bitmap that is in $ as a comma-separated list of numbers.
191end
192
193define pel
194output expand_location ($)
195echo \n
196end
197
198document pel
199Print expanded location of $.
200end
201
202define pcfun
203output debug_function (cfun ? cfun->decl : current_function_decl, 0)
204echo \n
205end
206
207document pcfun
208Print current function.
209end
210
211# Define some macros helpful to gdb when it is expanding macros.
212macro define __FILE__ "gdb"
213macro define __LINE__ 1
214macro define __FUNCTION__ "gdb"
215macro define __null 0
216macro define input_line expand_location(input_location).line
217macro define input_filename expand_location(input_location).file
218
219# Gracefully handle aborts in functions used from gdb.
220set unwindonsignal on
221
222# Put breakpoints at exit and fancy_abort in case abort is mapped
223# to either fprintf/exit or fancy_abort.
224b fancy_abort
225
226# Put a breakpoint on internal_error to help with debugging ICEs.
227b internal_error
228
229set complaints 0
230# Don't let abort actually run, as it will make
231# stdio stop working and therefore the `pr' command above as well.
232# Put this last because gcc does not reference it any more unless
233# USE_SYSTEM_ABORT is defined, so gdb may complain and bail out.
234b exit
235b abort
236
237# Disable strict type checking.  This allows developers to (for example)
238# make inferior calls without casting absolute address to a suitable
239# pointer type.
240set check type off
241
242# Skip all inline functions in tree.h.
243# These are used in accessor macros.
244# Note that this is added at the end because older gdb versions
245# do not understand the 'skip' command.
246# See https://sourceware.org/gdb/current/onlinedocs/gdb/Skipping-Over-Functions-and-Files.html
247skip file tree.h
248
249# Likewise, skip various inline functions in rtl.h.
250skip rtx_expr_list::next
251skip rtx_expr_list::element
252skip rtx_insn_list::next
253skip rtx_insn_list::insn
254skip rtx_sequence::len
255skip rtx_sequence::element
256skip rtx_sequence::insn
257skip INSN_UID
258skip PREV_INSN
259skip SET_PREV_INSN
260skip NEXT_INSN
261skip SET_NEXT_INSN
262skip BLOCK_FOR_INSN
263skip PATTERN
264skip INSN_LOCATION
265skip INSN_HAS_LOCATION
266skip JUMP_LABEL_AS_INSN
267