stack.c revision 1.8 1 1.1 christos /* Print and select stack frames for GDB, the GNU debugger.
2 1.1 christos
3 1.8 christos Copyright (C) 1986-2019 Free Software Foundation, Inc.
4 1.1 christos
5 1.1 christos This file is part of GDB.
6 1.1 christos
7 1.1 christos This program is free software; you can redistribute it and/or modify
8 1.1 christos it under the terms of the GNU General Public License as published by
9 1.1 christos the Free Software Foundation; either version 3 of the License, or
10 1.1 christos (at your option) any later version.
11 1.1 christos
12 1.1 christos This program is distributed in the hope that it will be useful,
13 1.1 christos but WITHOUT ANY WARRANTY; without even the implied warranty of
14 1.1 christos MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 1.1 christos GNU General Public License for more details.
16 1.1 christos
17 1.1 christos You should have received a copy of the GNU General Public License
18 1.1 christos along with this program. If not, see <http://www.gnu.org/licenses/>. */
19 1.1 christos
20 1.1 christos #include "defs.h"
21 1.1 christos #include "value.h"
22 1.1 christos #include "symtab.h"
23 1.1 christos #include "gdbtypes.h"
24 1.1 christos #include "expression.h"
25 1.1 christos #include "language.h"
26 1.1 christos #include "frame.h"
27 1.1 christos #include "gdbcmd.h"
28 1.1 christos #include "gdbcore.h"
29 1.1 christos #include "target.h"
30 1.1 christos #include "source.h"
31 1.1 christos #include "breakpoint.h"
32 1.1 christos #include "demangle.h"
33 1.1 christos #include "inferior.h"
34 1.1 christos #include "annotate.h"
35 1.1 christos #include "ui-out.h"
36 1.1 christos #include "block.h"
37 1.1 christos #include "stack.h"
38 1.1 christos #include "dictionary.h"
39 1.1 christos #include "reggroups.h"
40 1.1 christos #include "regcache.h"
41 1.1 christos #include "solib.h"
42 1.1 christos #include "valprint.h"
43 1.1 christos #include "gdbthread.h"
44 1.1 christos #include "cp-support.h"
45 1.1 christos #include "disasm.h"
46 1.1 christos #include "inline-frame.h"
47 1.1 christos #include "linespec.h"
48 1.1 christos #include "cli/cli-utils.h"
49 1.3 christos #include "objfiles.h"
50 1.1 christos
51 1.1 christos #include "symfile.h"
52 1.3 christos #include "extension.h"
53 1.8 christos #include "observable.h"
54 1.8 christos #include "common/def-vector.h"
55 1.1 christos
56 1.1 christos /* The possible choices of "set print frame-arguments", and the value
57 1.1 christos of this setting. */
58 1.1 christos
59 1.1 christos static const char *const print_frame_arguments_choices[] =
60 1.1 christos {"all", "scalars", "none", NULL};
61 1.1 christos static const char *print_frame_arguments = "scalars";
62 1.1 christos
63 1.1 christos /* If non-zero, don't invoke pretty-printers for frame arguments. */
64 1.1 christos static int print_raw_frame_arguments;
65 1.1 christos
66 1.1 christos /* The possible choices of "set print entry-values", and the value
67 1.1 christos of this setting. */
68 1.1 christos
69 1.1 christos const char print_entry_values_no[] = "no";
70 1.1 christos const char print_entry_values_only[] = "only";
71 1.1 christos const char print_entry_values_preferred[] = "preferred";
72 1.1 christos const char print_entry_values_if_needed[] = "if-needed";
73 1.1 christos const char print_entry_values_both[] = "both";
74 1.1 christos const char print_entry_values_compact[] = "compact";
75 1.1 christos const char print_entry_values_default[] = "default";
76 1.1 christos static const char *const print_entry_values_choices[] =
77 1.1 christos {
78 1.1 christos print_entry_values_no,
79 1.1 christos print_entry_values_only,
80 1.1 christos print_entry_values_preferred,
81 1.1 christos print_entry_values_if_needed,
82 1.1 christos print_entry_values_both,
83 1.1 christos print_entry_values_compact,
84 1.1 christos print_entry_values_default,
85 1.1 christos NULL
86 1.1 christos };
87 1.1 christos const char *print_entry_values = print_entry_values_default;
88 1.1 christos
89 1.1 christos /* Prototypes for local functions. */
90 1.1 christos
91 1.8 christos static void print_frame_local_vars (struct frame_info *frame,
92 1.8 christos bool quiet,
93 1.8 christos const char *regexp, const char *t_regexp,
94 1.8 christos int num_tabs, struct ui_file *stream);
95 1.1 christos
96 1.1 christos static void print_frame (struct frame_info *frame, int print_level,
97 1.1 christos enum print_what print_what, int print_args,
98 1.1 christos struct symtab_and_line sal);
99 1.1 christos
100 1.1 christos static void set_last_displayed_sal (int valid,
101 1.1 christos struct program_space *pspace,
102 1.1 christos CORE_ADDR addr,
103 1.1 christos struct symtab *symtab,
104 1.1 christos int line);
105 1.1 christos
106 1.8 christos static struct frame_info *find_frame_for_function (const char *);
107 1.8 christos static struct frame_info *find_frame_for_address (CORE_ADDR);
108 1.8 christos
109 1.1 christos /* Zero means do things normally; we are interacting directly with the
110 1.1 christos user. One means print the full filename and linenumber when a
111 1.1 christos frame is printed, and do so in a format emacs18/emacs19.22 can
112 1.1 christos parse. Two means print similar annotations, but in many more
113 1.1 christos cases and in a slightly different syntax. */
114 1.1 christos
115 1.1 christos int annotation_level = 0;
116 1.1 christos
117 1.1 christos /* These variables hold the last symtab and line we displayed to the user.
118 1.1 christos * This is where we insert a breakpoint or a skiplist entry by default. */
119 1.1 christos static int last_displayed_sal_valid = 0;
120 1.1 christos static struct program_space *last_displayed_pspace = 0;
121 1.1 christos static CORE_ADDR last_displayed_addr = 0;
122 1.1 christos static struct symtab *last_displayed_symtab = 0;
123 1.1 christos static int last_displayed_line = 0;
124 1.1 christos
125 1.1 christos
127 1.1 christos /* Return 1 if we should display the address in addition to the location,
128 1.1 christos because we are in the middle of a statement. */
129 1.1 christos
130 1.1 christos static int
131 1.1 christos frame_show_address (struct frame_info *frame,
132 1.1 christos struct symtab_and_line sal)
133 1.1 christos {
134 1.1 christos /* If there is a line number, but no PC, then there is no location
135 1.1 christos information associated with this sal. The only way that should
136 1.1 christos happen is for the call sites of inlined functions (SAL comes from
137 1.1 christos find_frame_sal). Otherwise, we would have some PC range if the
138 1.1 christos SAL came from a line table. */
139 1.1 christos if (sal.line != 0 && sal.pc == 0 && sal.end == 0)
140 1.1 christos {
141 1.8 christos if (get_next_frame (frame) == NULL)
142 1.1 christos gdb_assert (inline_skipped_frames (inferior_thread ()) > 0);
143 1.1 christos else
144 1.1 christos gdb_assert (get_frame_type (get_next_frame (frame)) == INLINE_FRAME);
145 1.1 christos return 0;
146 1.1 christos }
147 1.1 christos
148 1.1 christos return get_frame_pc (frame) != sal.pc;
149 1.1 christos }
150 1.6 christos
151 1.6 christos /* See frame.h. */
152 1.6 christos
153 1.6 christos void
154 1.6 christos print_stack_frame_to_uiout (struct ui_out *uiout, struct frame_info *frame,
155 1.6 christos int print_level, enum print_what print_what,
156 1.6 christos int set_current_sal)
157 1.7 christos {
158 1.6 christos scoped_restore save_uiout = make_scoped_restore (¤t_uiout, uiout);
159 1.6 christos
160 1.6 christos print_stack_frame (frame, print_level, print_what, set_current_sal);
161 1.6 christos }
162 1.6 christos
163 1.1 christos /* Show or print a stack frame FRAME briefly. The output is formatted
164 1.1 christos according to PRINT_LEVEL and PRINT_WHAT printing the frame's
165 1.1 christos relative level, function name, argument list, and file name and
166 1.1 christos line number. If the frame's PC is not at the beginning of the
167 1.1 christos source line, the actual PC is printed at the beginning. */
168 1.1 christos
169 1.1 christos void
170 1.1 christos print_stack_frame (struct frame_info *frame, int print_level,
171 1.1 christos enum print_what print_what,
172 1.1 christos int set_current_sal)
173 1.1 christos {
174 1.1 christos
175 1.7 christos /* For mi, alway print location and address. */
176 1.1 christos if (current_uiout->is_mi_like_p ())
177 1.1 christos print_what = LOC_AND_ADDRESS;
178 1.5 christos
179 1.1 christos TRY
180 1.1 christos {
181 1.1 christos print_frame_info (frame, print_level, print_what, 1 /* print_args */,
182 1.1 christos set_current_sal);
183 1.3 christos if (set_current_sal)
184 1.1 christos set_current_sal_from_frame (frame);
185 1.5 christos }
186 1.5 christos CATCH (e, RETURN_MASK_ERROR)
187 1.5 christos {
188 1.5 christos }
189 1.1 christos END_CATCH
190 1.1 christos }
191 1.1 christos
192 1.1 christos /* Print nameless arguments of frame FRAME on STREAM, where START is
193 1.1 christos the offset of the first nameless argument, and NUM is the number of
194 1.1 christos nameless arguments to print. FIRST is nonzero if this is the first
195 1.1 christos argument (not just the first nameless argument). */
196 1.1 christos
197 1.1 christos static void
198 1.1 christos print_frame_nameless_args (struct frame_info *frame, long start, int num,
199 1.1 christos int first, struct ui_file *stream)
200 1.1 christos {
201 1.1 christos struct gdbarch *gdbarch = get_frame_arch (frame);
202 1.1 christos enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
203 1.1 christos int i;
204 1.1 christos CORE_ADDR argsaddr;
205 1.1 christos long arg_value;
206 1.1 christos
207 1.1 christos for (i = 0; i < num; i++)
208 1.1 christos {
209 1.1 christos QUIT;
210 1.1 christos argsaddr = get_frame_args_address (frame);
211 1.1 christos if (!argsaddr)
212 1.1 christos return;
213 1.1 christos arg_value = read_memory_integer (argsaddr + start,
214 1.1 christos sizeof (int), byte_order);
215 1.1 christos if (!first)
216 1.1 christos fprintf_filtered (stream, ", ");
217 1.1 christos fprintf_filtered (stream, "%ld", arg_value);
218 1.1 christos first = 0;
219 1.1 christos start += sizeof (int);
220 1.1 christos }
221 1.1 christos }
222 1.1 christos
223 1.1 christos /* Print single argument of inferior function. ARG must be already
224 1.1 christos read in.
225 1.1 christos
226 1.1 christos Errors are printed as if they would be the parameter value. Use zeroed ARG
227 1.1 christos iff it should not be printed accoring to user settings. */
228 1.1 christos
229 1.1 christos static void
230 1.1 christos print_frame_arg (const struct frame_arg *arg)
231 1.1 christos {
232 1.5 christos struct ui_out *uiout = current_uiout;
233 1.1 christos const char *error_message = NULL;
234 1.7 christos
235 1.1 christos string_file stb;
236 1.1 christos
237 1.1 christos gdb_assert (!arg->val || !arg->error);
238 1.1 christos gdb_assert (arg->entry_kind == print_entry_values_no
239 1.7 christos || arg->entry_kind == print_entry_values_only
240 1.1 christos || (!uiout->is_mi_like_p ()
241 1.1 christos && arg->entry_kind == print_entry_values_compact));
242 1.8 christos
243 1.8 christos annotate_arg_emitter arg_emitter;
244 1.7 christos ui_out_emit_tuple tuple_emitter (uiout, NULL);
245 1.1 christos fprintf_symbol_filtered (&stb, SYMBOL_PRINT_NAME (arg->sym),
246 1.1 christos SYMBOL_LANGUAGE (arg->sym), DMGL_PARAMS | DMGL_ANSI);
247 1.1 christos if (arg->entry_kind == print_entry_values_compact)
248 1.1 christos {
249 1.1 christos /* It is OK to provide invalid MI-like stream as with
250 1.7 christos PRINT_ENTRY_VALUE_COMPACT we never use MI. */
251 1.1 christos stb.puts ("=");
252 1.7 christos
253 1.1 christos fprintf_symbol_filtered (&stb, SYMBOL_PRINT_NAME (arg->sym),
254 1.1 christos SYMBOL_LANGUAGE (arg->sym),
255 1.1 christos DMGL_PARAMS | DMGL_ANSI);
256 1.1 christos }
257 1.1 christos if (arg->entry_kind == print_entry_values_only
258 1.7 christos || arg->entry_kind == print_entry_values_compact)
259 1.8 christos stb.puts ("@entry");
260 1.1 christos uiout->field_stream ("name", stb, ui_out_style_kind::VARIABLE);
261 1.7 christos annotate_arg_name_end ();
262 1.1 christos uiout->text ("=");
263 1.1 christos
264 1.7 christos if (!arg->val && !arg->error)
265 1.1 christos uiout->text ("...");
266 1.1 christos else
267 1.1 christos {
268 1.5 christos if (arg->error)
269 1.1 christos error_message = arg->error;
270 1.1 christos else
271 1.5 christos {
272 1.1 christos TRY
273 1.1 christos {
274 1.1 christos const struct language_defn *language;
275 1.1 christos struct value_print_options opts;
276 1.1 christos
277 1.1 christos /* Avoid value_print because it will deref ref parameters. We
278 1.1 christos just want to print their addresses. Print ??? for args whose
279 1.1 christos address we do not know. We pass 2 as "recurse" to val_print
280 1.1 christos because our standard indentation here is 4 spaces, and
281 1.1 christos val_print indents 2 for each recurse. */
282 1.1 christos
283 1.1 christos annotate_arg_value (value_type (arg->val));
284 1.1 christos
285 1.1 christos /* Use the appropriate language to display our symbol, unless the
286 1.1 christos user forced the language to a specific language. */
287 1.1 christos if (language_mode == language_mode_auto)
288 1.1 christos language = language_def (SYMBOL_LANGUAGE (arg->sym));
289 1.1 christos else
290 1.1 christos language = current_language;
291 1.1 christos
292 1.1 christos get_no_prettyformat_print_options (&opts);
293 1.1 christos opts.deref_ref = 1;
294 1.1 christos opts.raw = print_raw_frame_arguments;
295 1.1 christos
296 1.1 christos /* True in "summary" mode, false otherwise. */
297 1.1 christos opts.summary = !strcmp (print_frame_arguments, "scalars");
298 1.7 christos
299 1.1 christos common_val_print (arg->val, &stb, 2, &opts, language);
300 1.5 christos }
301 1.5 christos CATCH (except, RETURN_MASK_ERROR)
302 1.5 christos {
303 1.5 christos error_message = except.message;
304 1.5 christos }
305 1.1 christos END_CATCH
306 1.5 christos }
307 1.7 christos if (error_message != NULL)
308 1.1 christos stb.printf (_("<error reading variable: %s>"), error_message);
309 1.1 christos }
310 1.7 christos
311 1.1 christos uiout->field_stream ("value", stb);
312 1.1 christos }
313 1.1 christos
314 1.1 christos /* Read in inferior function local SYM at FRAME into ARGP. Caller is
315 1.1 christos responsible for xfree of ARGP->ERROR. This function never throws an
316 1.1 christos exception. */
317 1.1 christos
318 1.1 christos void
319 1.1 christos read_frame_local (struct symbol *sym, struct frame_info *frame,
320 1.1 christos struct frame_arg *argp)
321 1.5 christos {
322 1.5 christos argp->sym = sym;
323 1.5 christos argp->val = NULL;
324 1.5 christos argp->error = NULL;
325 1.5 christos
326 1.5 christos TRY
327 1.6 christos {
328 1.5 christos argp->val = read_var_value (sym, NULL, frame);
329 1.5 christos }
330 1.1 christos CATCH (except, RETURN_MASK_ERROR)
331 1.5 christos {
332 1.1 christos argp->error = xstrdup (except.message);
333 1.5 christos }
334 1.1 christos END_CATCH
335 1.1 christos }
336 1.1 christos
337 1.1 christos /* Read in inferior function parameter SYM at FRAME into ARGP. Caller is
338 1.1 christos responsible for xfree of ARGP->ERROR. This function never throws an
339 1.1 christos exception. */
340 1.1 christos
341 1.1 christos void
342 1.1 christos read_frame_arg (struct symbol *sym, struct frame_info *frame,
343 1.1 christos struct frame_arg *argp, struct frame_arg *entryargp)
344 1.1 christos {
345 1.1 christos struct value *val = NULL, *entryval = NULL;
346 1.1 christos char *val_error = NULL, *entryval_error = NULL;
347 1.1 christos int val_equal = 0;
348 1.1 christos
349 1.1 christos if (print_entry_values != print_entry_values_only
350 1.1 christos && print_entry_values != print_entry_values_preferred)
351 1.5 christos {
352 1.1 christos TRY
353 1.6 christos {
354 1.1 christos val = read_var_value (sym, NULL, frame);
355 1.5 christos }
356 1.1 christos CATCH (except, RETURN_MASK_ERROR)
357 1.6 christos {
358 1.1 christos val_error = (char *) alloca (strlen (except.message) + 1);
359 1.1 christos strcpy (val_error, except.message);
360 1.5 christos }
361 1.1 christos END_CATCH
362 1.1 christos }
363 1.1 christos
364 1.1 christos if (SYMBOL_COMPUTED_OPS (sym) != NULL
365 1.1 christos && SYMBOL_COMPUTED_OPS (sym)->read_variable_at_entry != NULL
366 1.1 christos && print_entry_values != print_entry_values_no
367 1.1 christos && (print_entry_values != print_entry_values_if_needed
368 1.1 christos || !val || value_optimized_out (val)))
369 1.5 christos {
370 1.1 christos TRY
371 1.1 christos {
372 1.1 christos const struct symbol_computed_ops *ops;
373 1.1 christos
374 1.1 christos ops = SYMBOL_COMPUTED_OPS (sym);
375 1.1 christos entryval = ops->read_variable_at_entry (sym, frame);
376 1.5 christos }
377 1.1 christos CATCH (except, RETURN_MASK_ERROR)
378 1.5 christos {
379 1.5 christos if (except.error != NO_ENTRY_VALUE_ERROR)
380 1.5 christos {
381 1.5 christos entryval_error = (char *) alloca (strlen (except.message) + 1);
382 1.5 christos strcpy (entryval_error, except.message);
383 1.1 christos }
384 1.5 christos }
385 1.1 christos END_CATCH
386 1.5 christos
387 1.5 christos if (entryval != NULL && value_optimized_out (entryval))
388 1.1 christos entryval = NULL;
389 1.1 christos
390 1.1 christos if (print_entry_values == print_entry_values_compact
391 1.1 christos || print_entry_values == print_entry_values_default)
392 1.1 christos {
393 1.1 christos /* For MI do not try to use print_entry_values_compact for ARGP. */
394 1.7 christos
395 1.1 christos if (val && entryval && !current_uiout->is_mi_like_p ())
396 1.1 christos {
397 1.1 christos struct type *type = value_type (val);
398 1.3 christos
399 1.3 christos if (value_lazy (val))
400 1.3 christos value_fetch_lazy (val);
401 1.3 christos if (value_lazy (entryval))
402 1.3 christos value_fetch_lazy (entryval);
403 1.3 christos
404 1.1 christos if (value_contents_eq (val, 0, entryval, 0, TYPE_LENGTH (type)))
405 1.1 christos {
406 1.1 christos /* Initialize it just to avoid a GCC false warning. */
407 1.1 christos struct value *val_deref = NULL, *entryval_deref;
408 1.7 christos
409 1.1 christos /* DW_AT_call_value does match with the current
410 1.7 christos value. If it is a reference still try to verify if
411 1.1 christos dereferenced DW_AT_call_data_value does not differ. */
412 1.5 christos
413 1.1 christos TRY
414 1.1 christos {
415 1.1 christos struct type *type_deref;
416 1.1 christos
417 1.1 christos val_deref = coerce_ref (val);
418 1.1 christos if (value_lazy (val_deref))
419 1.1 christos value_fetch_lazy (val_deref);
420 1.1 christos type_deref = value_type (val_deref);
421 1.1 christos
422 1.1 christos entryval_deref = coerce_ref (entryval);
423 1.1 christos if (value_lazy (entryval_deref))
424 1.1 christos value_fetch_lazy (entryval_deref);
425 1.1 christos
426 1.1 christos /* If the reference addresses match but dereferenced
427 1.1 christos content does not match print them. */
428 1.3 christos if (val != val_deref
429 1.3 christos && value_contents_eq (val_deref, 0,
430 1.3 christos entryval_deref, 0,
431 1.1 christos TYPE_LENGTH (type_deref)))
432 1.1 christos val_equal = 1;
433 1.5 christos }
434 1.5 christos CATCH (except, RETURN_MASK_ERROR)
435 1.5 christos {
436 1.5 christos /* If the dereferenced content could not be
437 1.5 christos fetched do not display anything. */
438 1.5 christos if (except.error == NO_ENTRY_VALUE_ERROR)
439 1.5 christos val_equal = 1;
440 1.5 christos else if (except.message != NULL)
441 1.5 christos {
442 1.5 christos entryval_error = (char *) alloca (strlen (except.message) + 1);
443 1.5 christos strcpy (entryval_error, except.message);
444 1.5 christos }
445 1.5 christos }
446 1.1 christos END_CATCH
447 1.1 christos
448 1.1 christos /* Value was not a reference; and its content matches. */
449 1.1 christos if (val == val_deref)
450 1.1 christos val_equal = 1;
451 1.1 christos
452 1.1 christos if (val_equal)
453 1.1 christos entryval = NULL;
454 1.1 christos }
455 1.1 christos }
456 1.1 christos
457 1.1 christos /* Try to remove possibly duplicate error message for ENTRYARGP even
458 1.1 christos in MI mode. */
459 1.1 christos
460 1.1 christos if (val_error && entryval_error
461 1.1 christos && strcmp (val_error, entryval_error) == 0)
462 1.1 christos {
463 1.1 christos entryval_error = NULL;
464 1.1 christos
465 1.1 christos /* Do not se VAL_EQUAL as the same error message may be shown for
466 1.1 christos the entry value even if no entry values are present in the
467 1.1 christos inferior. */
468 1.1 christos }
469 1.1 christos }
470 1.1 christos }
471 1.1 christos
472 1.1 christos if (entryval == NULL)
473 1.1 christos {
474 1.1 christos if (print_entry_values == print_entry_values_preferred)
475 1.5 christos {
476 1.5 christos gdb_assert (val == NULL);
477 1.5 christos
478 1.1 christos TRY
479 1.6 christos {
480 1.1 christos val = read_var_value (sym, NULL, frame);
481 1.5 christos }
482 1.1 christos CATCH (except, RETURN_MASK_ERROR)
483 1.6 christos {
484 1.1 christos val_error = (char *) alloca (strlen (except.message) + 1);
485 1.1 christos strcpy (val_error, except.message);
486 1.5 christos }
487 1.1 christos END_CATCH
488 1.1 christos }
489 1.1 christos if (print_entry_values == print_entry_values_only
490 1.1 christos || print_entry_values == print_entry_values_both
491 1.1 christos || (print_entry_values == print_entry_values_preferred
492 1.1 christos && (!val || value_optimized_out (val))))
493 1.1 christos {
494 1.1 christos entryval = allocate_optimized_out_value (SYMBOL_TYPE (sym));
495 1.1 christos entryval_error = NULL;
496 1.1 christos }
497 1.1 christos }
498 1.1 christos if ((print_entry_values == print_entry_values_compact
499 1.1 christos || print_entry_values == print_entry_values_if_needed
500 1.1 christos || print_entry_values == print_entry_values_preferred)
501 1.1 christos && (!val || value_optimized_out (val)) && entryval != NULL)
502 1.1 christos {
503 1.1 christos val = NULL;
504 1.1 christos val_error = NULL;
505 1.1 christos }
506 1.1 christos
507 1.1 christos argp->sym = sym;
508 1.1 christos argp->val = val;
509 1.1 christos argp->error = val_error ? xstrdup (val_error) : NULL;
510 1.1 christos if (!val && !val_error)
511 1.1 christos argp->entry_kind = print_entry_values_only;
512 1.1 christos else if ((print_entry_values == print_entry_values_compact
513 1.1 christos || print_entry_values == print_entry_values_default) && val_equal)
514 1.1 christos {
515 1.7 christos argp->entry_kind = print_entry_values_compact;
516 1.1 christos gdb_assert (!current_uiout->is_mi_like_p ());
517 1.1 christos }
518 1.1 christos else
519 1.1 christos argp->entry_kind = print_entry_values_no;
520 1.1 christos
521 1.1 christos entryargp->sym = sym;
522 1.1 christos entryargp->val = entryval;
523 1.1 christos entryargp->error = entryval_error ? xstrdup (entryval_error) : NULL;
524 1.1 christos if (!entryval && !entryval_error)
525 1.1 christos entryargp->entry_kind = print_entry_values_no;
526 1.1 christos else
527 1.1 christos entryargp->entry_kind = print_entry_values_only;
528 1.1 christos }
529 1.1 christos
530 1.1 christos /* Print the arguments of frame FRAME on STREAM, given the function
531 1.1 christos FUNC running in that frame (as a symbol), where NUM is the number
532 1.1 christos of arguments according to the stack frame (or -1 if the number of
533 1.1 christos arguments is unknown). */
534 1.1 christos
535 1.1 christos /* Note that currently the "number of arguments according to the
536 1.1 christos stack frame" is only known on VAX where i refers to the "number of
537 1.1 christos ints of arguments according to the stack frame". */
538 1.1 christos
539 1.1 christos static void
540 1.1 christos print_frame_args (struct symbol *func, struct frame_info *frame,
541 1.1 christos int num, struct ui_file *stream)
542 1.1 christos {
543 1.1 christos struct ui_out *uiout = current_uiout;
544 1.1 christos int first = 1;
545 1.1 christos /* Offset of next stack argument beyond the one we have seen that is
546 1.1 christos at the highest offset, or -1 if we haven't come to a stack
547 1.1 christos argument yet. */
548 1.1 christos long highest_offset = -1;
549 1.1 christos /* Number of ints of arguments that we have printed so far. */
550 1.1 christos int args_printed = 0;
551 1.1 christos /* True if we should print arguments, false otherwise. */
552 1.1 christos int print_args = strcmp (print_frame_arguments, "none");
553 1.1 christos
554 1.1 christos if (func)
555 1.3 christos {
556 1.1 christos const struct block *b = SYMBOL_BLOCK_VALUE (func);
557 1.1 christos struct block_iterator iter;
558 1.1 christos struct symbol *sym;
559 1.1 christos
560 1.1 christos ALL_BLOCK_SYMBOLS (b, iter, sym)
561 1.1 christos {
562 1.1 christos struct frame_arg arg, entryarg;
563 1.1 christos
564 1.1 christos QUIT;
565 1.1 christos
566 1.1 christos /* Keep track of the highest stack argument offset seen, and
567 1.1 christos skip over any kinds of symbols we don't care about. */
568 1.1 christos
569 1.1 christos if (!SYMBOL_IS_ARGUMENT (sym))
570 1.1 christos continue;
571 1.1 christos
572 1.1 christos switch (SYMBOL_CLASS (sym))
573 1.1 christos {
574 1.1 christos case LOC_ARG:
575 1.1 christos case LOC_REF_ARG:
576 1.1 christos {
577 1.1 christos long current_offset = SYMBOL_VALUE (sym);
578 1.1 christos int arg_size = TYPE_LENGTH (SYMBOL_TYPE (sym));
579 1.1 christos
580 1.1 christos /* Compute address of next argument by adding the size of
581 1.1 christos this argument and rounding to an int boundary. */
582 1.1 christos current_offset =
583 1.1 christos ((current_offset + arg_size + sizeof (int) - 1)
584 1.1 christos & ~(sizeof (int) - 1));
585 1.1 christos
586 1.1 christos /* If this is the highest offset seen yet, set
587 1.1 christos highest_offset. */
588 1.1 christos if (highest_offset == -1
589 1.1 christos || (current_offset > highest_offset))
590 1.1 christos highest_offset = current_offset;
591 1.1 christos
592 1.1 christos /* Add the number of ints we're about to print to
593 1.1 christos args_printed. */
594 1.1 christos args_printed += (arg_size + sizeof (int) - 1) / sizeof (int);
595 1.1 christos }
596 1.1 christos
597 1.1 christos /* We care about types of symbols, but don't need to
598 1.1 christos keep track of stack offsets in them. */
599 1.1 christos case LOC_REGISTER:
600 1.1 christos case LOC_REGPARM_ADDR:
601 1.1 christos case LOC_COMPUTED:
602 1.1 christos case LOC_OPTIMIZED_OUT:
603 1.1 christos default:
604 1.1 christos break;
605 1.1 christos }
606 1.1 christos
607 1.1 christos /* We have to look up the symbol because arguments can have
608 1.1 christos two entries (one a parameter, one a local) and the one we
609 1.1 christos want is the local, which lookup_symbol will find for us.
610 1.1 christos This includes gcc1 (not gcc2) on SPARC when passing a
611 1.1 christos small structure and gcc2 when the argument type is float
612 1.1 christos and it is passed as a double and converted to float by
613 1.1 christos the prologue (in the latter case the type of the LOC_ARG
614 1.1 christos symbol is double and the type of the LOC_LOCAL symbol is
615 1.1 christos float). */
616 1.1 christos /* But if the parameter name is null, don't try it. Null
617 1.1 christos parameter names occur on the RS/6000, for traceback
618 1.1 christos tables. FIXME, should we even print them? */
619 1.1 christos
620 1.1 christos if (*SYMBOL_LINKAGE_NAME (sym))
621 1.1 christos {
622 1.1 christos struct symbol *nsym;
623 1.8 christos
624 1.8 christos nsym = lookup_symbol_search_name (SYMBOL_SEARCH_NAME (sym),
625 1.1 christos b, VAR_DOMAIN).symbol;
626 1.1 christos gdb_assert (nsym != NULL);
627 1.1 christos if (SYMBOL_CLASS (nsym) == LOC_REGISTER
628 1.1 christos && !SYMBOL_IS_ARGUMENT (nsym))
629 1.1 christos {
630 1.1 christos /* There is a LOC_ARG/LOC_REGISTER pair. This means
631 1.1 christos that it was passed on the stack and loaded into a
632 1.1 christos register, or passed in a register and stored in a
633 1.1 christos stack slot. GDB 3.x used the LOC_ARG; GDB
634 1.1 christos 4.0-4.11 used the LOC_REGISTER.
635 1.1 christos
636 1.1 christos Reasons for using the LOC_ARG:
637 1.1 christos
638 1.1 christos (1) Because find_saved_registers may be slow for
639 1.1 christos remote debugging.
640 1.1 christos
641 1.1 christos (2) Because registers are often re-used and stack
642 1.1 christos slots rarely (never?) are. Therefore using
643 1.1 christos the stack slot is much less likely to print
644 1.1 christos garbage.
645 1.1 christos
646 1.1 christos Reasons why we might want to use the LOC_REGISTER:
647 1.1 christos
648 1.1 christos (1) So that the backtrace prints the same value
649 1.1 christos as "print foo". I see no compelling reason
650 1.1 christos why this needs to be the case; having the
651 1.1 christos backtrace print the value which was passed
652 1.1 christos in, and "print foo" print the value as
653 1.1 christos modified within the called function, makes
654 1.1 christos perfect sense to me.
655 1.1 christos
656 1.1 christos Additional note: It might be nice if "info args"
657 1.1 christos displayed both values.
658 1.1 christos
659 1.1 christos One more note: There is a case with SPARC
660 1.1 christos structure passing where we need to use the
661 1.1 christos LOC_REGISTER, but this is dealt with by creating
662 1.1 christos a single LOC_REGPARM in symbol reading. */
663 1.1 christos
664 1.1 christos /* Leave sym (the LOC_ARG) alone. */
665 1.1 christos ;
666 1.1 christos }
667 1.1 christos else
668 1.1 christos sym = nsym;
669 1.1 christos }
670 1.1 christos
671 1.1 christos /* Print the current arg. */
672 1.7 christos if (!first)
673 1.7 christos uiout->text (", ");
674 1.1 christos uiout->wrap_hint (" ");
675 1.1 christos
676 1.1 christos if (!print_args)
677 1.1 christos {
678 1.1 christos memset (&arg, 0, sizeof (arg));
679 1.1 christos arg.sym = sym;
680 1.1 christos arg.entry_kind = print_entry_values_no;
681 1.1 christos memset (&entryarg, 0, sizeof (entryarg));
682 1.1 christos entryarg.sym = sym;
683 1.1 christos entryarg.entry_kind = print_entry_values_no;
684 1.1 christos }
685 1.1 christos else
686 1.1 christos read_frame_arg (sym, frame, &arg, &entryarg);
687 1.1 christos
688 1.1 christos if (arg.entry_kind != print_entry_values_only)
689 1.1 christos print_frame_arg (&arg);
690 1.1 christos
691 1.1 christos if (entryarg.entry_kind != print_entry_values_no)
692 1.1 christos {
693 1.1 christos if (arg.entry_kind != print_entry_values_only)
694 1.7 christos {
695 1.7 christos uiout->text (", ");
696 1.1 christos uiout->wrap_hint (" ");
697 1.1 christos }
698 1.1 christos
699 1.1 christos print_frame_arg (&entryarg);
700 1.1 christos }
701 1.1 christos
702 1.1 christos xfree (arg.error);
703 1.1 christos xfree (entryarg.error);
704 1.1 christos
705 1.1 christos first = 0;
706 1.1 christos }
707 1.1 christos }
708 1.1 christos
709 1.1 christos /* Don't print nameless args in situations where we don't know
710 1.1 christos enough about the stack to find them. */
711 1.1 christos if (num != -1)
712 1.1 christos {
713 1.1 christos long start;
714 1.1 christos
715 1.1 christos if (highest_offset == -1)
716 1.1 christos start = gdbarch_frame_args_skip (get_frame_arch (frame));
717 1.1 christos else
718 1.1 christos start = highest_offset;
719 1.1 christos
720 1.1 christos print_frame_nameless_args (frame, start, num - args_printed,
721 1.1 christos first, stream);
722 1.1 christos }
723 1.1 christos }
724 1.1 christos
725 1.1 christos /* Set the current source and line to the location given by frame
726 1.1 christos FRAME, if possible. When CENTER is true, adjust so the relevant
727 1.1 christos line is in the center of the next 'list'. */
728 1.1 christos
729 1.3 christos void
730 1.1 christos set_current_sal_from_frame (struct frame_info *frame)
731 1.8 christos {
732 1.3 christos symtab_and_line sal = find_frame_sal (frame);
733 1.8 christos if (sal.symtab != NULL)
734 1.1 christos set_current_source_symtab_and_line (sal);
735 1.1 christos }
736 1.1 christos
737 1.1 christos /* If ON, GDB will display disassembly of the next source line when
738 1.1 christos execution of the program being debugged stops.
739 1.1 christos If AUTO (which is the default), or there's no line info to determine
740 1.1 christos the source line of the next instruction, display disassembly of next
741 1.1 christos instruction instead. */
742 1.1 christos
743 1.1 christos static enum auto_boolean disassemble_next_line;
744 1.1 christos
745 1.1 christos static void
746 1.1 christos show_disassemble_next_line (struct ui_file *file, int from_tty,
747 1.1 christos struct cmd_list_element *c,
748 1.1 christos const char *value)
749 1.1 christos {
750 1.1 christos fprintf_filtered (file,
751 1.1 christos _("Debugger's willingness to use "
752 1.1 christos "disassemble-next-line is %s.\n"),
753 1.1 christos value);
754 1.1 christos }
755 1.1 christos
756 1.1 christos /* Use TRY_CATCH to catch the exception from the gdb_disassembly
757 1.1 christos because it will be broken by filter sometime. */
758 1.1 christos
759 1.1 christos static void
760 1.1 christos do_gdb_disassembly (struct gdbarch *gdbarch,
761 1.1 christos int how_many, CORE_ADDR low, CORE_ADDR high)
762 1.1 christos {
763 1.5 christos
764 1.1 christos TRY
765 1.7 christos {
766 1.1 christos gdb_disassembly (gdbarch, current_uiout,
767 1.1 christos DISASSEMBLY_RAW_INSN, how_many,
768 1.1 christos low, high);
769 1.5 christos }
770 1.1 christos CATCH (exception, RETURN_MASK_ERROR)
771 1.1 christos {
772 1.1 christos /* If an exception was thrown while doing the disassembly, print
773 1.1 christos the error message, to give the user a clue of what happened. */
774 1.1 christos exception_print (gdb_stderr, exception);
775 1.5 christos }
776 1.1 christos END_CATCH
777 1.1 christos }
778 1.1 christos
779 1.1 christos /* Print information about frame FRAME. The output is format according
780 1.1 christos to PRINT_LEVEL and PRINT_WHAT and PRINT_ARGS. The meaning of
781 1.1 christos PRINT_WHAT is:
782 1.1 christos
783 1.1 christos SRC_LINE: Print only source line.
784 1.8 christos LOCATION: Print only location.
785 1.1 christos SRC_AND_LOC: Print location and source line.
786 1.1 christos
787 1.1 christos Used in "where" output, and to emit breakpoint or step
788 1.1 christos messages. */
789 1.1 christos
790 1.1 christos void
791 1.1 christos print_frame_info (struct frame_info *frame, int print_level,
792 1.1 christos enum print_what print_what, int print_args,
793 1.1 christos int set_current_sal)
794 1.1 christos {
795 1.1 christos struct gdbarch *gdbarch = get_frame_arch (frame);
796 1.1 christos int source_print;
797 1.1 christos int location_print;
798 1.1 christos struct ui_out *uiout = current_uiout;
799 1.1 christos
800 1.1 christos if (get_frame_type (frame) == DUMMY_FRAME
801 1.1 christos || get_frame_type (frame) == SIGTRAMP_FRAME
802 1.1 christos || get_frame_type (frame) == ARCH_FRAME)
803 1.8 christos {
804 1.1 christos ui_out_emit_tuple tuple_emitter (uiout, "frame");
805 1.1 christos
806 1.1 christos annotate_frame_begin (print_level ? frame_relative_level (frame) : 0,
807 1.1 christos gdbarch, get_frame_pc (frame));
808 1.1 christos
809 1.1 christos /* Do this regardless of SOURCE because we don't have any source
810 1.1 christos to list for this frame. */
811 1.1 christos if (print_level)
812 1.7 christos {
813 1.7 christos uiout->text ("#");
814 1.1 christos uiout->field_fmt_int (2, ui_left, "level",
815 1.1 christos frame_relative_level (frame));
816 1.7 christos }
817 1.1 christos if (uiout->is_mi_like_p ())
818 1.1 christos {
819 1.7 christos annotate_frame_address ();
820 1.1 christos uiout->field_core_addr ("addr",
821 1.1 christos gdbarch, get_frame_pc (frame));
822 1.1 christos annotate_frame_address_end ();
823 1.1 christos }
824 1.1 christos
825 1.1 christos if (get_frame_type (frame) == DUMMY_FRAME)
826 1.1 christos {
827 1.8 christos annotate_function_call ();
828 1.8 christos uiout->field_string ("func", "<function called from gdb>",
829 1.1 christos ui_out_style_kind::FUNCTION);
830 1.1 christos }
831 1.1 christos else if (get_frame_type (frame) == SIGTRAMP_FRAME)
832 1.1 christos {
833 1.8 christos annotate_signal_handler_caller ();
834 1.8 christos uiout->field_string ("func", "<signal handler called>",
835 1.1 christos ui_out_style_kind::FUNCTION);
836 1.1 christos }
837 1.1 christos else if (get_frame_type (frame) == ARCH_FRAME)
838 1.8 christos {
839 1.8 christos uiout->field_string ("func", "<cross-architecture call>",
840 1.1 christos ui_out_style_kind::FUNCTION);
841 1.7 christos }
842 1.1 christos uiout->text ("\n");
843 1.1 christos annotate_frame_end ();
844 1.3 christos
845 1.3 christos /* If disassemble-next-line is set to auto or on output the next
846 1.3 christos instruction. */
847 1.3 christos if (disassemble_next_line == AUTO_BOOLEAN_AUTO
848 1.3 christos || disassemble_next_line == AUTO_BOOLEAN_TRUE)
849 1.3 christos do_gdb_disassembly (get_frame_arch (frame), 1,
850 1.3 christos get_frame_pc (frame), get_frame_pc (frame) + 1);
851 1.1 christos
852 1.1 christos return;
853 1.1 christos }
854 1.1 christos
855 1.1 christos /* If FRAME is not the innermost frame, that normally means that
856 1.1 christos FRAME->pc points to *after* the call instruction, and we want to
857 1.1 christos get the line containing the call, never the next line. But if
858 1.1 christos the next frame is a SIGTRAMP_FRAME or a DUMMY_FRAME, then the
859 1.1 christos next frame was not entered as the result of a call, and we want
860 1.8 christos to get the line containing FRAME->pc. */
861 1.1 christos symtab_and_line sal = find_frame_sal (frame);
862 1.1 christos
863 1.1 christos location_print = (print_what == LOCATION
864 1.1 christos || print_what == LOC_AND_ADDRESS
865 1.1 christos || print_what == SRC_AND_LOC);
866 1.1 christos
867 1.1 christos if (location_print || !sal.symtab)
868 1.1 christos print_frame (frame, print_level, print_what, print_args, sal);
869 1.1 christos
870 1.1 christos source_print = (print_what == SRC_LINE || print_what == SRC_AND_LOC);
871 1.1 christos
872 1.1 christos /* If disassemble-next-line is set to auto or on and doesn't have
873 1.1 christos the line debug messages for $pc, output the next instruction. */
874 1.1 christos if ((disassemble_next_line == AUTO_BOOLEAN_AUTO
875 1.1 christos || disassemble_next_line == AUTO_BOOLEAN_TRUE)
876 1.1 christos && source_print && !sal.symtab)
877 1.1 christos do_gdb_disassembly (get_frame_arch (frame), 1,
878 1.1 christos get_frame_pc (frame), get_frame_pc (frame) + 1);
879 1.1 christos
880 1.1 christos if (source_print && sal.symtab)
881 1.1 christos {
882 1.1 christos int done = 0;
883 1.1 christos int mid_statement = ((print_what == SRC_LINE)
884 1.1 christos && frame_show_address (frame, sal));
885 1.1 christos
886 1.1 christos if (annotation_level)
887 1.1 christos done = identify_source_line (sal.symtab, sal.line, mid_statement,
888 1.1 christos get_frame_pc (frame));
889 1.1 christos if (!done)
890 1.1 christos {
891 1.1 christos if (deprecated_print_frame_info_listing_hook)
892 1.1 christos deprecated_print_frame_info_listing_hook (sal.symtab,
893 1.1 christos sal.line,
894 1.1 christos sal.line + 1, 0);
895 1.1 christos else
896 1.1 christos {
897 1.1 christos struct value_print_options opts;
898 1.1 christos
899 1.1 christos get_user_print_options (&opts);
900 1.1 christos /* We used to do this earlier, but that is clearly
901 1.1 christos wrong. This function is used by many different
902 1.1 christos parts of gdb, including normal_stop in infrun.c,
903 1.1 christos which uses this to print out the current PC
904 1.1 christos when we stepi/nexti into the middle of a source
905 1.1 christos line. Only the command line really wants this
906 1.1 christos behavior. Other UIs probably would like the
907 1.1 christos ability to decide for themselves if it is desired. */
908 1.1 christos if (opts.addressprint && mid_statement)
909 1.7 christos {
910 1.1 christos uiout->field_core_addr ("addr",
911 1.7 christos gdbarch, get_frame_pc (frame));
912 1.1 christos uiout->text ("\t");
913 1.1 christos }
914 1.1 christos
915 1.1 christos print_source_lines (sal.symtab, sal.line, sal.line + 1, 0);
916 1.1 christos }
917 1.1 christos }
918 1.1 christos
919 1.1 christos /* If disassemble-next-line is set to on and there is line debug
920 1.1 christos messages, output assembly codes for next line. */
921 1.1 christos if (disassemble_next_line == AUTO_BOOLEAN_TRUE)
922 1.1 christos do_gdb_disassembly (get_frame_arch (frame), -1, sal.pc, sal.end);
923 1.1 christos }
924 1.1 christos
925 1.1 christos if (set_current_sal)
926 1.1 christos {
927 1.1 christos CORE_ADDR pc;
928 1.1 christos
929 1.1 christos if (get_frame_pc_if_available (frame, &pc))
930 1.1 christos set_last_displayed_sal (1, sal.pspace, pc, sal.symtab, sal.line);
931 1.1 christos else
932 1.1 christos set_last_displayed_sal (0, 0, 0, 0, 0);
933 1.1 christos }
934 1.1 christos
935 1.1 christos annotate_frame_end ();
936 1.1 christos
937 1.1 christos gdb_flush (gdb_stdout);
938 1.1 christos }
939 1.1 christos
940 1.1 christos /* Remember the last symtab and line we displayed, which we use e.g.
941 1.1 christos * as the place to put a breakpoint when the `break' command is
942 1.1 christos * invoked with no arguments. */
943 1.1 christos
944 1.1 christos static void
945 1.1 christos set_last_displayed_sal (int valid, struct program_space *pspace,
946 1.1 christos CORE_ADDR addr, struct symtab *symtab,
947 1.1 christos int line)
948 1.1 christos {
949 1.1 christos last_displayed_sal_valid = valid;
950 1.1 christos last_displayed_pspace = pspace;
951 1.1 christos last_displayed_addr = addr;
952 1.1 christos last_displayed_symtab = symtab;
953 1.1 christos last_displayed_line = line;
954 1.1 christos if (valid && pspace == NULL)
955 1.1 christos {
956 1.1 christos clear_last_displayed_sal ();
957 1.1 christos internal_error (__FILE__, __LINE__,
958 1.1 christos _("Trying to set NULL pspace."));
959 1.1 christos }
960 1.1 christos }
961 1.1 christos
962 1.1 christos /* Forget the last sal we displayed. */
963 1.1 christos
964 1.1 christos void
965 1.1 christos clear_last_displayed_sal (void)
966 1.1 christos {
967 1.1 christos last_displayed_sal_valid = 0;
968 1.1 christos last_displayed_pspace = 0;
969 1.1 christos last_displayed_addr = 0;
970 1.1 christos last_displayed_symtab = 0;
971 1.1 christos last_displayed_line = 0;
972 1.1 christos }
973 1.1 christos
974 1.1 christos /* Is our record of the last sal we displayed valid? If not,
975 1.1 christos * the get_last_displayed_* functions will return NULL or 0, as
976 1.1 christos * appropriate. */
977 1.1 christos
978 1.1 christos int
979 1.1 christos last_displayed_sal_is_valid (void)
980 1.1 christos {
981 1.1 christos return last_displayed_sal_valid;
982 1.1 christos }
983 1.1 christos
984 1.1 christos /* Get the pspace of the last sal we displayed, if it's valid. */
985 1.1 christos
986 1.1 christos struct program_space *
987 1.1 christos get_last_displayed_pspace (void)
988 1.1 christos {
989 1.1 christos if (last_displayed_sal_valid)
990 1.1 christos return last_displayed_pspace;
991 1.1 christos return 0;
992 1.1 christos }
993 1.1 christos
994 1.1 christos /* Get the address of the last sal we displayed, if it's valid. */
995 1.1 christos
996 1.1 christos CORE_ADDR
997 1.1 christos get_last_displayed_addr (void)
998 1.1 christos {
999 1.1 christos if (last_displayed_sal_valid)
1000 1.1 christos return last_displayed_addr;
1001 1.1 christos return 0;
1002 1.1 christos }
1003 1.1 christos
1004 1.1 christos /* Get the symtab of the last sal we displayed, if it's valid. */
1005 1.1 christos
1006 1.1 christos struct symtab*
1007 1.1 christos get_last_displayed_symtab (void)
1008 1.1 christos {
1009 1.1 christos if (last_displayed_sal_valid)
1010 1.1 christos return last_displayed_symtab;
1011 1.1 christos return 0;
1012 1.1 christos }
1013 1.1 christos
1014 1.1 christos /* Get the line of the last sal we displayed, if it's valid. */
1015 1.1 christos
1016 1.1 christos int
1017 1.1 christos get_last_displayed_line (void)
1018 1.1 christos {
1019 1.1 christos if (last_displayed_sal_valid)
1020 1.1 christos return last_displayed_line;
1021 1.1 christos return 0;
1022 1.1 christos }
1023 1.1 christos
1024 1.1 christos /* Get the last sal we displayed, if it's valid. */
1025 1.8 christos
1026 1.8 christos symtab_and_line
1027 1.1 christos get_last_displayed_sal ()
1028 1.8 christos {
1029 1.8 christos symtab_and_line sal;
1030 1.1 christos
1031 1.1 christos if (last_displayed_sal_valid)
1032 1.8 christos {
1033 1.8 christos sal.pspace = last_displayed_pspace;
1034 1.8 christos sal.pc = last_displayed_addr;
1035 1.8 christos sal.symtab = last_displayed_symtab;
1036 1.1 christos sal.line = last_displayed_line;
1037 1.8 christos }
1038 1.8 christos
1039 1.1 christos return sal;
1040 1.1 christos }
1041 1.1 christos
1042 1.8 christos
1043 1.8 christos /* Attempt to obtain the name, FUNLANG and optionally FUNCP of the function
1044 1.1 christos corresponding to FRAME. */
1045 1.8 christos
1046 1.8 christos gdb::unique_xmalloc_ptr<char>
1047 1.8 christos find_frame_funname (struct frame_info *frame, enum language *funlang,
1048 1.1 christos struct symbol **funcp)
1049 1.1 christos {
1050 1.8 christos struct symbol *func;
1051 1.1 christos gdb::unique_xmalloc_ptr<char> funname;
1052 1.1 christos
1053 1.1 christos *funlang = language_unknown;
1054 1.1 christos if (funcp)
1055 1.1 christos *funcp = NULL;
1056 1.1 christos
1057 1.1 christos func = get_frame_function (frame);
1058 1.1 christos if (func)
1059 1.1 christos {
1060 1.1 christos /* In certain pathological cases, the symtabs give the wrong
1061 1.1 christos function (when we are in the first function in a file which
1062 1.1 christos is compiled without debugging symbols, the previous function
1063 1.1 christos is compiled with debugging symbols, and the "foo.o" symbol
1064 1.1 christos that is supposed to tell us where the file with debugging
1065 1.1 christos symbols ends has been truncated by ar because it is longer
1066 1.1 christos than 15 characters). This also occurs if the user uses asm()
1067 1.1 christos to create a function but not stabs for it (in a file compiled
1068 1.1 christos with -g).
1069 1.1 christos
1070 1.1 christos So look in the minimal symbol tables as well, and if it comes
1071 1.1 christos up with a larger address for the function use that instead.
1072 1.1 christos I don't think this can ever cause any problems; there
1073 1.1 christos shouldn't be any minimal symbols in the middle of a function;
1074 1.1 christos if this is ever changed many parts of GDB will need to be
1075 1.1 christos changed (and we'll create a find_pc_minimal_function or some
1076 1.1 christos such). */
1077 1.1 christos
1078 1.1 christos struct bound_minimal_symbol msymbol;
1079 1.1 christos
1080 1.1 christos /* Don't attempt to do this for inlined functions, which do not
1081 1.1 christos have a corresponding minimal symbol. */
1082 1.1 christos if (!block_inlined_p (SYMBOL_BLOCK_VALUE (func)))
1083 1.1 christos msymbol
1084 1.1 christos = lookup_minimal_symbol_by_pc (get_frame_address_in_block (frame));
1085 1.1 christos else
1086 1.1 christos memset (&msymbol, 0, sizeof (msymbol));
1087 1.1 christos
1088 1.3 christos if (msymbol.minsym != NULL
1089 1.8 christos && (BMSYMBOL_VALUE_ADDRESS (msymbol)
1090 1.1 christos > BLOCK_ENTRY_PC (SYMBOL_BLOCK_VALUE (func))))
1091 1.1 christos {
1092 1.1 christos /* We also don't know anything about the function besides
1093 1.1 christos its address and name. */
1094 1.8 christos func = 0;
1095 1.3 christos funname.reset (xstrdup (MSYMBOL_PRINT_NAME (msymbol.minsym)));
1096 1.1 christos *funlang = MSYMBOL_LANGUAGE (msymbol.minsym);
1097 1.1 christos }
1098 1.1 christos else
1099 1.6 christos {
1100 1.6 christos const char *print_name = SYMBOL_PRINT_NAME (func);
1101 1.1 christos
1102 1.1 christos *funlang = SYMBOL_LANGUAGE (func);
1103 1.1 christos if (funcp)
1104 1.1 christos *funcp = func;
1105 1.1 christos if (*funlang == language_cplus)
1106 1.1 christos {
1107 1.1 christos /* It seems appropriate to use SYMBOL_PRINT_NAME() here,
1108 1.1 christos to display the demangled name that we already have
1109 1.1 christos stored in the symbol table, but we stored a version
1110 1.1 christos with DMGL_PARAMS turned on, and here we don't want to
1111 1.8 christos display parameters. So remove the parameters. */
1112 1.1 christos funname = cp_remove_params (print_name);
1113 1.6 christos }
1114 1.8 christos
1115 1.8 christos /* If we didn't hit the C++ case above, set *funname
1116 1.8 christos here. */
1117 1.8 christos if (funname == NULL)
1118 1.1 christos funname.reset (xstrdup (print_name));
1119 1.1 christos }
1120 1.1 christos }
1121 1.1 christos else
1122 1.1 christos {
1123 1.1 christos struct bound_minimal_symbol msymbol;
1124 1.1 christos CORE_ADDR pc;
1125 1.1 christos
1126 1.8 christos if (!get_frame_address_in_block_if_available (frame, &pc))
1127 1.1 christos return funname;
1128 1.1 christos
1129 1.1 christos msymbol = lookup_minimal_symbol_by_pc (pc);
1130 1.1 christos if (msymbol.minsym != NULL)
1131 1.8 christos {
1132 1.3 christos funname.reset (xstrdup (MSYMBOL_PRINT_NAME (msymbol.minsym)));
1133 1.1 christos *funlang = MSYMBOL_LANGUAGE (msymbol.minsym);
1134 1.1 christos }
1135 1.8 christos }
1136 1.8 christos
1137 1.1 christos return funname;
1138 1.1 christos }
1139 1.1 christos
1140 1.1 christos static void
1141 1.1 christos print_frame (struct frame_info *frame, int print_level,
1142 1.1 christos enum print_what print_what, int print_args,
1143 1.1 christos struct symtab_and_line sal)
1144 1.1 christos {
1145 1.1 christos struct gdbarch *gdbarch = get_frame_arch (frame);
1146 1.1 christos struct ui_out *uiout = current_uiout;
1147 1.1 christos enum language funlang = language_unknown;
1148 1.1 christos struct value_print_options opts;
1149 1.1 christos struct symbol *func;
1150 1.1 christos CORE_ADDR pc = 0;
1151 1.1 christos int pc_p;
1152 1.1 christos
1153 1.1 christos pc_p = get_frame_pc_if_available (frame, &pc);
1154 1.8 christos
1155 1.8 christos gdb::unique_xmalloc_ptr<char> funname
1156 1.1 christos = find_frame_funname (frame, &funlang, &func);
1157 1.1 christos
1158 1.1 christos annotate_frame_begin (print_level ? frame_relative_level (frame) : 0,
1159 1.1 christos gdbarch, pc);
1160 1.8 christos
1161 1.8 christos {
1162 1.1 christos ui_out_emit_tuple tuple_emitter (uiout, "frame");
1163 1.8 christos
1164 1.1 christos if (print_level)
1165 1.8 christos {
1166 1.8 christos uiout->text ("#");
1167 1.8 christos uiout->field_fmt_int (2, ui_left, "level",
1168 1.1 christos frame_relative_level (frame));
1169 1.8 christos }
1170 1.8 christos get_user_print_options (&opts);
1171 1.8 christos if (opts.addressprint)
1172 1.8 christos if (!sal.symtab
1173 1.8 christos || frame_show_address (frame, sal)
1174 1.8 christos || print_what == LOC_AND_ADDRESS)
1175 1.8 christos {
1176 1.8 christos annotate_frame_address ();
1177 1.8 christos if (pc_p)
1178 1.8 christos uiout->field_core_addr ("addr", gdbarch, pc);
1179 1.8 christos else
1180 1.8 christos uiout->field_string ("addr", "<unavailable>",
1181 1.8 christos ui_out_style_kind::ADDRESS);
1182 1.8 christos annotate_frame_address_end ();
1183 1.8 christos uiout->text (" in ");
1184 1.8 christos }
1185 1.8 christos annotate_frame_function_name ();
1186 1.8 christos
1187 1.8 christos string_file stb;
1188 1.8 christos fprintf_symbol_filtered (&stb, funname ? funname.get () : "??",
1189 1.8 christos funlang, DMGL_ANSI);
1190 1.8 christos uiout->field_stream ("func", stb, ui_out_style_kind::FUNCTION);
1191 1.8 christos uiout->wrap_hint (" ");
1192 1.7 christos annotate_frame_args ();
1193 1.8 christos
1194 1.8 christos uiout->text (" (");
1195 1.8 christos if (print_args)
1196 1.8 christos {
1197 1.1 christos int numargs;
1198 1.8 christos
1199 1.8 christos if (gdbarch_frame_num_args_p (gdbarch))
1200 1.8 christos {
1201 1.8 christos numargs = gdbarch_frame_num_args (gdbarch, frame);
1202 1.8 christos gdb_assert (numargs >= 0);
1203 1.8 christos }
1204 1.8 christos else
1205 1.1 christos numargs = -1;
1206 1.1 christos
1207 1.8 christos {
1208 1.8 christos ui_out_emit_list list_emitter (uiout, "args");
1209 1.8 christos TRY
1210 1.8 christos {
1211 1.8 christos print_frame_args (func, frame, numargs, gdb_stdout);
1212 1.8 christos }
1213 1.8 christos CATCH (e, RETURN_MASK_ERROR)
1214 1.8 christos {
1215 1.8 christos }
1216 1.5 christos END_CATCH
1217 1.8 christos
1218 1.8 christos /* FIXME: ARGS must be a list. If one argument is a string it
1219 1.8 christos will have " that will not be properly escaped. */
1220 1.8 christos }
1221 1.8 christos QUIT;
1222 1.8 christos }
1223 1.8 christos uiout->text (")");
1224 1.8 christos if (sal.symtab)
1225 1.8 christos {
1226 1.1 christos const char *filename_display;
1227 1.8 christos
1228 1.8 christos filename_display = symtab_to_filename_for_display (sal.symtab);
1229 1.8 christos annotate_frame_source_begin ();
1230 1.8 christos uiout->wrap_hint (" ");
1231 1.8 christos uiout->text (" at ");
1232 1.8 christos annotate_frame_source_file ();
1233 1.8 christos uiout->field_string ("file", filename_display, ui_out_style_kind::FILE);
1234 1.8 christos if (uiout->is_mi_like_p ())
1235 1.8 christos {
1236 1.1 christos const char *fullname = symtab_to_fullname (sal.symtab);
1237 1.8 christos
1238 1.8 christos uiout->field_string ("fullname", fullname);
1239 1.8 christos }
1240 1.8 christos annotate_frame_source_file_end ();
1241 1.8 christos uiout->text (":");
1242 1.8 christos annotate_frame_source_line ();
1243 1.8 christos uiout->field_int ("line", sal.line);
1244 1.8 christos annotate_frame_source_end ();
1245 1.1 christos }
1246 1.8 christos
1247 1.8 christos if (pc_p && (funname == NULL || sal.symtab == NULL))
1248 1.8 christos {
1249 1.8 christos char *lib = solib_name_from_address (get_frame_program_space (frame),
1250 1.1 christos get_frame_pc (frame));
1251 1.8 christos
1252 1.8 christos if (lib)
1253 1.8 christos {
1254 1.8 christos annotate_frame_where ();
1255 1.8 christos uiout->wrap_hint (" ");
1256 1.8 christos uiout->text (" from ");
1257 1.8 christos uiout->field_string ("from", lib);
1258 1.8 christos }
1259 1.8 christos }
1260 1.8 christos if (uiout->is_mi_like_p ())
1261 1.8 christos uiout->field_string ("arch",
1262 1.8 christos (gdbarch_bfd_arch_info (gdbarch))->printable_name);
1263 1.1 christos }
1264 1.7 christos
1265 1.1 christos uiout->text ("\n");
1266 1.1 christos }
1267 1.1 christos
1268 1.8 christos
1270 1.1 christos /* Completion function for "frame function", "info frame function", and
1271 1.8 christos "select-frame function" commands. */
1272 1.8 christos
1273 1.8 christos void
1274 1.8 christos frame_selection_by_function_completer (struct cmd_list_element *ignore,
1275 1.8 christos completion_tracker &tracker,
1276 1.8 christos const char *text, const char *word)
1277 1.8 christos {
1278 1.8 christos /* This is used to complete function names within a stack. It would be
1279 1.8 christos nice if we only offered functions that were actually in the stack.
1280 1.8 christos However, this would mean unwinding the stack to completion, which
1281 1.8 christos could take too long, or on a corrupted stack, possibly not end.
1282 1.8 christos Instead, we offer all symbol names as a safer choice. */
1283 1.8 christos collect_symbol_completion_matches (tracker,
1284 1.8 christos complete_symbol_mode::EXPRESSION,
1285 1.8 christos symbol_name_match_type::EXPRESSION,
1286 1.8 christos text, word);
1287 1.8 christos }
1288 1.8 christos
1289 1.8 christos /* Core of all the "info frame" sub-commands. Print information about a
1290 1.8 christos frame FI. If SELECTED_FRAME_P is true then the user didn't provide a
1291 1.8 christos frame specification, they just entered 'info frame'. If the user did
1292 1.1 christos provide a frame specification (for example 'info frame 0', 'info frame
1293 1.1 christos level 1') then SELECTED_FRAME_P will be false. */
1294 1.8 christos
1295 1.1 christos static void
1296 1.1 christos info_frame_command_core (struct frame_info *fi, bool selected_frame_p)
1297 1.1 christos {
1298 1.1 christos struct symbol *func;
1299 1.1 christos struct symtab *s;
1300 1.1 christos struct frame_info *calling_frame_info;
1301 1.1 christos int numregs;
1302 1.1 christos const char *funname = 0;
1303 1.1 christos enum language funlang = language_unknown;
1304 1.1 christos const char *pc_regname;
1305 1.1 christos struct gdbarch *gdbarch;
1306 1.1 christos CORE_ADDR frame_pc;
1307 1.1 christos int frame_pc_p;
1308 1.5 christos /* Initialize it to avoid "may be used uninitialized" warning. */
1309 1.1 christos CORE_ADDR caller_pc = 0;
1310 1.1 christos int caller_pc_p = 0;
1311 1.1 christos
1312 1.1 christos gdbarch = get_frame_arch (fi);
1313 1.1 christos
1314 1.1 christos /* Name of the value returned by get_frame_pc(). Per comments, "pc"
1315 1.1 christos is not a good name. */
1316 1.1 christos if (gdbarch_pc_regnum (gdbarch) >= 0)
1317 1.1 christos /* OK, this is weird. The gdbarch_pc_regnum hardware register's value can
1318 1.1 christos easily not match that of the internal value returned by
1319 1.1 christos get_frame_pc(). */
1320 1.1 christos pc_regname = gdbarch_register_name (gdbarch, gdbarch_pc_regnum (gdbarch));
1321 1.1 christos else
1322 1.1 christos /* But then, this is weird to. Even without gdbarch_pc_regnum, an
1323 1.1 christos architectures will often have a hardware register called "pc",
1324 1.1 christos and that register's value, again, can easily not match
1325 1.1 christos get_frame_pc(). */
1326 1.1 christos pc_regname = "pc";
1327 1.1 christos
1328 1.8 christos frame_pc_p = get_frame_pc_if_available (fi, &frame_pc);
1329 1.1 christos func = get_frame_function (fi);
1330 1.8 christos symtab_and_line sal = find_frame_sal (fi);
1331 1.1 christos s = sal.symtab;
1332 1.1 christos gdb::unique_xmalloc_ptr<char> func_only;
1333 1.1 christos if (func)
1334 1.1 christos {
1335 1.1 christos funname = SYMBOL_PRINT_NAME (func);
1336 1.1 christos funlang = SYMBOL_LANGUAGE (func);
1337 1.1 christos if (funlang == language_cplus)
1338 1.1 christos {
1339 1.1 christos /* It seems appropriate to use SYMBOL_PRINT_NAME() here,
1340 1.1 christos to display the demangled name that we already have
1341 1.1 christos stored in the symbol table, but we stored a version
1342 1.8 christos with DMGL_PARAMS turned on, and here we don't want to
1343 1.1 christos display parameters. So remove the parameters. */
1344 1.1 christos func_only = cp_remove_params (funname);
1345 1.8 christos
1346 1.1 christos if (func_only)
1347 1.1 christos funname = func_only.get ();
1348 1.1 christos }
1349 1.1 christos }
1350 1.1 christos else if (frame_pc_p)
1351 1.1 christos {
1352 1.1 christos struct bound_minimal_symbol msymbol;
1353 1.1 christos
1354 1.1 christos msymbol = lookup_minimal_symbol_by_pc (frame_pc);
1355 1.3 christos if (msymbol.minsym != NULL)
1356 1.3 christos {
1357 1.1 christos funname = MSYMBOL_PRINT_NAME (msymbol.minsym);
1358 1.1 christos funlang = MSYMBOL_LANGUAGE (msymbol.minsym);
1359 1.1 christos }
1360 1.1 christos }
1361 1.1 christos calling_frame_info = get_prev_frame (fi);
1362 1.1 christos
1363 1.1 christos if (selected_frame_p && frame_relative_level (fi) >= 0)
1364 1.1 christos {
1365 1.1 christos printf_filtered (_("Stack level %d, frame at "),
1366 1.1 christos frame_relative_level (fi));
1367 1.1 christos }
1368 1.1 christos else
1369 1.1 christos {
1370 1.1 christos printf_filtered (_("Stack frame at "));
1371 1.1 christos }
1372 1.1 christos fputs_filtered (paddress (gdbarch, get_frame_base (fi)), gdb_stdout);
1373 1.1 christos printf_filtered (":\n");
1374 1.1 christos printf_filtered (" %s = ", pc_regname);
1375 1.1 christos if (frame_pc_p)
1376 1.1 christos fputs_filtered (paddress (gdbarch, get_frame_pc (fi)), gdb_stdout);
1377 1.1 christos else
1378 1.1 christos fputs_filtered ("<unavailable>", gdb_stdout);
1379 1.1 christos
1380 1.1 christos wrap_here (" ");
1381 1.1 christos if (funname)
1382 1.1 christos {
1383 1.1 christos printf_filtered (" in ");
1384 1.1 christos fprintf_symbol_filtered (gdb_stdout, funname, funlang,
1385 1.1 christos DMGL_ANSI | DMGL_PARAMS);
1386 1.1 christos }
1387 1.1 christos wrap_here (" ");
1388 1.1 christos if (sal.symtab)
1389 1.1 christos printf_filtered (" (%s:%d)", symtab_to_filename_for_display (sal.symtab),
1390 1.1 christos sal.line);
1391 1.1 christos puts_filtered ("; ");
1392 1.1 christos wrap_here (" ");
1393 1.6 christos printf_filtered ("saved %s = ", pc_regname);
1394 1.6 christos
1395 1.6 christos if (!frame_id_p (frame_unwind_caller_id (fi)))
1396 1.1 christos val_print_not_saved (gdb_stdout);
1397 1.6 christos else
1398 1.6 christos {
1399 1.6 christos TRY
1400 1.6 christos {
1401 1.6 christos caller_pc = frame_unwind_caller_pc (fi);
1402 1.6 christos caller_pc_p = 1;
1403 1.1 christos }
1404 1.6 christos CATCH (ex, RETURN_MASK_ERROR)
1405 1.6 christos {
1406 1.6 christos switch (ex.error)
1407 1.6 christos {
1408 1.6 christos case NOT_AVAILABLE_ERROR:
1409 1.6 christos val_print_unavailable (gdb_stdout);
1410 1.6 christos break;
1411 1.6 christos case OPTIMIZED_OUT_ERROR:
1412 1.6 christos val_print_not_saved (gdb_stdout);
1413 1.6 christos break;
1414 1.6 christos default:
1415 1.6 christos fprintf_filtered (gdb_stdout, _("<error: %s>"), ex.message);
1416 1.1 christos break;
1417 1.6 christos }
1418 1.1 christos }
1419 1.5 christos END_CATCH
1420 1.5 christos }
1421 1.1 christos
1422 1.1 christos if (caller_pc_p)
1423 1.1 christos fputs_filtered (paddress (gdbarch, caller_pc), gdb_stdout);
1424 1.1 christos printf_filtered ("\n");
1425 1.1 christos
1426 1.1 christos if (calling_frame_info == NULL)
1427 1.1 christos {
1428 1.1 christos enum unwind_stop_reason reason;
1429 1.1 christos
1430 1.1 christos reason = get_frame_unwind_stop_reason (fi);
1431 1.3 christos if (reason != UNWIND_NO_REASON)
1432 1.1 christos printf_filtered (_(" Outermost frame: %s\n"),
1433 1.1 christos frame_stop_reason_string (fi));
1434 1.1 christos }
1435 1.1 christos else if (get_frame_type (fi) == TAILCALL_FRAME)
1436 1.1 christos puts_filtered (" tail call frame");
1437 1.1 christos else if (get_frame_type (fi) == INLINE_FRAME)
1438 1.1 christos printf_filtered (" inlined into frame %d",
1439 1.1 christos frame_relative_level (get_prev_frame (fi)));
1440 1.1 christos else
1441 1.1 christos {
1442 1.1 christos printf_filtered (" called by frame at ");
1443 1.1 christos fputs_filtered (paddress (gdbarch, get_frame_base (calling_frame_info)),
1444 1.1 christos gdb_stdout);
1445 1.1 christos }
1446 1.1 christos if (get_next_frame (fi) && calling_frame_info)
1447 1.1 christos puts_filtered (",");
1448 1.1 christos wrap_here (" ");
1449 1.1 christos if (get_next_frame (fi))
1450 1.1 christos {
1451 1.1 christos printf_filtered (" caller of frame at ");
1452 1.1 christos fputs_filtered (paddress (gdbarch, get_frame_base (get_next_frame (fi))),
1453 1.1 christos gdb_stdout);
1454 1.1 christos }
1455 1.1 christos if (get_next_frame (fi) || calling_frame_info)
1456 1.1 christos puts_filtered ("\n");
1457 1.1 christos
1458 1.1 christos if (s)
1459 1.1 christos printf_filtered (" source language %s.\n",
1460 1.1 christos language_str (s->language));
1461 1.1 christos
1462 1.1 christos {
1463 1.1 christos /* Address of the argument list for this frame, or 0. */
1464 1.1 christos CORE_ADDR arg_list = get_frame_args_address (fi);
1465 1.1 christos /* Number of args for this frame, or -1 if unknown. */
1466 1.1 christos int numargs;
1467 1.1 christos
1468 1.1 christos if (arg_list == 0)
1469 1.1 christos printf_filtered (" Arglist at unknown address.\n");
1470 1.1 christos else
1471 1.1 christos {
1472 1.1 christos printf_filtered (" Arglist at ");
1473 1.1 christos fputs_filtered (paddress (gdbarch, arg_list), gdb_stdout);
1474 1.1 christos printf_filtered (",");
1475 1.1 christos
1476 1.1 christos if (!gdbarch_frame_num_args_p (gdbarch))
1477 1.1 christos {
1478 1.1 christos numargs = -1;
1479 1.1 christos puts_filtered (" args: ");
1480 1.1 christos }
1481 1.1 christos else
1482 1.1 christos {
1483 1.1 christos numargs = gdbarch_frame_num_args (gdbarch, fi);
1484 1.1 christos gdb_assert (numargs >= 0);
1485 1.1 christos if (numargs == 0)
1486 1.1 christos puts_filtered (" no args.");
1487 1.1 christos else if (numargs == 1)
1488 1.1 christos puts_filtered (" 1 arg: ");
1489 1.1 christos else
1490 1.1 christos printf_filtered (" %d args: ", numargs);
1491 1.1 christos }
1492 1.1 christos print_frame_args (func, fi, numargs, gdb_stdout);
1493 1.1 christos puts_filtered ("\n");
1494 1.1 christos }
1495 1.1 christos }
1496 1.1 christos {
1497 1.1 christos /* Address of the local variables for this frame, or 0. */
1498 1.1 christos CORE_ADDR arg_list = get_frame_locals_address (fi);
1499 1.1 christos
1500 1.1 christos if (arg_list == 0)
1501 1.1 christos printf_filtered (" Locals at unknown address,");
1502 1.1 christos else
1503 1.1 christos {
1504 1.1 christos printf_filtered (" Locals at ");
1505 1.1 christos fputs_filtered (paddress (gdbarch, arg_list), gdb_stdout);
1506 1.1 christos printf_filtered (",");
1507 1.1 christos }
1508 1.1 christos }
1509 1.1 christos
1510 1.1 christos /* Print as much information as possible on the location of all the
1511 1.1 christos registers. */
1512 1.1 christos {
1513 1.1 christos int count;
1514 1.7 christos int i;
1515 1.1 christos int need_nl = 1;
1516 1.1 christos int sp_regnum = gdbarch_sp_regnum (gdbarch);
1517 1.1 christos
1518 1.1 christos /* The sp is special; what's displayed isn't the save address, but
1519 1.1 christos the value of the previous frame's sp. This is a legacy thing,
1520 1.1 christos at one stage the frame cached the previous frame's SP instead
1521 1.7 christos of its address, hence it was easiest to just display the cached
1522 1.1 christos value. */
1523 1.7 christos if (sp_regnum >= 0)
1524 1.7 christos {
1525 1.7 christos struct value *value = frame_unwind_register_value (fi, sp_regnum);
1526 1.7 christos gdb_assert (value != NULL);
1527 1.1 christos
1528 1.7 christos if (!value_optimized_out (value) && value_entirely_available (value))
1529 1.7 christos {
1530 1.7 christos if (VALUE_LVAL (value) == not_lval)
1531 1.7 christos {
1532 1.7 christos CORE_ADDR sp;
1533 1.7 christos enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
1534 1.7 christos int sp_size = register_size (gdbarch, sp_regnum);
1535 1.7 christos
1536 1.7 christos sp = extract_unsigned_integer (value_contents_all (value),
1537 1.7 christos sp_size, byte_order);
1538 1.7 christos
1539 1.7 christos printf_filtered (" Previous frame's sp is ");
1540 1.7 christos fputs_filtered (paddress (gdbarch, sp), gdb_stdout);
1541 1.7 christos printf_filtered ("\n");
1542 1.7 christos }
1543 1.7 christos else if (VALUE_LVAL (value) == lval_memory)
1544 1.7 christos {
1545 1.7 christos printf_filtered (" Previous frame's sp at ");
1546 1.7 christos fputs_filtered (paddress (gdbarch, value_address (value)),
1547 1.7 christos gdb_stdout);
1548 1.7 christos printf_filtered ("\n");
1549 1.7 christos }
1550 1.7 christos else if (VALUE_LVAL (value) == lval_register)
1551 1.7 christos {
1552 1.7 christos printf_filtered (" Previous frame's sp in %s\n",
1553 1.7 christos gdbarch_register_name (gdbarch,
1554 1.7 christos VALUE_REGNUM (value)));
1555 1.7 christos }
1556 1.1 christos
1557 1.1 christos release_value (value);
1558 1.1 christos need_nl = 0;
1559 1.1 christos }
1560 1.1 christos /* else keep quiet. */
1561 1.1 christos }
1562 1.8 christos
1563 1.1 christos count = 0;
1564 1.7 christos numregs = gdbarch_num_cooked_regs (gdbarch);
1565 1.1 christos for (i = 0; i < numregs; i++)
1566 1.1 christos if (i != sp_regnum
1567 1.7 christos && gdbarch_register_reggroup_p (gdbarch, i, all_reggroup))
1568 1.7 christos {
1569 1.7 christos enum lval_type lval;
1570 1.7 christos int optimized;
1571 1.7 christos int unavailable;
1572 1.7 christos CORE_ADDR addr;
1573 1.1 christos int realnum;
1574 1.1 christos
1575 1.1 christos /* Find out the location of the saved register without
1576 1.1 christos fetching the corresponding value. */
1577 1.1 christos frame_register_unwind (fi, i, &optimized, &unavailable,
1578 1.1 christos &lval, &addr, &realnum, NULL);
1579 1.1 christos /* For moment, only display registers that were saved on the
1580 1.1 christos stack. */
1581 1.1 christos if (!optimized && !unavailable && lval == lval_memory)
1582 1.1 christos {
1583 1.1 christos if (count == 0)
1584 1.1 christos puts_filtered (" Saved registers:\n ");
1585 1.1 christos else
1586 1.1 christos puts_filtered (",");
1587 1.1 christos wrap_here (" ");
1588 1.1 christos printf_filtered (" %s at ",
1589 1.1 christos gdbarch_register_name (gdbarch, i));
1590 1.1 christos fputs_filtered (paddress (gdbarch, addr), gdb_stdout);
1591 1.1 christos count++;
1592 1.1 christos }
1593 1.1 christos }
1594 1.1 christos if (count || need_nl)
1595 1.8 christos puts_filtered ("\n");
1596 1.8 christos }
1597 1.8 christos }
1598 1.8 christos
1599 1.8 christos /* Return the innermost frame at level LEVEL. */
1600 1.8 christos
1601 1.8 christos static struct frame_info *
1602 1.8 christos leading_innermost_frame (int level)
1603 1.8 christos {
1604 1.8 christos struct frame_info *leading;
1605 1.8 christos
1606 1.8 christos leading = get_current_frame ();
1607 1.8 christos
1608 1.8 christos gdb_assert (level >= 0);
1609 1.8 christos
1610 1.8 christos while (leading != nullptr && level)
1611 1.8 christos {
1612 1.8 christos QUIT;
1613 1.8 christos leading = get_prev_frame (leading);
1614 1.8 christos level--;
1615 1.8 christos }
1616 1.8 christos
1617 1.8 christos return leading;
1618 1.8 christos }
1619 1.8 christos
1620 1.8 christos /* Return the starting frame needed to handle COUNT outermost frames. */
1621 1.8 christos
1622 1.8 christos static struct frame_info *
1623 1.8 christos trailing_outermost_frame (int count)
1624 1.8 christos {
1625 1.8 christos struct frame_info *current;
1626 1.8 christos struct frame_info *trailing;
1627 1.8 christos
1628 1.8 christos trailing = get_current_frame ();
1629 1.8 christos
1630 1.8 christos gdb_assert (count > 0);
1631 1.8 christos
1632 1.8 christos current = trailing;
1633 1.8 christos while (current != nullptr && count--)
1634 1.8 christos {
1635 1.8 christos QUIT;
1636 1.8 christos current = get_prev_frame (current);
1637 1.8 christos }
1638 1.8 christos
1639 1.8 christos /* Will stop when CURRENT reaches the top of the stack.
1640 1.8 christos TRAILING will be COUNT below it. */
1641 1.8 christos while (current != nullptr)
1642 1.8 christos {
1643 1.8 christos QUIT;
1644 1.8 christos trailing = get_prev_frame (trailing);
1645 1.8 christos current = get_prev_frame (current);
1646 1.8 christos }
1647 1.8 christos
1648 1.8 christos return trailing;
1649 1.8 christos }
1650 1.8 christos
1651 1.8 christos /* The core of all the "select-frame" sub-commands. Just wraps a call to
1652 1.8 christos SELECT_FRAME. */
1653 1.8 christos
1654 1.8 christos static void
1655 1.8 christos select_frame_command_core (struct frame_info *fi, bool ignored)
1656 1.8 christos {
1657 1.8 christos struct frame_info *prev_frame = get_selected_frame_if_set ();
1658 1.8 christos select_frame (fi);
1659 1.8 christos if (get_selected_frame_if_set () != prev_frame)
1660 1.8 christos gdb::observers::user_selected_context_changed.notify (USER_SELECTED_FRAME);
1661 1.8 christos }
1662 1.8 christos
1663 1.8 christos /* See stack.h. */
1664 1.8 christos
1665 1.8 christos void
1666 1.8 christos select_frame_for_mi (struct frame_info *fi)
1667 1.8 christos {
1668 1.1 christos select_frame_command_core (fi, FALSE /* Ignored. */);
1669 1.8 christos }
1670 1.8 christos
1671 1.8 christos /* The core of all the "frame" sub-commands. Select frame FI, and if this
1672 1.8 christos means we change frame send out a change notification (otherwise, just
1673 1.8 christos reprint the current frame summary). */
1674 1.8 christos
1675 1.8 christos static void
1676 1.8 christos frame_command_core (struct frame_info *fi, bool ignored)
1677 1.8 christos {
1678 1.8 christos struct frame_info *prev_frame = get_selected_frame_if_set ();
1679 1.8 christos
1680 1.8 christos select_frame (fi);
1681 1.8 christos if (get_selected_frame_if_set () != prev_frame)
1682 1.8 christos gdb::observers::user_selected_context_changed.notify (USER_SELECTED_FRAME);
1683 1.1 christos else
1684 1.1 christos print_selected_thread_frame (current_uiout, USER_SELECTED_FRAME);
1685 1.8 christos }
1686 1.8 christos
1687 1.8 christos /* The three commands 'frame', 'select-frame', and 'info frame' all have a
1688 1.8 christos common set of sub-commands that allow a specific frame to be selected.
1689 1.8 christos All of the sub-command functions are static methods within this class
1690 1.8 christos template which is then instantiated below. The template parameter is a
1691 1.8 christos callback used to implement the functionality of the base command
1692 1.8 christos ('frame', 'select-frame', or 'info frame').
1693 1.8 christos
1694 1.8 christos In the template parameter FI is the frame being selected. The
1695 1.8 christos SELECTED_FRAME_P flag is true if the frame being selected was done by
1696 1.8 christos default, which happens when the user uses the base command with no
1697 1.8 christos arguments. For example the commands 'info frame', 'select-frame',
1698 1.8 christos 'frame' will all cause SELECTED_FRAME_P to be true. In all other cases
1699 1.8 christos SELECTED_FRAME_P is false. */
1700 1.8 christos
1701 1.8 christos template <void (*FPTR) (struct frame_info *fi, bool selected_frame_p)>
1702 1.8 christos class frame_command_helper
1703 1.8 christos {
1704 1.8 christos public:
1705 1.8 christos
1706 1.8 christos /* The "frame level" family of commands. The ARG is an integer that is
1707 1.8 christos the frame's level in the stack. */
1708 1.8 christos static void
1709 1.8 christos level (const char *arg, int from_tty)
1710 1.8 christos {
1711 1.8 christos int level = value_as_long (parse_and_eval (arg));
1712 1.8 christos struct frame_info *fid
1713 1.8 christos = find_relative_frame (get_current_frame (), &level);
1714 1.8 christos if (level != 0)
1715 1.8 christos error (_("No frame at level %s."), arg);
1716 1.8 christos FPTR (fid, false);
1717 1.8 christos }
1718 1.8 christos
1719 1.8 christos /* The "frame address" family of commands. ARG is a stack-pointer
1720 1.8 christos address for an existing frame. This command does not allow new
1721 1.8 christos frames to be created. */
1722 1.8 christos
1723 1.8 christos static void
1724 1.8 christos address (const char *arg, int from_tty)
1725 1.8 christos {
1726 1.8 christos CORE_ADDR addr = value_as_address (parse_and_eval (arg));
1727 1.8 christos struct frame_info *fid = find_frame_for_address (addr);
1728 1.8 christos if (fid == NULL)
1729 1.8 christos error (_("No frame at address %s."), arg);
1730 1.8 christos FPTR (fid, false);
1731 1.8 christos }
1732 1.8 christos
1733 1.8 christos /* The "frame view" family of commands. ARG is one or two addresses and
1734 1.8 christos is used to view a frame that might be outside the current backtrace.
1735 1.8 christos The addresses are stack-pointer address, and (optional) pc-address. */
1736 1.8 christos
1737 1.8 christos static void
1738 1.8 christos view (const char *args, int from_tty)
1739 1.8 christos {
1740 1.8 christos struct frame_info *fid;
1741 1.8 christos
1742 1.8 christos if (args == NULL)
1743 1.8 christos error (_("Missing address argument to view a frame"));
1744 1.8 christos
1745 1.8 christos gdb_argv argv (args);
1746 1.8 christos
1747 1.8 christos if (argv.count () == 2)
1748 1.8 christos {
1749 1.8 christos CORE_ADDR addr[2];
1750 1.8 christos
1751 1.8 christos addr [0] = value_as_address (parse_and_eval (argv[0]));
1752 1.8 christos addr [1] = value_as_address (parse_and_eval (argv[1]));
1753 1.8 christos fid = create_new_frame (addr[0], addr[1]);
1754 1.8 christos }
1755 1.8 christos else
1756 1.8 christos {
1757 1.8 christos CORE_ADDR addr = value_as_address (parse_and_eval (argv[0]));
1758 1.8 christos fid = create_new_frame (addr, false);
1759 1.8 christos }
1760 1.8 christos FPTR (fid, false);
1761 1.8 christos }
1762 1.8 christos
1763 1.8 christos /* The "frame function" family of commands. ARG is the name of a
1764 1.8 christos function within the stack, the first function (searching from frame
1765 1.8 christos 0) with that name will be selected. */
1766 1.8 christos
1767 1.8 christos static void
1768 1.8 christos function (const char *arg, int from_tty)
1769 1.8 christos {
1770 1.8 christos if (arg == NULL)
1771 1.8 christos error (_("Missing function name argument"));
1772 1.8 christos struct frame_info *fid = find_frame_for_function (arg);
1773 1.8 christos if (fid == NULL)
1774 1.8 christos error (_("No frame for function \"%s\"."), arg);
1775 1.8 christos FPTR (fid, false);
1776 1.8 christos }
1777 1.8 christos
1778 1.8 christos /* The "frame" base command, that is, when no sub-command is specified.
1779 1.8 christos If one argument is provided then we assume that this is a frame's
1780 1.8 christos level as historically, this was the supported command syntax that was
1781 1.8 christos used most often.
1782 1.8 christos
1783 1.8 christos If no argument is provided, then the current frame is selected. */
1784 1.8 christos
1785 1.8 christos static void
1786 1.8 christos base_command (const char *arg, int from_tty)
1787 1.8 christos {
1788 1.8 christos if (arg == NULL)
1789 1.8 christos FPTR (get_selected_frame (_("No stack.")), true);
1790 1.8 christos else
1791 1.8 christos level (arg, from_tty);
1792 1.8 christos }
1793 1.8 christos };
1794 1.8 christos
1795 1.8 christos /* Instantiate three FRAME_COMMAND_HELPER instances to implement the
1796 1.8 christos sub-commands for 'info frame', 'frame', and 'select-frame' commands. */
1797 1.8 christos
1798 1.8 christos static frame_command_helper <info_frame_command_core> info_frame_cmd;
1799 1.8 christos static frame_command_helper <frame_command_core> frame_cmd;
1800 1.1 christos static frame_command_helper <select_frame_command_core> select_frame_cmd;
1801 1.1 christos
1802 1.1 christos /* Print briefly all stack frames or just the innermost COUNT_EXP
1803 1.1 christos frames. */
1804 1.8 christos
1805 1.8 christos static void
1806 1.1 christos backtrace_command_1 (const char *count_exp, frame_filter_flags flags,
1807 1.1 christos int no_filters, int from_tty)
1808 1.1 christos {
1809 1.8 christos struct frame_info *fi;
1810 1.3 christos int count;
1811 1.1 christos int py_start = 0, py_end = 0;
1812 1.1 christos enum ext_lang_bt_status result = EXT_LANG_BT_ERROR;
1813 1.1 christos
1814 1.1 christos if (!target_has_stack)
1815 1.1 christos error (_("No stack."));
1816 1.1 christos
1817 1.1 christos if (count_exp)
1818 1.1 christos {
1819 1.8 christos count = parse_and_eval_long (count_exp);
1820 1.1 christos if (count < 0)
1821 1.1 christos py_start = count;
1822 1.1 christos else
1823 1.8 christos {
1824 1.8 christos py_start = 0;
1825 1.8 christos /* The argument to apply_ext_lang_frame_filter is the number
1826 1.1 christos of the final frame to print, and frames start at 0. */
1827 1.1 christos py_end = count - 1;
1828 1.1 christos }
1829 1.1 christos }
1830 1.1 christos else
1831 1.1 christos {
1832 1.1 christos py_end = -1;
1833 1.1 christos count = -1;
1834 1.1 christos }
1835 1.1 christos
1836 1.3 christos if (! no_filters)
1837 1.1 christos {
1838 1.8 christos enum ext_lang_frame_args arg_type;
1839 1.8 christos
1840 1.8 christos flags |= PRINT_LEVEL | PRINT_FRAME_INFO | PRINT_ARGS;
1841 1.1 christos if (from_tty)
1842 1.1 christos flags |= PRINT_MORE_FRAMES;
1843 1.1 christos
1844 1.1 christos if (!strcmp (print_frame_arguments, "scalars"))
1845 1.1 christos arg_type = CLI_SCALAR_VALUES;
1846 1.1 christos else if (!strcmp (print_frame_arguments, "all"))
1847 1.1 christos arg_type = CLI_ALL_VALUES;
1848 1.1 christos else
1849 1.3 christos arg_type = NO_VALUES;
1850 1.3 christos
1851 1.3 christos result = apply_ext_lang_frame_filter (get_current_frame (), flags,
1852 1.3 christos arg_type, current_uiout,
1853 1.1 christos py_start, py_end);
1854 1.1 christos }
1855 1.1 christos
1856 1.3 christos /* Run the inbuilt backtrace if there are no filters registered, or
1857 1.1 christos "no-filters" has been specified from the command. */
1858 1.8 christos if (no_filters || result == EXT_LANG_BT_NO_FILTERS)
1859 1.8 christos {
1860 1.8 christos struct frame_info *trailing;
1861 1.8 christos
1862 1.8 christos /* The following code must do two things. First, it must set the
1863 1.8 christos variable TRAILING to the frame from which we should start
1864 1.8 christos printing. Second, it must set the variable count to the number
1865 1.8 christos of frames which we should print, or -1 if all of them. */
1866 1.8 christos
1867 1.8 christos if (count_exp != NULL && count < 0)
1868 1.8 christos {
1869 1.8 christos trailing = trailing_outermost_frame (-count);
1870 1.8 christos count = -1;
1871 1.8 christos }
1872 1.8 christos else
1873 1.8 christos trailing = get_current_frame ();
1874 1.1 christos
1875 1.1 christos for (fi = trailing; fi && count--; fi = get_prev_frame (fi))
1876 1.1 christos {
1877 1.1 christos QUIT;
1878 1.1 christos
1879 1.1 christos /* Don't use print_stack_frame; if an error() occurs it probably
1880 1.1 christos means further attempts to backtrace would fail (on the other
1881 1.1 christos hand, perhaps the code does or could be fixed to make sure
1882 1.1 christos the frame->prev field gets set to NULL in that case). */
1883 1.8 christos
1884 1.1 christos print_frame_info (fi, 1, LOCATION, 1, 0);
1885 1.1 christos if ((flags & PRINT_LOCALS) != 0)
1886 1.1 christos {
1887 1.8 christos struct frame_id frame_id = get_frame_id (fi);
1888 1.1 christos
1889 1.1 christos print_frame_local_vars (fi, false, NULL, NULL, 1, gdb_stdout);
1890 1.1 christos
1891 1.1 christos /* print_frame_local_vars invalidates FI. */
1892 1.1 christos fi = frame_find_by_id (frame_id);
1893 1.1 christos if (fi == NULL)
1894 1.1 christos {
1895 1.1 christos trailing = NULL;
1896 1.1 christos warning (_("Unable to restore previously selected frame."));
1897 1.1 christos break;
1898 1.1 christos }
1899 1.1 christos }
1900 1.1 christos
1901 1.1 christos /* Save the last frame to check for error conditions. */
1902 1.1 christos trailing = fi;
1903 1.1 christos }
1904 1.1 christos
1905 1.1 christos /* If we've stopped before the end, mention that. */
1906 1.1 christos if (fi && from_tty)
1907 1.1 christos printf_filtered (_("(More stack frames follow...)\n"));
1908 1.1 christos
1909 1.1 christos /* If we've run out of frames, and the reason appears to be an error
1910 1.1 christos condition, print it. */
1911 1.1 christos if (fi == NULL && trailing != NULL)
1912 1.1 christos {
1913 1.1 christos enum unwind_stop_reason reason;
1914 1.1 christos
1915 1.1 christos reason = get_frame_unwind_stop_reason (trailing);
1916 1.3 christos if (reason >= UNWIND_FIRST_ERROR)
1917 1.1 christos printf_filtered (_("Backtrace stopped: %s\n"),
1918 1.1 christos frame_stop_reason_string (trailing));
1919 1.1 christos }
1920 1.1 christos }
1921 1.1 christos }
1922 1.8 christos
1923 1.1 christos static void
1924 1.8 christos backtrace_command (const char *arg, int from_tty)
1925 1.8 christos {
1926 1.1 christos bool filters = true;
1927 1.1 christos frame_filter_flags flags = 0;
1928 1.1 christos
1929 1.8 christos if (arg)
1930 1.1 christos {
1931 1.8 christos bool done = false;
1932 1.1 christos
1933 1.8 christos while (!done)
1934 1.8 christos {
1935 1.1 christos const char *save_arg = arg;
1936 1.8 christos std::string this_arg = extract_arg (&arg);
1937 1.8 christos
1938 1.1 christos if (this_arg.empty ())
1939 1.8 christos break;
1940 1.8 christos
1941 1.8 christos if (subset_compare (this_arg.c_str (), "no-filters"))
1942 1.8 christos filters = false;
1943 1.8 christos else if (subset_compare (this_arg.c_str (), "full"))
1944 1.8 christos flags |= PRINT_LOCALS;
1945 1.1 christos else if (subset_compare (this_arg.c_str (), "hide"))
1946 1.1 christos flags |= PRINT_HIDE;
1947 1.8 christos else
1948 1.8 christos {
1949 1.8 christos /* Not a recognized argument, so stop. */
1950 1.1 christos arg = save_arg;
1951 1.1 christos done = true;
1952 1.8 christos }
1953 1.8 christos }
1954 1.8 christos
1955 1.1 christos if (*arg == '\0')
1956 1.1 christos arg = NULL;
1957 1.8 christos }
1958 1.1 christos
1959 1.1 christos backtrace_command_1 (arg, flags, !filters /* no frame-filters */, from_tty);
1960 1.1 christos }
1961 1.1 christos
1962 1.1 christos /* Iterate over the local variables of a block B, calling CB with
1963 1.1 christos CB_DATA. */
1964 1.3 christos
1965 1.1 christos static void
1966 1.1 christos iterate_over_block_locals (const struct block *b,
1967 1.1 christos iterate_over_block_arg_local_vars_cb cb,
1968 1.1 christos void *cb_data)
1969 1.1 christos {
1970 1.1 christos struct block_iterator iter;
1971 1.1 christos struct symbol *sym;
1972 1.1 christos
1973 1.1 christos ALL_BLOCK_SYMBOLS (b, iter, sym)
1974 1.1 christos {
1975 1.1 christos switch (SYMBOL_CLASS (sym))
1976 1.1 christos {
1977 1.1 christos case LOC_LOCAL:
1978 1.1 christos case LOC_REGISTER:
1979 1.8 christos case LOC_STATIC:
1980 1.1 christos case LOC_COMPUTED:
1981 1.1 christos case LOC_OPTIMIZED_OUT:
1982 1.1 christos if (SYMBOL_IS_ARGUMENT (sym))
1983 1.1 christos break;
1984 1.1 christos if (SYMBOL_DOMAIN (sym) == COMMON_BLOCK_DOMAIN)
1985 1.1 christos break;
1986 1.1 christos (*cb) (SYMBOL_PRINT_NAME (sym), sym, cb_data);
1987 1.1 christos break;
1988 1.1 christos
1989 1.1 christos default:
1990 1.1 christos /* Ignore symbols which are not locals. */
1991 1.1 christos break;
1992 1.1 christos }
1993 1.1 christos }
1994 1.1 christos }
1995 1.1 christos
1996 1.1 christos
1997 1.1 christos /* Same, but print labels. */
1998 1.1 christos
1999 1.1 christos #if 0
2000 1.1 christos /* Commented out, as the code using this function has also been
2001 1.1 christos commented out. FIXME:brobecker/2009-01-13: Find out why the code
2002 1.1 christos was commented out in the first place. The discussion introducing
2003 1.1 christos this change (2007-12-04: Support lexical blocks and function bodies
2004 1.1 christos that occupy non-contiguous address ranges) did not explain why
2005 1.1 christos this change was made. */
2006 1.1 christos static int
2007 1.1 christos print_block_frame_labels (struct gdbarch *gdbarch, struct block *b,
2008 1.1 christos int *have_default, struct ui_file *stream)
2009 1.1 christos {
2010 1.1 christos struct block_iterator iter;
2011 1.1 christos struct symbol *sym;
2012 1.1 christos int values_printed = 0;
2013 1.1 christos
2014 1.1 christos ALL_BLOCK_SYMBOLS (b, iter, sym)
2015 1.1 christos {
2016 1.1 christos if (strcmp (SYMBOL_LINKAGE_NAME (sym), "default") == 0)
2017 1.1 christos {
2018 1.1 christos if (*have_default)
2019 1.1 christos continue;
2020 1.1 christos *have_default = 1;
2021 1.1 christos }
2022 1.1 christos if (SYMBOL_CLASS (sym) == LOC_LABEL)
2023 1.1 christos {
2024 1.1 christos struct symtab_and_line sal;
2025 1.1 christos struct value_print_options opts;
2026 1.1 christos
2027 1.1 christos sal = find_pc_line (SYMBOL_VALUE_ADDRESS (sym), 0);
2028 1.1 christos values_printed = 1;
2029 1.1 christos fputs_filtered (SYMBOL_PRINT_NAME (sym), stream);
2030 1.1 christos get_user_print_options (&opts);
2031 1.1 christos if (opts.addressprint)
2032 1.1 christos {
2033 1.1 christos fprintf_filtered (stream, " ");
2034 1.1 christos fputs_filtered (paddress (gdbarch, SYMBOL_VALUE_ADDRESS (sym)),
2035 1.1 christos stream);
2036 1.1 christos }
2037 1.1 christos fprintf_filtered (stream, " in file %s, line %d\n",
2038 1.1 christos sal.symtab->filename, sal.line);
2039 1.1 christos }
2040 1.1 christos }
2041 1.1 christos
2042 1.1 christos return values_printed;
2043 1.1 christos }
2044 1.1 christos #endif
2045 1.1 christos
2046 1.1 christos /* Iterate over all the local variables in block B, including all its
2047 1.1 christos superblocks, stopping when the top-level block is reached. */
2048 1.3 christos
2049 1.1 christos void
2050 1.1 christos iterate_over_block_local_vars (const struct block *block,
2051 1.1 christos iterate_over_block_arg_local_vars_cb cb,
2052 1.1 christos void *cb_data)
2053 1.1 christos {
2054 1.1 christos while (block)
2055 1.1 christos {
2056 1.1 christos iterate_over_block_locals (block, cb, cb_data);
2057 1.1 christos /* After handling the function's top-level block, stop. Don't
2058 1.1 christos continue to its superblock, the block of per-file
2059 1.1 christos symbols. */
2060 1.1 christos if (BLOCK_FUNCTION (block))
2061 1.1 christos break;
2062 1.1 christos block = BLOCK_SUPERBLOCK (block);
2063 1.1 christos }
2064 1.1 christos }
2065 1.1 christos
2066 1.1 christos /* Data to be passed around in the calls to the locals and args
2067 1.1 christos iterators. */
2068 1.1 christos
2069 1.8 christos struct print_variable_and_value_data
2070 1.8 christos {
2071 1.1 christos gdb::optional<compiled_regex> preg;
2072 1.1 christos gdb::optional<compiled_regex> treg;
2073 1.1 christos struct frame_id frame_id;
2074 1.1 christos int num_tabs;
2075 1.1 christos struct ui_file *stream;
2076 1.1 christos int values_printed;
2077 1.1 christos };
2078 1.1 christos
2079 1.1 christos /* The callback for the locals and args iterators. */
2080 1.1 christos
2081 1.1 christos static void
2082 1.1 christos do_print_variable_and_value (const char *print_name,
2083 1.1 christos struct symbol *sym,
2084 1.6 christos void *cb_data)
2085 1.6 christos {
2086 1.1 christos struct print_variable_and_value_data *p
2087 1.1 christos = (struct print_variable_and_value_data *) cb_data;
2088 1.8 christos struct frame_info *frame;
2089 1.8 christos
2090 1.8 christos if (p->preg.has_value ()
2091 1.8 christos && p->preg->exec (SYMBOL_NATURAL_NAME (sym), 0,
2092 1.8 christos NULL, 0) != 0)
2093 1.8 christos return;
2094 1.8 christos if (p->treg.has_value ()
2095 1.8 christos && !treg_matches_sym_type_name (*p->treg, sym))
2096 1.1 christos return;
2097 1.1 christos
2098 1.1 christos frame = frame_find_by_id (p->frame_id);
2099 1.1 christos if (frame == NULL)
2100 1.1 christos {
2101 1.1 christos warning (_("Unable to restore previously selected frame."));
2102 1.1 christos return;
2103 1.1 christos }
2104 1.1 christos
2105 1.1 christos print_variable_and_value (print_name, sym, frame, p->stream, p->num_tabs);
2106 1.1 christos
2107 1.1 christos /* print_variable_and_value invalidates FRAME. */
2108 1.1 christos frame = NULL;
2109 1.1 christos
2110 1.1 christos p->values_printed = 1;
2111 1.8 christos }
2112 1.8 christos
2113 1.8 christos /* Prepares the regular expression REG from REGEXP.
2114 1.8 christos If REGEXP is NULL, it results in an empty regular expression. */
2115 1.8 christos
2116 1.8 christos static void
2117 1.8 christos prepare_reg (const char *regexp, gdb::optional<compiled_regex> *reg)
2118 1.8 christos {
2119 1.8 christos if (regexp != NULL)
2120 1.8 christos {
2121 1.8 christos int cflags = REG_NOSUB | (case_sensitivity == case_sensitive_off
2122 1.8 christos ? REG_ICASE : 0);
2123 1.8 christos reg->emplace (regexp, cflags, _("Invalid regexp"));
2124 1.8 christos }
2125 1.8 christos else
2126 1.8 christos reg->reset ();
2127 1.1 christos }
2128 1.1 christos
2129 1.8 christos /* Print all variables from the innermost up to the function block of FRAME.
2130 1.8 christos Print them with values to STREAM indented by NUM_TABS.
2131 1.8 christos If REGEXP is not NULL, only print local variables whose name
2132 1.8 christos matches REGEXP.
2133 1.8 christos If T_REGEXP is not NULL, only print local variables whose type
2134 1.8 christos matches T_REGEXP.
2135 1.1 christos If no local variables have been printed and !QUIET, prints a message
2136 1.1 christos explaining why no local variables could be printed.
2137 1.1 christos
2138 1.1 christos This function will invalidate FRAME. */
2139 1.8 christos
2140 1.8 christos static void
2141 1.8 christos print_frame_local_vars (struct frame_info *frame,
2142 1.8 christos bool quiet,
2143 1.1 christos const char *regexp, const char *t_regexp,
2144 1.1 christos int num_tabs, struct ui_file *stream)
2145 1.3 christos {
2146 1.1 christos struct print_variable_and_value_data cb_data;
2147 1.1 christos const struct block *block;
2148 1.1 christos CORE_ADDR pc;
2149 1.1 christos
2150 1.8 christos if (!get_frame_pc_if_available (frame, &pc))
2151 1.8 christos {
2152 1.8 christos if (!quiet)
2153 1.1 christos fprintf_filtered (stream,
2154 1.1 christos _("PC unavailable, cannot determine locals.\n"));
2155 1.1 christos return;
2156 1.1 christos }
2157 1.1 christos
2158 1.1 christos block = get_frame_block (frame, 0);
2159 1.8 christos if (block == 0)
2160 1.8 christos {
2161 1.1 christos if (!quiet)
2162 1.1 christos fprintf_filtered (stream, "No symbol table info available.\n");
2163 1.1 christos return;
2164 1.8 christos }
2165 1.8 christos
2166 1.1 christos prepare_reg (regexp, &cb_data.preg);
2167 1.1 christos prepare_reg (t_regexp, &cb_data.treg);
2168 1.1 christos cb_data.frame_id = get_frame_id (frame);
2169 1.1 christos cb_data.num_tabs = 4 * num_tabs;
2170 1.1 christos cb_data.stream = stream;
2171 1.6 christos cb_data.values_printed = 0;
2172 1.6 christos
2173 1.6 christos /* Temporarily change the selected frame to the given FRAME.
2174 1.8 christos This allows routines that rely on the selected frame instead
2175 1.6 christos of being given a frame as parameter to use the correct frame. */
2176 1.6 christos scoped_restore_selected_frame restore_selected_frame;
2177 1.8 christos select_frame (frame);
2178 1.8 christos
2179 1.8 christos iterate_over_block_local_vars (block,
2180 1.8 christos do_print_variable_and_value,
2181 1.8 christos &cb_data);
2182 1.6 christos
2183 1.8 christos if (!cb_data.values_printed && !quiet)
2184 1.8 christos {
2185 1.8 christos if (regexp == NULL && t_regexp == NULL)
2186 1.8 christos fprintf_filtered (stream, _("No locals.\n"));
2187 1.6 christos else
2188 1.1 christos fprintf_filtered (stream, _("No matching locals.\n"));
2189 1.1 christos }
2190 1.1 christos }
2191 1.8 christos
2192 1.1 christos void
2193 1.8 christos info_locals_command (const char *args, int from_tty)
2194 1.8 christos {
2195 1.8 christos std::string regexp;
2196 1.8 christos std::string t_regexp;
2197 1.8 christos bool quiet = false;
2198 1.8 christos
2199 1.8 christos while (args != NULL
2200 1.8 christos && extract_info_print_args (&args, &quiet, ®exp, &t_regexp))
2201 1.8 christos ;
2202 1.8 christos
2203 1.8 christos if (args != NULL)
2204 1.1 christos report_unrecognized_option_error ("info locals", args);
2205 1.8 christos
2206 1.8 christos print_frame_local_vars (get_selected_frame (_("No frame selected.")),
2207 1.8 christos quiet,
2208 1.1 christos regexp.empty () ? NULL : regexp.c_str (),
2209 1.1 christos t_regexp.empty () ? NULL : t_regexp.c_str (),
2210 1.1 christos 0, gdb_stdout);
2211 1.8 christos }
2212 1.1 christos
2213 1.1 christos /* Iterate over all the argument variables in block B. */
2214 1.3 christos
2215 1.1 christos void
2216 1.1 christos iterate_over_block_arg_vars (const struct block *b,
2217 1.1 christos iterate_over_block_arg_local_vars_cb cb,
2218 1.1 christos void *cb_data)
2219 1.1 christos {
2220 1.1 christos struct block_iterator iter;
2221 1.1 christos struct symbol *sym, *sym2;
2222 1.1 christos
2223 1.1 christos ALL_BLOCK_SYMBOLS (b, iter, sym)
2224 1.1 christos {
2225 1.1 christos /* Don't worry about things which aren't arguments. */
2226 1.1 christos if (SYMBOL_IS_ARGUMENT (sym))
2227 1.1 christos {
2228 1.1 christos /* We have to look up the symbol because arguments can have
2229 1.1 christos two entries (one a parameter, one a local) and the one we
2230 1.1 christos want is the local, which lookup_symbol will find for us.
2231 1.1 christos This includes gcc1 (not gcc2) on the sparc when passing a
2232 1.1 christos small structure and gcc2 when the argument type is float
2233 1.1 christos and it is passed as a double and converted to float by
2234 1.1 christos the prologue (in the latter case the type of the LOC_ARG
2235 1.1 christos symbol is double and the type of the LOC_LOCAL symbol is
2236 1.1 christos float). There are also LOC_ARG/LOC_REGISTER pairs which
2237 1.8 christos are not combined in symbol-reading. */
2238 1.8 christos
2239 1.1 christos sym2 = lookup_symbol_search_name (SYMBOL_SEARCH_NAME (sym),
2240 1.1 christos b, VAR_DOMAIN).symbol;
2241 1.1 christos (*cb) (SYMBOL_PRINT_NAME (sym), sym2, cb_data);
2242 1.1 christos }
2243 1.1 christos }
2244 1.1 christos }
2245 1.1 christos
2246 1.8 christos /* Print all argument variables of the function of FRAME.
2247 1.8 christos Print them with values to STREAM.
2248 1.8 christos If REGEXP is not NULL, only print argument variables whose name
2249 1.8 christos matches REGEXP.
2250 1.8 christos If T_REGEXP is not NULL, only print argument variables whose type
2251 1.8 christos matches T_REGEXP.
2252 1.1 christos If no argument variables have been printed and !QUIET, prints a message
2253 1.1 christos explaining why no argument variables could be printed.
2254 1.1 christos
2255 1.1 christos This function will invalidate FRAME. */
2256 1.8 christos
2257 1.8 christos static void
2258 1.8 christos print_frame_arg_vars (struct frame_info *frame,
2259 1.8 christos bool quiet,
2260 1.1 christos const char *regexp, const char *t_regexp,
2261 1.1 christos struct ui_file *stream)
2262 1.1 christos {
2263 1.1 christos struct print_variable_and_value_data cb_data;
2264 1.8 christos struct symbol *func;
2265 1.8 christos CORE_ADDR pc;
2266 1.1 christos gdb::optional<compiled_regex> preg;
2267 1.1 christos gdb::optional<compiled_regex> treg;
2268 1.1 christos
2269 1.8 christos if (!get_frame_pc_if_available (frame, &pc))
2270 1.8 christos {
2271 1.8 christos if (!quiet)
2272 1.1 christos fprintf_filtered (stream,
2273 1.1 christos _("PC unavailable, cannot determine args.\n"));
2274 1.1 christos return;
2275 1.1 christos }
2276 1.1 christos
2277 1.1 christos func = get_frame_function (frame);
2278 1.8 christos if (func == NULL)
2279 1.8 christos {
2280 1.1 christos if (!quiet)
2281 1.1 christos fprintf_filtered (stream, _("No symbol table info available.\n"));
2282 1.1 christos return;
2283 1.8 christos }
2284 1.8 christos
2285 1.1 christos prepare_reg (regexp, &cb_data.preg);
2286 1.1 christos prepare_reg (t_regexp, &cb_data.treg);
2287 1.8 christos cb_data.frame_id = get_frame_id (frame);
2288 1.1 christos cb_data.num_tabs = 0;
2289 1.1 christos cb_data.stream = stream;
2290 1.1 christos cb_data.values_printed = 0;
2291 1.1 christos
2292 1.1 christos iterate_over_block_arg_vars (SYMBOL_BLOCK_VALUE (func),
2293 1.1 christos do_print_variable_and_value, &cb_data);
2294 1.1 christos
2295 1.1 christos /* do_print_variable_and_value invalidates FRAME. */
2296 1.8 christos frame = NULL;
2297 1.8 christos
2298 1.8 christos if (!cb_data.values_printed && !quiet)
2299 1.8 christos {
2300 1.8 christos if (regexp == NULL && t_regexp == NULL)
2301 1.8 christos fprintf_filtered (stream, _("No arguments.\n"));
2302 1.8 christos else
2303 1.1 christos fprintf_filtered (stream, _("No matching arguments.\n"));
2304 1.1 christos }
2305 1.1 christos }
2306 1.8 christos
2307 1.1 christos void
2308 1.8 christos info_args_command (const char *args, int from_tty)
2309 1.8 christos {
2310 1.8 christos std::string regexp;
2311 1.8 christos std::string t_regexp;
2312 1.8 christos bool quiet = false;
2313 1.8 christos
2314 1.8 christos while (args != NULL
2315 1.8 christos && extract_info_print_args (&args, &quiet, ®exp, &t_regexp))
2316 1.8 christos ;
2317 1.8 christos
2318 1.8 christos if (args != NULL)
2319 1.8 christos report_unrecognized_option_error ("info args", args);
2320 1.1 christos
2321 1.8 christos
2322 1.8 christos print_frame_arg_vars (get_selected_frame (_("No frame selected.")),
2323 1.8 christos quiet,
2324 1.1 christos regexp.empty () ? NULL : regexp.c_str (),
2325 1.1 christos t_regexp.empty () ? NULL : t_regexp.c_str (),
2326 1.1 christos gdb_stdout);
2327 1.1 christos }
2328 1.1 christos
2329 1.1 christos /* Return the symbol-block in which the selected frame is executing.
2331 1.1 christos Can return zero under various legitimate circumstances.
2332 1.1 christos
2333 1.1 christos If ADDR_IN_BLOCK is non-zero, set *ADDR_IN_BLOCK to the relevant
2334 1.3 christos code address within the block returned. We use this to decide
2335 1.1 christos which macros are in scope. */
2336 1.1 christos
2337 1.1 christos const struct block *
2338 1.1 christos get_selected_block (CORE_ADDR *addr_in_block)
2339 1.1 christos {
2340 1.1 christos if (!has_stack_frames ())
2341 1.1 christos return 0;
2342 1.1 christos
2343 1.1 christos return get_frame_block (get_selected_frame (NULL), addr_in_block);
2344 1.1 christos }
2345 1.1 christos
2346 1.1 christos /* Find a frame a certain number of levels away from FRAME.
2347 1.1 christos LEVEL_OFFSET_PTR points to an int containing the number of levels.
2348 1.1 christos Positive means go to earlier frames (up); negative, the reverse.
2349 1.1 christos The int that contains the number of levels is counted toward
2350 1.1 christos zero as the frames for those levels are found.
2351 1.1 christos If the top or bottom frame is reached, that frame is returned,
2352 1.1 christos but the final value of *LEVEL_OFFSET_PTR is nonzero and indicates
2353 1.1 christos how much farther the original request asked to go. */
2354 1.1 christos
2355 1.1 christos struct frame_info *
2356 1.1 christos find_relative_frame (struct frame_info *frame, int *level_offset_ptr)
2357 1.1 christos {
2358 1.1 christos /* Going up is simple: just call get_prev_frame enough times or
2359 1.1 christos until the initial frame is reached. */
2360 1.1 christos while (*level_offset_ptr > 0)
2361 1.1 christos {
2362 1.1 christos struct frame_info *prev = get_prev_frame (frame);
2363 1.1 christos
2364 1.1 christos if (!prev)
2365 1.1 christos break;
2366 1.1 christos (*level_offset_ptr)--;
2367 1.1 christos frame = prev;
2368 1.1 christos }
2369 1.1 christos
2370 1.1 christos /* Going down is just as simple. */
2371 1.1 christos while (*level_offset_ptr < 0)
2372 1.1 christos {
2373 1.1 christos struct frame_info *next = get_next_frame (frame);
2374 1.1 christos
2375 1.1 christos if (!next)
2376 1.1 christos break;
2377 1.1 christos (*level_offset_ptr)++;
2378 1.1 christos frame = next;
2379 1.1 christos }
2380 1.1 christos
2381 1.1 christos return frame;
2382 1.1 christos }
2383 1.1 christos
2384 1.1 christos /* Select the frame up one or COUNT_EXP stack levels from the
2385 1.3 christos previously selected frame, and print it briefly. */
2386 1.1 christos
2387 1.1 christos static void
2388 1.1 christos up_silently_base (const char *count_exp)
2389 1.1 christos {
2390 1.1 christos struct frame_info *frame;
2391 1.1 christos int count = 1;
2392 1.1 christos
2393 1.1 christos if (count_exp)
2394 1.1 christos count = parse_and_eval_long (count_exp);
2395 1.1 christos
2396 1.1 christos frame = find_relative_frame (get_selected_frame ("No stack."), &count);
2397 1.1 christos if (count != 0 && count_exp == NULL)
2398 1.1 christos error (_("Initial frame selected; you cannot go up."));
2399 1.1 christos select_frame (frame);
2400 1.8 christos }
2401 1.1 christos
2402 1.1 christos static void
2403 1.1 christos up_silently_command (const char *count_exp, int from_tty)
2404 1.1 christos {
2405 1.1 christos up_silently_base (count_exp);
2406 1.8 christos }
2407 1.1 christos
2408 1.1 christos static void
2409 1.8 christos up_command (const char *count_exp, int from_tty)
2410 1.1 christos {
2411 1.1 christos up_silently_base (count_exp);
2412 1.1 christos gdb::observers::user_selected_context_changed.notify (USER_SELECTED_FRAME);
2413 1.1 christos }
2414 1.1 christos
2415 1.1 christos /* Select the frame down one or COUNT_EXP stack levels from the previously
2416 1.3 christos selected frame, and print it briefly. */
2417 1.1 christos
2418 1.1 christos static void
2419 1.1 christos down_silently_base (const char *count_exp)
2420 1.1 christos {
2421 1.1 christos struct frame_info *frame;
2422 1.1 christos int count = -1;
2423 1.1 christos
2424 1.1 christos if (count_exp)
2425 1.1 christos count = -parse_and_eval_long (count_exp);
2426 1.1 christos
2427 1.1 christos frame = find_relative_frame (get_selected_frame ("No stack."), &count);
2428 1.1 christos if (count != 0 && count_exp == NULL)
2429 1.1 christos {
2430 1.1 christos /* We only do this if COUNT_EXP is not specified. That way
2431 1.1 christos "down" means to really go down (and let me know if that is
2432 1.1 christos impossible), but "down 9999" can be used to mean go all the
2433 1.1 christos way down without getting an error. */
2434 1.1 christos
2435 1.1 christos error (_("Bottom (innermost) frame selected; you cannot go down."));
2436 1.1 christos }
2437 1.1 christos
2438 1.1 christos select_frame (frame);
2439 1.8 christos }
2440 1.1 christos
2441 1.1 christos static void
2442 1.1 christos down_silently_command (const char *count_exp, int from_tty)
2443 1.1 christos {
2444 1.1 christos down_silently_base (count_exp);
2445 1.8 christos }
2446 1.1 christos
2447 1.1 christos static void
2448 1.8 christos down_command (const char *count_exp, int from_tty)
2449 1.1 christos {
2450 1.1 christos down_silently_base (count_exp);
2451 1.1 christos gdb::observers::user_selected_context_changed.notify (USER_SELECTED_FRAME);
2452 1.8 christos }
2453 1.1 christos
2454 1.1 christos void
2455 1.1 christos return_command (const char *retval_exp, int from_tty)
2456 1.1 christos {
2457 1.1 christos /* Initialize it just to avoid a GCC false warning. */
2458 1.1 christos enum return_value_convention rv_conv = RETURN_VALUE_STRUCT_CONVENTION;
2459 1.1 christos struct frame_info *thisframe;
2460 1.1 christos struct gdbarch *gdbarch;
2461 1.1 christos struct symbol *thisfun;
2462 1.1 christos struct value *return_value = NULL;
2463 1.1 christos struct value *function = NULL;
2464 1.1 christos const char *query_prefix = "";
2465 1.1 christos
2466 1.1 christos thisframe = get_selected_frame ("No selected frame.");
2467 1.1 christos thisfun = get_frame_function (thisframe);
2468 1.1 christos gdbarch = get_frame_arch (thisframe);
2469 1.1 christos
2470 1.1 christos if (get_frame_type (get_current_frame ()) == INLINE_FRAME)
2471 1.1 christos error (_("Can not force return from an inlined function."));
2472 1.1 christos
2473 1.1 christos /* Compute the return value. If the computation triggers an error,
2474 1.1 christos let it bail. If the return type can't be handled, set
2475 1.1 christos RETURN_VALUE to NULL, and QUERY_PREFIX to an informational
2476 1.7 christos message. */
2477 1.1 christos if (retval_exp)
2478 1.1 christos {
2479 1.1 christos expression_up retval_expr = parse_expression (retval_exp);
2480 1.1 christos struct type *return_type = NULL;
2481 1.7 christos
2482 1.1 christos /* Compute the return value. Should the computation fail, this
2483 1.1 christos call throws an error. */
2484 1.1 christos return_value = evaluate_expression (retval_expr.get ());
2485 1.1 christos
2486 1.1 christos /* Cast return value to the return type of the function. Should
2487 1.1 christos the cast fail, this call throws an error. */
2488 1.1 christos if (thisfun != NULL)
2489 1.1 christos return_type = TYPE_TARGET_TYPE (SYMBOL_TYPE (thisfun));
2490 1.1 christos if (return_type == NULL)
2491 1.1 christos {
2492 1.1 christos if (retval_expr->elts[0].opcode != UNOP_CAST
2493 1.1 christos && retval_expr->elts[0].opcode != UNOP_CAST_TYPE)
2494 1.1 christos error (_("Return value type not available for selected "
2495 1.1 christos "stack frame.\n"
2496 1.6 christos "Please use an explicit cast of the value to return."));
2497 1.1 christos return_type = value_type (return_value);
2498 1.1 christos }
2499 1.1 christos return_type = check_typedef (return_type);
2500 1.1 christos return_value = value_cast (return_type, return_value);
2501 1.1 christos
2502 1.1 christos /* Make sure the value is fully evaluated. It may live in the
2503 1.1 christos stack frame we're about to pop. */
2504 1.1 christos if (value_lazy (return_value))
2505 1.6 christos value_fetch_lazy (return_value);
2506 1.1 christos
2507 1.1 christos if (thisfun != NULL)
2508 1.1 christos function = read_var_value (thisfun, NULL, thisframe);
2509 1.1 christos
2510 1.1 christos rv_conv = RETURN_VALUE_REGISTER_CONVENTION;
2511 1.1 christos if (TYPE_CODE (return_type) == TYPE_CODE_VOID)
2512 1.1 christos /* If the return-type is "void", don't try to find the
2513 1.1 christos return-value's location. However, do still evaluate the
2514 1.1 christos return expression so that, even when the expression result
2515 1.1 christos is discarded, side effects such as "return i++" still
2516 1.1 christos occur. */
2517 1.1 christos return_value = NULL;
2518 1.1 christos else if (thisfun != NULL)
2519 1.1 christos {
2520 1.1 christos rv_conv = struct_return_convention (gdbarch, function, return_type);
2521 1.1 christos if (rv_conv == RETURN_VALUE_STRUCT_CONVENTION
2522 1.1 christos || rv_conv == RETURN_VALUE_ABI_RETURNS_ADDRESS)
2523 1.1 christos {
2524 1.1 christos query_prefix = "The location at which to store the "
2525 1.1 christos "function's return value is unknown.\n"
2526 1.1 christos "If you continue, the return value "
2527 1.1 christos "that you specified will be ignored.\n";
2528 1.1 christos return_value = NULL;
2529 1.1 christos }
2530 1.1 christos }
2531 1.1 christos }
2532 1.1 christos
2533 1.1 christos /* Does an interactive user really want to do this? Include
2534 1.1 christos information, such as how well GDB can handle the return value, in
2535 1.1 christos the query message. */
2536 1.1 christos if (from_tty)
2537 1.1 christos {
2538 1.1 christos int confirmed;
2539 1.1 christos
2540 1.1 christos if (thisfun == NULL)
2541 1.5 christos confirmed = query (_("%sMake selected stack frame return now? "),
2542 1.5 christos query_prefix);
2543 1.5 christos else
2544 1.5 christos {
2545 1.5 christos if (TYPE_NO_RETURN (thisfun->type))
2546 1.5 christos warning (_("Function does not return normally to caller."));
2547 1.1 christos confirmed = query (_("%sMake %s return now? "), query_prefix,
2548 1.1 christos SYMBOL_PRINT_NAME (thisfun));
2549 1.1 christos }
2550 1.1 christos if (!confirmed)
2551 1.1 christos error (_("Not confirmed"));
2552 1.1 christos }
2553 1.1 christos
2554 1.1 christos /* Discard the selected frame and all frames inner-to it. */
2555 1.1 christos frame_pop (get_selected_frame (NULL));
2556 1.1 christos
2557 1.1 christos /* Store RETURN_VALUE in the just-returned register set. */
2558 1.8 christos if (return_value != NULL)
2559 1.1 christos {
2560 1.1 christos struct type *return_type = value_type (return_value);
2561 1.1 christos struct gdbarch *cache_arch = get_current_regcache ()->arch ();
2562 1.8 christos
2563 1.1 christos gdb_assert (rv_conv != RETURN_VALUE_STRUCT_CONVENTION
2564 1.1 christos && rv_conv != RETURN_VALUE_ABI_RETURNS_ADDRESS);
2565 1.1 christos gdbarch_return_value (cache_arch, function, return_type,
2566 1.1 christos get_current_regcache (), NULL /*read*/,
2567 1.1 christos value_contents (return_value) /*write*/);
2568 1.1 christos }
2569 1.1 christos
2570 1.1 christos /* If we are at the end of a call dummy now, pop the dummy frame
2571 1.1 christos too. */
2572 1.6 christos if (get_frame_type (get_current_frame ()) == DUMMY_FRAME)
2573 1.1 christos frame_pop (get_current_frame ());
2574 1.1 christos
2575 1.6 christos select_frame (get_current_frame ());
2576 1.1 christos /* If interactive, print the frame that is now current. */
2577 1.1 christos if (from_tty)
2578 1.8 christos print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC, 1);
2579 1.8 christos }
2580 1.1 christos
2581 1.8 christos /* Find the most inner frame in the current stack for a function called
2582 1.8 christos FUNCTION_NAME. If no matching frame is found return NULL. */
2583 1.1 christos
2584 1.8 christos static struct frame_info *
2585 1.8 christos find_frame_for_function (const char *function_name)
2586 1.8 christos {
2587 1.8 christos /* Used to hold the lower and upper addresses for each of the
2588 1.8 christos SYMTAB_AND_LINEs found for functions matching FUNCTION_NAME. */
2589 1.8 christos struct function_bounds
2590 1.1 christos {
2591 1.8 christos CORE_ADDR low, high;
2592 1.1 christos };
2593 1.1 christos struct frame_info *frame;
2594 1.8 christos bool found = false;
2595 1.1 christos int level = 1;
2596 1.6 christos
2597 1.8 christos gdb_assert (function_name != NULL);
2598 1.8 christos
2599 1.8 christos frame = get_current_frame ();
2600 1.8 christos std::vector<symtab_and_line> sals
2601 1.8 christos = decode_line_with_current_source (function_name,
2602 1.1 christos DECODE_LINE_FUNFIRSTLINE);
2603 1.8 christos gdb::def_vector<function_bounds> func_bounds (sals.size ());
2604 1.1 christos for (size_t i = 0; i < sals.size (); i++)
2605 1.8 christos {
2606 1.8 christos if (sals[i].pspace != current_program_space)
2607 1.1 christos func_bounds[i].low = func_bounds[i].high = 0;
2608 1.1 christos else if (sals[i].pc == 0
2609 1.8 christos || find_pc_partial_function (sals[i].pc, NULL,
2610 1.1 christos &func_bounds[i].low,
2611 1.1 christos &func_bounds[i].high) == 0)
2612 1.1 christos func_bounds[i].low = func_bounds[i].high = 0;
2613 1.1 christos }
2614 1.8 christos
2615 1.1 christos do
2616 1.1 christos {
2617 1.1 christos for (size_t i = 0; (i < sals.size () && !found); i++)
2618 1.1 christos found = (get_frame_pc (frame) >= func_bounds[i].low
2619 1.1 christos && get_frame_pc (frame) < func_bounds[i].high);
2620 1.1 christos if (!found)
2621 1.1 christos {
2622 1.1 christos level = 1;
2623 1.1 christos frame = find_relative_frame (frame, &level);
2624 1.1 christos }
2625 1.8 christos }
2626 1.8 christos while (!found && level == 0);
2627 1.1 christos
2628 1.8 christos if (!found)
2629 1.8 christos frame = NULL;
2630 1.8 christos
2631 1.8 christos return frame;
2632 1.8 christos }
2633 1.8 christos
2634 1.8 christos /* Implements the dbx 'func' command. */
2635 1.8 christos
2636 1.8 christos static void
2637 1.8 christos func_command (const char *arg, int from_tty)
2638 1.8 christos {
2639 1.8 christos if (arg == NULL)
2640 1.8 christos return;
2641 1.8 christos
2642 1.8 christos struct frame_info *frame = find_frame_for_function (arg);
2643 1.8 christos if (frame == NULL)
2644 1.8 christos error (_("'%s' not within current stack frame."), arg);
2645 1.8 christos if (frame != get_selected_frame (NULL))
2646 1.8 christos {
2647 1.8 christos select_frame (frame);
2648 1.8 christos print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC, 1);
2649 1.8 christos }
2650 1.8 christos }
2651 1.8 christos
2652 1.8 christos /* Apply a GDB command to all stack frames, or a set of identified frames,
2653 1.8 christos or innermost COUNT frames.
2654 1.8 christos With a negative COUNT, apply command on outermost -COUNT frames.
2655 1.8 christos
2656 1.8 christos frame apply 3 info frame Apply 'info frame' to frames 0, 1, 2
2657 1.8 christos frame apply -3 info frame Apply 'info frame' to outermost 3 frames.
2658 1.8 christos frame apply all x/i $pc Apply 'x/i $pc' cmd to all frames.
2659 1.8 christos frame apply all -s p local_var_no_idea_in_which_frame
2660 1.8 christos If a frame has a local variable called
2661 1.8 christos local_var_no_idea_in_which_frame, print frame
2662 1.8 christos and value of local_var_no_idea_in_which_frame.
2663 1.8 christos frame apply all -s -q p local_var_no_idea_in_which_frame
2664 1.8 christos Same as before, but only print the variable value.
2665 1.8 christos frame apply level 2-5 0 4-7 -s p i = i + 1
2666 1.8 christos Adds 1 to the variable i in the specified frames.
2667 1.8 christos Note that i will be incremented twice in
2668 1.8 christos frames 4 and 5. */
2669 1.8 christos
2670 1.8 christos /* Apply a GDB command to COUNT stack frames, starting at TRAILING.
2671 1.8 christos CMD starts with 0 or more qcs flags followed by the GDB command to apply.
2672 1.8 christos COUNT -1 means all frames starting at TRAILING. WHICH_COMMAND is used
2673 1.8 christos for error messages. */
2674 1.8 christos
2675 1.8 christos static void
2676 1.8 christos frame_apply_command_count (const char *which_command,
2677 1.8 christos const char *cmd, int from_tty,
2678 1.8 christos struct frame_info *trailing, int count)
2679 1.8 christos {
2680 1.8 christos qcs_flags flags;
2681 1.8 christos struct frame_info *fi;
2682 1.8 christos
2683 1.8 christos while (cmd != NULL && parse_flags_qcs (which_command, &cmd, &flags))
2684 1.8 christos ;
2685 1.8 christos
2686 1.8 christos if (cmd == NULL || *cmd == '\0')
2687 1.8 christos error (_("Please specify a command to apply on the selected frames"));
2688 1.8 christos
2689 1.8 christos /* The below will restore the current inferior/thread/frame.
2690 1.8 christos Usually, only the frame is effectively to be restored.
2691 1.8 christos But in case CMD switches of inferior/thread, better restore
2692 1.8 christos these also. */
2693 1.8 christos scoped_restore_current_thread restore_thread;
2694 1.8 christos
2695 1.8 christos for (fi = trailing; fi && count--; fi = get_prev_frame (fi))
2696 1.8 christos {
2697 1.8 christos QUIT;
2698 1.8 christos
2699 1.8 christos select_frame (fi);
2700 1.8 christos TRY
2701 1.8 christos {
2702 1.8 christos std::string cmd_result;
2703 1.8 christos {
2704 1.8 christos /* In case CMD switches of inferior/thread/frame, the below
2705 1.8 christos restores the inferior/thread/frame. FI can then be
2706 1.8 christos set to the selected frame. */
2707 1.8 christos scoped_restore_current_thread restore_fi_current_frame;
2708 1.8 christos
2709 1.8 christos cmd_result = execute_command_to_string (cmd, from_tty);
2710 1.8 christos }
2711 1.8 christos fi = get_selected_frame (_("frame apply "
2712 1.8 christos "unable to get selected frame."));
2713 1.8 christos if (!flags.silent || cmd_result.length () > 0)
2714 1.8 christos {
2715 1.8 christos if (!flags.quiet)
2716 1.8 christos print_stack_frame (fi, 1, LOCATION, 0);
2717 1.8 christos printf_filtered ("%s", cmd_result.c_str ());
2718 1.8 christos }
2719 1.8 christos }
2720 1.8 christos CATCH (ex, RETURN_MASK_ERROR)
2721 1.8 christos {
2722 1.8 christos fi = get_selected_frame (_("frame apply "
2723 1.8 christos "unable to get selected frame."));
2724 1.8 christos if (!flags.silent)
2725 1.8 christos {
2726 1.8 christos if (!flags.quiet)
2727 1.8 christos print_stack_frame (fi, 1, LOCATION, 0);
2728 1.8 christos if (flags.cont)
2729 1.8 christos printf_filtered ("%s\n", ex.message);
2730 1.8 christos else
2731 1.8 christos throw_exception (ex);
2732 1.8 christos }
2733 1.8 christos }
2734 1.8 christos END_CATCH;
2735 1.8 christos }
2736 1.8 christos }
2737 1.8 christos
2738 1.8 christos /* Implementation of the "frame apply level" command. */
2739 1.8 christos
2740 1.8 christos static void
2741 1.8 christos frame_apply_level_command (const char *cmd, int from_tty)
2742 1.8 christos {
2743 1.8 christos if (!target_has_stack)
2744 1.8 christos error (_("No stack."));
2745 1.8 christos
2746 1.8 christos bool level_found = false;
2747 1.8 christos const char *levels_str = cmd;
2748 1.8 christos number_or_range_parser levels (levels_str);
2749 1.8 christos
2750 1.8 christos /* Skip the LEVEL list to find the flags and command args. */
2751 1.8 christos while (!levels.finished ())
2752 1.8 christos {
2753 1.8 christos /* Call for effect. */
2754 1.8 christos levels.get_number ();
2755 1.8 christos
2756 1.8 christos level_found = true;
2757 1.8 christos if (levels.in_range ())
2758 1.8 christos levels.skip_range ();
2759 1.8 christos }
2760 1.8 christos
2761 1.8 christos if (!level_found)
2762 1.8 christos error (_("Missing or invalid LEVEL... argument"));
2763 1.8 christos
2764 1.8 christos cmd = levels.cur_tok ();
2765 1.8 christos
2766 1.8 christos /* Redo the LEVELS parsing, but applying COMMAND. */
2767 1.8 christos levels.init (levels_str);
2768 1.8 christos while (!levels.finished ())
2769 1.8 christos {
2770 1.8 christos const int level_beg = levels.get_number ();
2771 1.8 christos int n_frames;
2772 1.8 christos
2773 1.8 christos if (levels.in_range ())
2774 1.8 christos {
2775 1.8 christos n_frames = levels.end_value () - level_beg + 1;
2776 1.8 christos levels.skip_range ();
2777 1.8 christos }
2778 1.8 christos else
2779 1.8 christos n_frames = 1;
2780 1.8 christos
2781 1.8 christos frame_apply_command_count ("frame apply level", cmd, from_tty,
2782 1.8 christos leading_innermost_frame (level_beg), n_frames);
2783 1.8 christos }
2784 1.8 christos }
2785 1.8 christos
2786 1.8 christos /* Implementation of the "frame apply all" command. */
2787 1.8 christos
2788 1.8 christos static void
2789 1.8 christos frame_apply_all_command (const char *cmd, int from_tty)
2790 1.8 christos {
2791 1.8 christos if (!target_has_stack)
2792 1.8 christos error (_("No stack."));
2793 1.8 christos
2794 1.8 christos frame_apply_command_count ("frame apply all", cmd, from_tty,
2795 1.8 christos get_current_frame (), INT_MAX);
2796 1.8 christos }
2797 1.8 christos
2798 1.8 christos /* Implementation of the "frame apply" command. */
2799 1.8 christos
2800 1.8 christos static void
2801 1.8 christos frame_apply_command (const char* cmd, int from_tty)
2802 1.8 christos {
2803 1.8 christos int count;
2804 1.8 christos struct frame_info *trailing;
2805 1.8 christos
2806 1.8 christos if (!target_has_stack)
2807 1.8 christos error (_("No stack."));
2808 1.8 christos
2809 1.8 christos if (cmd == NULL)
2810 1.8 christos error (_("Missing COUNT argument."));
2811 1.8 christos count = get_number_trailer (&cmd, 0);
2812 1.8 christos if (count == 0)
2813 1.8 christos error (_("Invalid COUNT argument."));
2814 1.8 christos
2815 1.8 christos if (count < 0)
2816 1.8 christos {
2817 1.8 christos trailing = trailing_outermost_frame (-count);
2818 1.8 christos count = -1;
2819 1.8 christos }
2820 1.8 christos else
2821 1.8 christos trailing = get_current_frame ();
2822 1.8 christos
2823 1.8 christos frame_apply_command_count ("frame apply", cmd, from_tty,
2824 1.8 christos trailing, count);
2825 1.8 christos }
2826 1.8 christos
2827 1.8 christos /* Implementation of the "faas" command. */
2828 1.8 christos
2829 1.8 christos static void
2830 1.8 christos faas_command (const char *cmd, int from_tty)
2831 1.8 christos {
2832 1.8 christos std::string expanded = std::string ("frame apply all -s ") + cmd;
2833 1.8 christos execute_command (expanded.c_str (), from_tty);
2834 1.8 christos }
2835 1.8 christos
2836 1.8 christos
2837 1.8 christos /* Find inner-mode frame with frame address ADDRESS. Return NULL if no
2838 1.8 christos matching frame can be found. */
2839 1.8 christos
2840 1.8 christos static struct frame_info *
2841 1.8 christos find_frame_for_address (CORE_ADDR address)
2842 1.8 christos {
2843 1.8 christos struct frame_id id;
2844 1.8 christos struct frame_info *fid;
2845 1.8 christos
2846 1.8 christos id = frame_id_build_wild (address);
2847 1.8 christos
2848 1.8 christos /* If (s)he specifies the frame with an address, he deserves
2849 1.8 christos what (s)he gets. Still, give the highest one that matches.
2850 1.8 christos (NOTE: cagney/2004-10-29: Why highest, or outer-most, I don't
2851 1.8 christos know). */
2852 1.8 christos for (fid = get_current_frame ();
2853 1.8 christos fid != NULL;
2854 1.8 christos fid = get_prev_frame (fid))
2855 1.8 christos {
2856 1.8 christos if (frame_id_eq (id, get_frame_id (fid)))
2857 1.8 christos {
2858 1.8 christos struct frame_info *prev_frame;
2859 1.8 christos
2860 1.8 christos while (1)
2861 1.8 christos {
2862 1.8 christos prev_frame = get_prev_frame (fid);
2863 1.8 christos if (!prev_frame
2864 1.8 christos || !frame_id_eq (id, get_frame_id (prev_frame)))
2865 1.8 christos break;
2866 1.8 christos fid = prev_frame;
2867 1.8 christos }
2868 1.8 christos return fid;
2869 1.1 christos }
2870 1.8 christos }
2871 1.1 christos return NULL;
2872 1.1 christos }
2873 1.8 christos
2874 1.8 christos
2875 1.8 christos
2877 1.8 christos /* Commands with a prefix of `frame apply'. */
2878 1.8 christos static struct cmd_list_element *frame_apply_cmd_list = NULL;
2879 1.8 christos
2880 1.8 christos /* Commands with a prefix of `frame'. */
2881 1.8 christos static struct cmd_list_element *frame_cmd_list = NULL;
2882 1.8 christos
2883 1.8 christos /* Commands with a prefix of `select frame'. */
2884 1.1 christos static struct cmd_list_element *select_frame_cmd_list = NULL;
2885 1.1 christos
2886 1.1 christos /* Commands with a prefix of `info frame'. */
2887 1.1 christos static struct cmd_list_element *info_frame_cmd_list = NULL;
2888 1.8 christos
2889 1.8 christos void
2890 1.1 christos _initialize_stack (void)
2891 1.1 christos {
2892 1.1 christos struct cmd_list_element *cmd;
2893 1.1 christos
2894 1.1 christos add_com ("return", class_stack, return_command, _("\
2895 1.1 christos Make selected stack frame return to its caller.\n\
2896 1.1 christos Control remains in the debugger, but when you continue\n\
2897 1.1 christos execution will resume in the frame above the one now selected.\n\
2898 1.1 christos If an argument is given, it is an expression for the value to return."));
2899 1.1 christos
2900 1.1 christos add_com ("up", class_stack, up_command, _("\
2901 1.1 christos Select and print stack frame that called this one.\n\
2902 1.1 christos An argument says how many frames up to go."));
2903 1.1 christos add_com ("up-silently", class_support, up_silently_command, _("\
2904 1.1 christos Same as the `up' command, but does not print anything.\n\
2905 1.1 christos This is useful in command scripts."));
2906 1.1 christos
2907 1.1 christos add_com ("down", class_stack, down_command, _("\
2908 1.1 christos Select and print stack frame called by this one.\n\
2909 1.1 christos An argument says how many frames down to go."));
2910 1.1 christos add_com_alias ("do", "down", class_stack, 1);
2911 1.1 christos add_com_alias ("dow", "down", class_stack, 1);
2912 1.8 christos add_com ("down-silently", class_support, down_silently_command, _("\
2913 1.8 christos Same as the `down' command, but does not print anything.\n\
2914 1.8 christos This is useful in command scripts."));
2915 1.8 christos
2916 1.8 christos add_prefix_cmd ("frame", class_stack,
2917 1.8 christos &frame_cmd.base_command, _("\
2918 1.1 christos Select and print a stack frame.\n\
2919 1.1 christos With no argument, print the selected stack frame. (See also \"info frame\").\n\
2920 1.1 christos A single numerical argument specifies the frame to select."),
2921 1.8 christos &frame_cmd_list, "frame ", 1, &cmdlist);
2922 1.8 christos
2923 1.8 christos add_com_alias ("f", "frame", class_stack, 1);
2924 1.8 christos
2925 1.8 christos #define FRAME_APPLY_FLAGS_HELP "\
2926 1.8 christos Prints the frame location information followed by COMMAND output.\n\
2927 1.8 christos FLAG arguments are -q (quiet), -c (continue), -s (silent).\n\
2928 1.8 christos Flag -q disables printing the frame location information.\n\
2929 1.8 christos By default, if a COMMAND raises an error, frame apply is aborted.\n\
2930 1.8 christos Flag -c indicates to print the error and continue.\n\
2931 1.8 christos Flag -s indicates to silently ignore a COMMAND that raises an error\n\
2932 1.8 christos or produces no output."
2933 1.8 christos
2934 1.8 christos add_prefix_cmd ("apply", class_stack, frame_apply_command,
2935 1.8 christos _("Apply a command to a number of frames.\n\
2936 1.8 christos Usage: frame apply COUNT [FLAG]... COMMAND\n\
2937 1.8 christos With a negative COUNT argument, applies the command on outermost -COUNT frames.\n"
2938 1.8 christos FRAME_APPLY_FLAGS_HELP),
2939 1.8 christos &frame_apply_cmd_list, "frame apply ", 1, &frame_cmd_list);
2940 1.8 christos
2941 1.8 christos add_cmd ("all", class_stack, frame_apply_all_command,
2942 1.8 christos _("\
2943 1.8 christos Apply a command to all frames.\n\
2944 1.8 christos \n\
2945 1.8 christos Usage: frame apply all [FLAG]... COMMAND\n"
2946 1.8 christos FRAME_APPLY_FLAGS_HELP),
2947 1.8 christos &frame_apply_cmd_list);
2948 1.8 christos
2949 1.8 christos add_cmd ("level", class_stack, frame_apply_level_command,
2950 1.8 christos _("\
2951 1.8 christos Apply a command to a list of frames.\n\
2952 1.8 christos \n\
2953 1.8 christos Usage: frame apply level LEVEL... [FLAG]... COMMAND\n\
2954 1.8 christos ID is a space-separated list of LEVELs of frames to apply COMMAND on.\n"
2955 1.8 christos FRAME_APPLY_FLAGS_HELP),
2956 1.8 christos &frame_apply_cmd_list);
2957 1.8 christos
2958 1.8 christos add_com ("faas", class_stack, faas_command, _("\
2959 1.8 christos Apply a command to all frames (ignoring errors and empty output).\n\
2960 1.8 christos Usage: faas COMMAND\n\
2961 1.8 christos shortcut for 'frame apply all -s COMMAND'"));
2962 1.8 christos
2963 1.8 christos
2964 1.8 christos add_prefix_cmd ("frame", class_stack,
2965 1.8 christos &frame_cmd.base_command, _("\
2966 1.8 christos Select and print a stack frame.\n\
2967 1.8 christos With no argument, print the selected stack frame. (See also \"info frame\").\n\
2968 1.8 christos A single numerical argument specifies the frame to select."),
2969 1.8 christos &frame_cmd_list, "frame ", 1, &cmdlist);
2970 1.8 christos add_com_alias ("f", "frame", class_stack, 1);
2971 1.8 christos
2972 1.8 christos add_cmd ("address", class_stack, &frame_cmd.address,
2973 1.8 christos _("\
2974 1.8 christos Select and print a stack frame by stack address\n\
2975 1.8 christos \n\
2976 1.8 christos Usage: frame address STACK-ADDRESS"),
2977 1.8 christos &frame_cmd_list);
2978 1.8 christos
2979 1.8 christos add_cmd ("view", class_stack, &frame_cmd.view,
2980 1.8 christos _("\
2981 1.8 christos View a stack frame that might be outside the current backtrace.\n\
2982 1.8 christos \n\
2983 1.8 christos Usage: frame view STACK-ADDRESS\n\
2984 1.8 christos frame view STACK-ADDRESS PC-ADDRESS"),
2985 1.8 christos &frame_cmd_list);
2986 1.8 christos
2987 1.8 christos cmd = add_cmd ("function", class_stack, &frame_cmd.function,
2988 1.8 christos _("\
2989 1.8 christos Select and print a stack frame by function name.\n\
2990 1.8 christos \n\
2991 1.8 christos Usage: frame function NAME\n\
2992 1.8 christos \n\
2993 1.8 christos The innermost frame that visited function NAME is selected."),
2994 1.8 christos &frame_cmd_list);
2995 1.8 christos set_cmd_completer (cmd, frame_selection_by_function_completer);
2996 1.8 christos
2997 1.8 christos
2998 1.8 christos add_cmd ("level", class_stack, &frame_cmd.level,
2999 1.8 christos _("\
3000 1.8 christos Select and print a stack frame by level.\n\
3001 1.8 christos \n\
3002 1.8 christos Usage: frame level LEVEL"),
3003 1.1 christos &frame_cmd_list);
3004 1.8 christos
3005 1.8 christos cmd = add_prefix_cmd_suppress_notification ("select-frame", class_stack,
3006 1.8 christos &select_frame_cmd.base_command, _("\
3007 1.8 christos Select a stack frame without printing anything.\n\
3008 1.8 christos A single numerical argument specifies the frame to select."),
3009 1.8 christos &select_frame_cmd_list, "select-frame ", 1, &cmdlist,
3010 1.8 christos &cli_suppress_notification.user_selected_context);
3011 1.8 christos
3012 1.8 christos add_cmd_suppress_notification ("address", class_stack,
3013 1.8 christos &select_frame_cmd.address, _("\
3014 1.8 christos Select a stack frame by stack address.\n\
3015 1.8 christos \n\
3016 1.8 christos Usage: select-frame address STACK-ADDRESS"),
3017 1.8 christos &select_frame_cmd_list,
3018 1.8 christos &cli_suppress_notification.user_selected_context);
3019 1.8 christos
3020 1.8 christos
3021 1.8 christos add_cmd_suppress_notification ("view", class_stack,
3022 1.8 christos &select_frame_cmd.view, _("\
3023 1.8 christos Select a stack frame that might be outside the current backtrace.\n\
3024 1.6 christos \n\
3025 1.1 christos Usage: select-frame view STACK-ADDRESS\n\
3026 1.8 christos select-frame view STACK-ADDRESS PC-ADDRESS"),
3027 1.8 christos &select_frame_cmd_list,
3028 1.8 christos &cli_suppress_notification.user_selected_context);
3029 1.8 christos
3030 1.8 christos cmd = add_cmd_suppress_notification ("function", class_stack,
3031 1.8 christos &select_frame_cmd.function, _("\
3032 1.8 christos Select a stack frame by function name.\n\
3033 1.8 christos \n\
3034 1.8 christos Usage: select-frame function NAME"),
3035 1.8 christos &select_frame_cmd_list,
3036 1.8 christos &cli_suppress_notification.user_selected_context);
3037 1.8 christos set_cmd_completer (cmd, frame_selection_by_function_completer);
3038 1.8 christos
3039 1.8 christos add_cmd_suppress_notification ("level", class_stack,
3040 1.8 christos &select_frame_cmd.level, _("\
3041 1.8 christos Select a stack frame by level.\n\
3042 1.8 christos \n\
3043 1.1 christos Usage: select-frame level LEVEL"),
3044 1.1 christos &select_frame_cmd_list,
3045 1.8 christos &cli_suppress_notification.user_selected_context);
3046 1.8 christos
3047 1.8 christos add_com ("backtrace", class_stack, backtrace_command, _("\
3048 1.1 christos Print backtrace of all stack frames, or innermost COUNT frames.\n\
3049 1.8 christos Usage: backtrace [QUALIFIERS]... [COUNT]\n\
3050 1.1 christos With a negative argument, print outermost -COUNT frames.\n\
3051 1.1 christos Use of the 'full' qualifier also prints the values of the local variables.\n\
3052 1.1 christos Use of the 'no-filters' qualifier prohibits frame filters from executing\n\
3053 1.1 christos on this backtrace."));
3054 1.1 christos add_com_alias ("bt", "backtrace", class_stack, 0);
3055 1.1 christos
3056 1.8 christos add_com_alias ("where", "backtrace", class_alias, 0);
3057 1.8 christos add_info ("stack", backtrace_command,
3058 1.8 christos _("Backtrace of the stack, or innermost COUNT frames."));
3059 1.8 christos add_info_alias ("s", "stack", 1);
3060 1.8 christos
3061 1.8 christos add_prefix_cmd ("frame", class_info, &info_frame_cmd.base_command,
3062 1.8 christos _("All about the selected stack frame.\n\
3063 1.1 christos With no arguments, displays information about the currently selected stack\n\
3064 1.8 christos frame. Alternatively a frame specification may be provided (See \"frame\")\n\
3065 1.8 christos the information is then printed about the specified frame."),
3066 1.8 christos &info_frame_cmd_list, "info frame ", 1, &infolist);
3067 1.8 christos add_info_alias ("f", "frame", 1);
3068 1.8 christos
3069 1.8 christos add_cmd ("address", class_stack, &info_frame_cmd.address,
3070 1.8 christos _("\
3071 1.8 christos Print information about a stack frame selected by stack address.\n\
3072 1.8 christos \n\
3073 1.8 christos Usage: info frame address STACK-ADDRESS"),
3074 1.8 christos &info_frame_cmd_list);
3075 1.8 christos
3076 1.8 christos add_cmd ("view", class_stack, &info_frame_cmd.view,
3077 1.8 christos _("\
3078 1.8 christos Print information about a stack frame outside the current backtrace.\n\
3079 1.8 christos \n\
3080 1.8 christos Usage: info frame view STACK-ADDRESS\n\
3081 1.8 christos info frame view STACK-ADDRESS PC-ADDRESS"),
3082 1.8 christos &info_frame_cmd_list);
3083 1.8 christos
3084 1.8 christos cmd = add_cmd ("function", class_stack, &info_frame_cmd.function,
3085 1.8 christos _("\
3086 1.8 christos Print information about a stack frame selected by function name.\n\
3087 1.8 christos \n\
3088 1.8 christos Usage: info frame function NAME"),
3089 1.8 christos &info_frame_cmd_list);
3090 1.8 christos set_cmd_completer (cmd, frame_selection_by_function_completer);
3091 1.8 christos
3092 1.8 christos add_cmd ("level", class_stack, &info_frame_cmd.level,
3093 1.8 christos _("\
3094 1.8 christos Print information about a stack frame selected by level.\n\
3095 1.8 christos \n\
3096 1.8 christos Usage: info frame level LEVEL"),
3097 1.8 christos &info_frame_cmd_list);
3098 1.8 christos
3099 1.8 christos add_info ("locals", info_locals_command,
3100 1.8 christos info_print_args_help (_("\
3101 1.8 christos All local variables of current stack frame or those matching REGEXPs.\n\
3102 1.8 christos Usage: info locals [-q] [-t TYPEREGEXP] [NAMEREGEXP]\n\
3103 1.8 christos Prints the local variables of the current stack frame.\n"),
3104 1.8 christos _("local variables")));
3105 1.8 christos add_info ("args", info_args_command,
3106 1.8 christos info_print_args_help (_("\
3107 1.1 christos All argument variables of current stack frame or those matching REGEXPs.\n\
3108 1.1 christos Usage: info args [-q] [-t TYPEREGEXP] [NAMEREGEXP]\n\
3109 1.1 christos Prints the argument variables of the current stack frame.\n"),
3110 1.8 christos _("argument variables")));
3111 1.8 christos
3112 1.1 christos if (dbx_commands)
3113 1.1 christos add_com ("func", class_stack, func_command, _("\
3114 1.1 christos Select the stack frame that contains NAME.\n\
3115 1.1 christos Usage: func NAME"));
3116 1.1 christos
3117 1.1 christos add_setshow_enum_cmd ("frame-arguments", class_stack,
3118 1.1 christos print_frame_arguments_choices, &print_frame_arguments,
3119 1.1 christos _("Set printing of non-scalar frame arguments"),
3120 1.1 christos _("Show printing of non-scalar frame arguments"),
3121 1.1 christos NULL, NULL, NULL, &setprintlist, &showprintlist);
3122 1.1 christos
3123 1.1 christos add_setshow_boolean_cmd ("frame-arguments", no_class,
3124 1.1 christos &print_raw_frame_arguments, _("\
3125 1.1 christos Set whether to print frame arguments in raw form."), _("\
3126 1.1 christos Show whether to print frame arguments in raw form."), _("\
3127 1.1 christos If set, frame arguments are printed in raw form, bypassing any\n\
3128 1.1 christos pretty-printers for that value."),
3129 1.1 christos NULL, NULL,
3130 1.1 christos &setprintrawlist, &showprintrawlist);
3131 1.1 christos
3132 1.1 christos add_setshow_auto_boolean_cmd ("disassemble-next-line", class_stack,
3133 1.1 christos &disassemble_next_line, _("\
3134 1.1 christos Set whether to disassemble next source line or insn when execution stops."),
3135 1.1 christos _("\
3136 1.1 christos Show whether to disassemble next source line or insn when execution stops."),
3137 1.1 christos _("\
3138 1.1 christos If ON, GDB will display disassembly of the next source line, in addition\n\
3139 1.1 christos to displaying the source line itself. If the next source line cannot\n\
3140 1.1 christos be displayed (e.g., source is unavailable or there's no line info), GDB\n\
3141 1.1 christos will display disassembly of next instruction instead of showing the\n\
3142 1.1 christos source line.\n\
3143 1.1 christos If AUTO, display disassembly of next instruction only if the source line\n\
3144 1.1 christos cannot be displayed.\n\
3145 1.1 christos If OFF (which is the default), never display the disassembly of the next\n\
3146 1.1 christos source line."),
3147 1.1 christos NULL,
3148 1.1 christos show_disassemble_next_line,
3149 1.1 christos &setlist, &showlist);
3150 1.1 christos disassemble_next_line = AUTO_BOOLEAN_FALSE;
3151 1.1 christos
3152 1.1 christos add_setshow_enum_cmd ("entry-values", class_stack,
3153 1.1 christos print_entry_values_choices, &print_entry_values,
3154 1.1 christos _("Set printing of function arguments at function "
3155 1.1 christos "entry"),
3156 1.1 christos _("Show printing of function arguments at function "
3157 1.1 christos "entry"),
3158 1.1 christos _("\
3159 1.1 christos GDB can sometimes determine the values of function arguments at entry,\n\
3160 1.1 christos in addition to their current values. This option tells GDB whether\n\
3161 to print the current value, the value at entry (marked as val@entry),\n\
3162 or both. Note that one or both of these values may be <optimized out>."),
3163 NULL, NULL, &setprintlist, &showprintlist);
3164 }
3165