Run --gc-sections tests only if supported.
[deliverable/binutils-gdb.git] / gdb / stack.c
CommitLineData
c906108c 1/* Print and select stack frames for GDB, the GNU debugger.
8926118c 2
6aba47ca 3 Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
0fb0cc75 4 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008,
7b6bb8da 5 2009, 2010, 2011 Free Software Foundation, Inc.
c906108c 6
c5aa993b 7 This file is part of GDB.
c906108c 8
c5aa993b
JM
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
a9762ec7 11 the Free Software Foundation; either version 3 of the License, or
c5aa993b 12 (at your option) any later version.
c906108c 13
c5aa993b
JM
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
c906108c 18
c5aa993b 19 You should have received a copy of the GNU General Public License
a9762ec7 20 along with this program. If not, see <http://www.gnu.org/licenses/>. */
c906108c 21
c906108c 22#include "defs.h"
c906108c
SS
23#include "value.h"
24#include "symtab.h"
25#include "gdbtypes.h"
26#include "expression.h"
27#include "language.h"
28#include "frame.h"
29#include "gdbcmd.h"
30#include "gdbcore.h"
31#include "target.h"
0378c332 32#include "source.h"
c906108c
SS
33#include "breakpoint.h"
34#include "demangle.h"
35#include "inferior.h"
36#include "annotate.h"
8b93c638 37#include "ui-out.h"
fe898f56 38#include "block.h"
b9362cc7 39#include "stack.h"
de4f826b 40#include "dictionary.h"
60250e8b 41#include "exceptions.h"
898c62f5 42#include "reggroups.h"
fc70c2a0 43#include "regcache.h"
a77053c2 44#include "solib.h"
033a42c2 45#include "valprint.h"
8ea051c5 46#include "gdbthread.h"
3567439c 47#include "cp-support.h"
30c33a9f 48#include "disasm.h"
edb3359d 49#include "inline-frame.h"
c906108c 50
033a42c2
MK
51#include "gdb_assert.h"
52#include <ctype.h>
53#include "gdb_string.h"
c906108c 54
ccefe4c4
TT
55#include "psymtab.h"
56#include "symfile.h"
57
9a4105ab 58void (*deprecated_selected_frame_level_changed_hook) (int);
c906108c 59
2421fe6f 60/* The possible choices of "set print frame-arguments", and the value
88408340
JB
61 of this setting. */
62
63static const char *print_frame_arguments_choices[] =
64 {"all", "scalars", "none", NULL};
476f7b68 65static const char *print_frame_arguments = "scalars";
88408340 66
c378eb4e 67/* Prototypes for local functions. */
c906108c 68
d9fcf2fb
JM
69static void print_frame_local_vars (struct frame_info *, int,
70 struct ui_file *);
c906108c 71
033a42c2
MK
72static void print_frame (struct frame_info *frame, int print_level,
73 enum print_what print_what, int print_args,
c5394b80
JM
74 struct symtab_and_line sal);
75
c906108c
SS
76/* Zero means do things normally; we are interacting directly with the
77 user. One means print the full filename and linenumber when a
78 frame is printed, and do so in a format emacs18/emacs19.22 can
79 parse. Two means print similar annotations, but in many more
80 cases and in a slightly different syntax. */
81
82int annotation_level = 0;
c906108c 83\f
c5aa993b 84
edb3359d
DJ
85/* Return 1 if we should display the address in addition to the location,
86 because we are in the middle of a statement. */
87
88static int
89frame_show_address (struct frame_info *frame,
90 struct symtab_and_line sal)
91{
92 /* If there is a line number, but no PC, then there is no location
93 information associated with this sal. The only way that should
94 happen is for the call sites of inlined functions (SAL comes from
95 find_frame_sal). Otherwise, we would have some PC range if the
96 SAL came from a line table. */
97 if (sal.line != 0 && sal.pc == 0 && sal.end == 0)
98 {
99 if (get_next_frame (frame) == NULL)
100 gdb_assert (inline_skipped_frames (inferior_ptid) > 0);
101 else
102 gdb_assert (get_frame_type (get_next_frame (frame)) == INLINE_FRAME);
103 return 0;
104 }
105
106 return get_frame_pc (frame) != sal.pc;
107}
108
033a42c2 109/* Show or print a stack frame FRAME briefly. The output is format
d762c46a
AC
110 according to PRINT_LEVEL and PRINT_WHAT printing the frame's
111 relative level, function name, argument list, and file name and
112 line number. If the frame's PC is not at the beginning of the
113 source line, the actual PC is printed at the beginning. */
c906108c
SS
114
115void
033a42c2 116print_stack_frame (struct frame_info *frame, int print_level,
0faf0076 117 enum print_what print_what)
c906108c 118{
311b5970 119 volatile struct gdb_exception e;
c906108c 120
aaf9e9fd 121 /* For mi, alway print location and address. */
79a45e25 122 if (ui_out_is_mi_like_p (current_uiout))
311b5970 123 print_what = LOC_AND_ADDRESS;
c906108c 124
311b5970
JK
125 TRY_CATCH (e, RETURN_MASK_ERROR)
126 {
127 int center = (print_what == SRC_LINE || print_what == SRC_AND_LOC);
c906108c 128
311b5970
JK
129 print_frame_info (frame, print_level, print_what, 1 /* print_args */);
130 set_current_sal_from_frame (frame, center);
131 }
132}
c906108c 133
033a42c2
MK
134/* Print nameless arguments of frame FRAME on STREAM, where START is
135 the offset of the first nameless argument, and NUM is the number of
136 nameless arguments to print. FIRST is nonzero if this is the first
137 argument (not just the first nameless argument). */
8d3b0994
AC
138
139static void
033a42c2 140print_frame_nameless_args (struct frame_info *frame, long start, int num,
8d3b0994
AC
141 int first, struct ui_file *stream)
142{
e17a4113
UW
143 struct gdbarch *gdbarch = get_frame_arch (frame);
144 enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
8d3b0994
AC
145 int i;
146 CORE_ADDR argsaddr;
147 long arg_value;
148
149 for (i = 0; i < num; i++)
150 {
151 QUIT;
033a42c2 152 argsaddr = get_frame_args_address (frame);
8d3b0994
AC
153 if (!argsaddr)
154 return;
e17a4113
UW
155 arg_value = read_memory_integer (argsaddr + start,
156 sizeof (int), byte_order);
8d3b0994
AC
157 if (!first)
158 fprintf_filtered (stream, ", ");
159 fprintf_filtered (stream, "%ld", arg_value);
160 first = 0;
161 start += sizeof (int);
162 }
163}
164
033a42c2
MK
165/* Print the arguments of frame FRAME on STREAM, given the function
166 FUNC running in that frame (as a symbol), where NUM is the number
167 of arguments according to the stack frame (or -1 if the number of
168 arguments is unknown). */
8d3b0994 169
e3168615 170/* Note that currently the "number of arguments according to the
033a42c2 171 stack frame" is only known on VAX where i refers to the "number of
e3168615 172 ints of arguments according to the stack frame". */
8d3b0994
AC
173
174static void
033a42c2
MK
175print_frame_args (struct symbol *func, struct frame_info *frame,
176 int num, struct ui_file *stream)
8d3b0994 177{
79a45e25 178 struct ui_out *uiout = current_uiout;
8d3b0994 179 int first = 1;
8d3b0994 180 /* Offset of next stack argument beyond the one we have seen that is
033a42c2
MK
181 at the highest offset, or -1 if we haven't come to a stack
182 argument yet. */
8d3b0994 183 long highest_offset = -1;
8d3b0994
AC
184 /* Number of ints of arguments that we have printed so far. */
185 int args_printed = 0;
186 struct cleanup *old_chain, *list_chain;
187 struct ui_stream *stb;
a6bac58e
TT
188 /* True if we should print arguments, false otherwise. */
189 int print_args = strcmp (print_frame_arguments, "none");
190 /* True in "summary" mode, false otherwise. */
191 int summary = !strcmp (print_frame_arguments, "scalars");
8d3b0994
AC
192
193 stb = ui_out_stream_new (uiout);
194 old_chain = make_cleanup_ui_out_stream_delete (stb);
195
196 if (func)
197 {
033a42c2
MK
198 struct block *b = SYMBOL_BLOCK_VALUE (func);
199 struct dict_iterator iter;
200 struct symbol *sym;
201 struct value *val;
8d3b0994 202
de4f826b 203 ALL_BLOCK_SYMBOLS (b, iter, sym)
8d3b0994
AC
204 {
205 QUIT;
206
207 /* Keep track of the highest stack argument offset seen, and
208 skip over any kinds of symbols we don't care about. */
209
2a2d4dc3
AS
210 if (!SYMBOL_IS_ARGUMENT (sym))
211 continue;
212
8d3b0994
AC
213 switch (SYMBOL_CLASS (sym))
214 {
215 case LOC_ARG:
216 case LOC_REF_ARG:
217 {
218 long current_offset = SYMBOL_VALUE (sym);
033a42c2 219 int arg_size = TYPE_LENGTH (SYMBOL_TYPE (sym));
8d3b0994
AC
220
221 /* Compute address of next argument by adding the size of
222 this argument and rounding to an int boundary. */
223 current_offset =
224 ((current_offset + arg_size + sizeof (int) - 1)
225 & ~(sizeof (int) - 1));
226
033a42c2
MK
227 /* If this is the highest offset seen yet, set
228 highest_offset. */
8d3b0994
AC
229 if (highest_offset == -1
230 || (current_offset > highest_offset))
231 highest_offset = current_offset;
232
033a42c2
MK
233 /* Add the number of ints we're about to print to
234 args_printed. */
8d3b0994
AC
235 args_printed += (arg_size + sizeof (int) - 1) / sizeof (int);
236 }
237
033a42c2
MK
238 /* We care about types of symbols, but don't need to
239 keep track of stack offsets in them. */
2a2d4dc3 240 case LOC_REGISTER:
8d3b0994 241 case LOC_REGPARM_ADDR:
2a2d4dc3
AS
242 case LOC_COMPUTED:
243 case LOC_OPTIMIZED_OUT:
8d3b0994 244 default:
2a2d4dc3 245 break;
8d3b0994
AC
246 }
247
248 /* We have to look up the symbol because arguments can have
249 two entries (one a parameter, one a local) and the one we
250 want is the local, which lookup_symbol will find for us.
033a42c2 251 This includes gcc1 (not gcc2) on SPARC when passing a
8d3b0994
AC
252 small structure and gcc2 when the argument type is float
253 and it is passed as a double and converted to float by
254 the prologue (in the latter case the type of the LOC_ARG
255 symbol is double and the type of the LOC_LOCAL symbol is
256 float). */
033a42c2
MK
257 /* But if the parameter name is null, don't try it. Null
258 parameter names occur on the RS/6000, for traceback
259 tables. FIXME, should we even print them? */
8d3b0994 260
3567439c 261 if (*SYMBOL_LINKAGE_NAME (sym))
8d3b0994
AC
262 {
263 struct symbol *nsym;
433759f7 264
3567439c 265 nsym = lookup_symbol (SYMBOL_LINKAGE_NAME (sym),
2570f2b7 266 b, VAR_DOMAIN, NULL);
55765a25 267 gdb_assert (nsym != NULL);
2a2d4dc3
AS
268 if (SYMBOL_CLASS (nsym) == LOC_REGISTER
269 && !SYMBOL_IS_ARGUMENT (nsym))
8d3b0994 270 {
033a42c2
MK
271 /* There is a LOC_ARG/LOC_REGISTER pair. This means
272 that it was passed on the stack and loaded into a
273 register, or passed in a register and stored in a
274 stack slot. GDB 3.x used the LOC_ARG; GDB
275 4.0-4.11 used the LOC_REGISTER.
8d3b0994
AC
276
277 Reasons for using the LOC_ARG:
033a42c2
MK
278
279 (1) Because find_saved_registers may be slow for
280 remote debugging.
281
282 (2) Because registers are often re-used and stack
283 slots rarely (never?) are. Therefore using
284 the stack slot is much less likely to print
285 garbage.
8d3b0994
AC
286
287 Reasons why we might want to use the LOC_REGISTER:
033a42c2
MK
288
289 (1) So that the backtrace prints the same value
290 as "print foo". I see no compelling reason
291 why this needs to be the case; having the
292 backtrace print the value which was passed
293 in, and "print foo" print the value as
294 modified within the called function, makes
295 perfect sense to me.
296
297 Additional note: It might be nice if "info args"
298 displayed both values.
299
300 One more note: There is a case with SPARC
301 structure passing where we need to use the
302 LOC_REGISTER, but this is dealt with by creating
303 a single LOC_REGPARM in symbol reading. */
8d3b0994
AC
304
305 /* Leave sym (the LOC_ARG) alone. */
306 ;
307 }
308 else
309 sym = nsym;
310 }
311
312 /* Print the current arg. */
313 if (!first)
314 ui_out_text (uiout, ", ");
315 ui_out_wrap_hint (uiout, " ");
316
317 annotate_arg_begin ();
318
319 list_chain = make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
320 fprintf_symbol_filtered (stb->stream, SYMBOL_PRINT_NAME (sym),
033a42c2
MK
321 SYMBOL_LANGUAGE (sym),
322 DMGL_PARAMS | DMGL_ANSI);
8d3b0994
AC
323 ui_out_field_stream (uiout, "name", stb);
324 annotate_arg_name_end ();
325 ui_out_text (uiout, "=");
326
a6bac58e 327 if (print_args)
88408340 328 {
b99b5f66
JK
329 volatile struct gdb_exception except;
330
331 TRY_CATCH (except, RETURN_MASK_ERROR)
332 {
8afd712c
JK
333 const struct language_defn *language;
334 struct value_print_options opts;
335
b99b5f66
JK
336 /* Avoid value_print because it will deref ref parameters.
337 We just want to print their addresses. Print ??? for
338 args whose address we do not know. We pass 2 as
339 "recurse" to val_print because our standard indentation
340 here is 4 spaces, and val_print indents 2 for each
341 recurse. */
342 val = read_var_value (sym, frame);
343
8afd712c
JK
344 annotate_arg_value (value_type (val));
345
346 /* Use the appropriate language to display our symbol,
347 unless the user forced the language to a specific
348 language. */
349 if (language_mode == language_mode_auto)
350 language = language_def (SYMBOL_LANGUAGE (sym));
b99b5f66 351 else
8afd712c
JK
352 language = current_language;
353
354 get_raw_print_options (&opts);
355 opts.deref_ref = 0;
356 opts.summary = summary;
357 common_val_print (val, stb->stream, 2, &opts, language);
358 ui_out_field_stream (uiout, "value", stb);
b99b5f66
JK
359 }
360 if (except.reason < 0)
361 {
362 fprintf_filtered (stb->stream,
363 _("<error reading variable: %s>"),
364 except.message);
88408340 365 ui_out_field_stream (uiout, "value", stb);
b99b5f66 366 }
88408340
JB
367 }
368 else
369 ui_out_text (uiout, "...");
8d3b0994 370
8d3b0994
AC
371
372 /* Invoke ui_out_tuple_end. */
373 do_cleanups (list_chain);
374
375 annotate_arg_end ();
376
377 first = 0;
378 }
379 }
380
381 /* Don't print nameless args in situations where we don't know
382 enough about the stack to find them. */
383 if (num != -1)
384 {
385 long start;
386
387 if (highest_offset == -1)
7500260a 388 start = gdbarch_frame_args_skip (get_frame_arch (frame));
8d3b0994
AC
389 else
390 start = highest_offset;
391
033a42c2 392 print_frame_nameless_args (frame, start, num - args_printed,
8d3b0994
AC
393 first, stream);
394 }
033a42c2 395
8d3b0994
AC
396 do_cleanups (old_chain);
397}
398
033a42c2
MK
399/* Set the current source and line to the location given by frame
400 FRAME, if possible. When CENTER is true, adjust so the relevant
401 line is in the center of the next 'list'. */
c789492a 402
7abfe014 403void
033a42c2 404set_current_sal_from_frame (struct frame_info *frame, int center)
c789492a
FL
405{
406 struct symtab_and_line sal;
407
033a42c2 408 find_frame_sal (frame, &sal);
c789492a
FL
409 if (sal.symtab)
410 {
411 if (center)
412 sal.line = max (sal.line - get_lines_to_list () / 2, 1);
413 set_current_source_symtab_and_line (&sal);
414 }
415}
416
30c33a9f
HZ
417/* If ON, GDB will display disassembly of the next source line when
418 execution of the program being debugged stops.
481df73e
HZ
419 If AUTO (which is the default), or there's no line info to determine
420 the source line of the next instruction, display disassembly of next
421 instruction instead. */
30c33a9f
HZ
422
423static enum auto_boolean disassemble_next_line;
424
425static void
426show_disassemble_next_line (struct ui_file *file, int from_tty,
427 struct cmd_list_element *c,
428 const char *value)
429{
3e43a32a
MS
430 fprintf_filtered (file,
431 _("Debugger's willingness to use "
432 "disassemble-next-line is %s.\n"),
30c33a9f
HZ
433 value);
434}
435
30c33a9f
HZ
436/* Use TRY_CATCH to catch the exception from the gdb_disassembly
437 because it will be broken by filter sometime. */
438
439static void
13274fc3
UW
440do_gdb_disassembly (struct gdbarch *gdbarch,
441 int how_many, CORE_ADDR low, CORE_ADDR high)
30c33a9f
HZ
442{
443 volatile struct gdb_exception exception;
30c33a9f 444
b1d288d3 445 TRY_CATCH (exception, RETURN_MASK_ERROR)
30c33a9f 446 {
79a45e25
PA
447 gdb_disassembly (gdbarch, current_uiout, 0,
448 DISASSEMBLY_RAW_INSN, how_many,
449 low, high);
30c33a9f 450 }
b1d288d3
JK
451 if (exception.reason < 0)
452 {
453 /* If an exception was thrown while doing the disassembly, print
454 the error message, to give the user a clue of what happened. */
455 exception_print (gdb_stderr, exception);
456 }
30c33a9f
HZ
457}
458
033a42c2 459/* Print information about frame FRAME. The output is format according
65aa373f 460 to PRINT_LEVEL and PRINT_WHAT and PRINT_ARGS. The meaning of
033a42c2
MK
461 PRINT_WHAT is:
462
463 SRC_LINE: Print only source line.
464 LOCATION: Print only location.
465 LOC_AND_SRC: Print location and source line.
466
467 Used in "where" output, and to emit breakpoint or step
468 messages. */
c906108c 469
7789c6f5 470void
033a42c2 471print_frame_info (struct frame_info *frame, int print_level,
0faf0076 472 enum print_what print_what, int print_args)
c906108c 473{
5af949e3 474 struct gdbarch *gdbarch = get_frame_arch (frame);
c906108c 475 struct symtab_and_line sal;
c5394b80
JM
476 int source_print;
477 int location_print;
79a45e25 478 struct ui_out *uiout = current_uiout;
c906108c 479
033a42c2 480 if (get_frame_type (frame) == DUMMY_FRAME
36f15f55
UW
481 || get_frame_type (frame) == SIGTRAMP_FRAME
482 || get_frame_type (frame) == ARCH_FRAME)
c906108c 483 {
075559bc
AC
484 struct cleanup *uiout_cleanup
485 = make_cleanup_ui_out_tuple_begin_end (uiout, "frame");
c906108c 486
033a42c2 487 annotate_frame_begin (print_level ? frame_relative_level (frame) : 0,
5af949e3 488 gdbarch, get_frame_pc (frame));
6a3fe0a4 489
c906108c 490 /* Do this regardless of SOURCE because we don't have any source
c5aa993b 491 to list for this frame. */
0faf0076 492 if (print_level)
52c6a6ac
JJ
493 {
494 ui_out_text (uiout, "#");
0faf0076 495 ui_out_field_fmt_int (uiout, 2, ui_left, "level",
033a42c2 496 frame_relative_level (frame));
52c6a6ac 497 }
075559bc 498 if (ui_out_is_mi_like_p (uiout))
52c6a6ac 499 {
075559bc 500 annotate_frame_address ();
5af949e3
UW
501 ui_out_field_core_addr (uiout, "addr",
502 gdbarch, get_frame_pc (frame));
075559bc 503 annotate_frame_address_end ();
52c6a6ac 504 }
6a3fe0a4 505
033a42c2 506 if (get_frame_type (frame) == DUMMY_FRAME)
075559bc
AC
507 {
508 annotate_function_call ();
509 ui_out_field_string (uiout, "func", "<function called from gdb>");
510 }
033a42c2 511 else if (get_frame_type (frame) == SIGTRAMP_FRAME)
075559bc
AC
512 {
513 annotate_signal_handler_caller ();
514 ui_out_field_string (uiout, "func", "<signal handler called>");
515 }
36f15f55
UW
516 else if (get_frame_type (frame) == ARCH_FRAME)
517 {
518 ui_out_field_string (uiout, "func", "<cross-architecture call>");
519 }
075559bc 520 ui_out_text (uiout, "\n");
c906108c 521 annotate_frame_end ();
075559bc
AC
522
523 do_cleanups (uiout_cleanup);
c906108c
SS
524 return;
525 }
526
033a42c2
MK
527 /* If FRAME is not the innermost frame, that normally means that
528 FRAME->pc points to *after* the call instruction, and we want to
529 get the line containing the call, never the next line. But if
530 the next frame is a SIGTRAMP_FRAME or a DUMMY_FRAME, then the
531 next frame was not entered as the result of a call, and we want
532 to get the line containing FRAME->pc. */
533 find_frame_sal (frame, &sal);
c906108c 534
0faf0076
AC
535 location_print = (print_what == LOCATION
536 || print_what == LOC_AND_ADDRESS
537 || print_what == SRC_AND_LOC);
c5394b80
JM
538
539 if (location_print || !sal.symtab)
033a42c2 540 print_frame (frame, print_level, print_what, print_args, sal);
c5394b80 541
0faf0076 542 source_print = (print_what == SRC_LINE || print_what == SRC_AND_LOC);
0378c332 543
30c33a9f
HZ
544 /* If disassemble-next-line is set to auto or on and doesn't have
545 the line debug messages for $pc, output the next instruction. */
546 if ((disassemble_next_line == AUTO_BOOLEAN_AUTO
547 || disassemble_next_line == AUTO_BOOLEAN_TRUE)
548 && source_print && !sal.symtab)
13274fc3
UW
549 do_gdb_disassembly (get_frame_arch (frame), 1,
550 get_frame_pc (frame), get_frame_pc (frame) + 1);
30c33a9f 551
c5394b80
JM
552 if (source_print && sal.symtab)
553 {
554 int done = 0;
0faf0076 555 int mid_statement = ((print_what == SRC_LINE)
edb3359d 556 && frame_show_address (frame, sal));
c5394b80
JM
557
558 if (annotation_level)
559 done = identify_source_line (sal.symtab, sal.line, mid_statement,
033a42c2 560 get_frame_pc (frame));
c5394b80
JM
561 if (!done)
562 {
9a4105ab 563 if (deprecated_print_frame_info_listing_hook)
cbd3c883
MS
564 deprecated_print_frame_info_listing_hook (sal.symtab,
565 sal.line,
566 sal.line + 1, 0);
ba4bbdcb 567 else
c5394b80 568 {
79a45b7d 569 struct value_print_options opts;
433759f7 570
79a45b7d 571 get_user_print_options (&opts);
ba4bbdcb 572 /* We used to do this earlier, but that is clearly
c378eb4e 573 wrong. This function is used by many different
ba4bbdcb
KS
574 parts of gdb, including normal_stop in infrun.c,
575 which uses this to print out the current PC
576 when we stepi/nexti into the middle of a source
c378eb4e
MS
577 line. Only the command line really wants this
578 behavior. Other UIs probably would like the
cbd3c883 579 ability to decide for themselves if it is desired. */
79a45b7d 580 if (opts.addressprint && mid_statement)
ba4bbdcb 581 {
5af949e3
UW
582 ui_out_field_core_addr (uiout, "addr",
583 gdbarch, get_frame_pc (frame));
ba4bbdcb 584 ui_out_text (uiout, "\t");
ba4bbdcb
KS
585 }
586
587 print_source_lines (sal.symtab, sal.line, sal.line + 1, 0);
c5394b80 588 }
c5394b80 589 }
30c33a9f
HZ
590
591 /* If disassemble-next-line is set to on and there is line debug
592 messages, output assembly codes for next line. */
593 if (disassemble_next_line == AUTO_BOOLEAN_TRUE)
2b28d209 594 do_gdb_disassembly (get_frame_arch (frame), -1, sal.pc, sal.end);
c5394b80
JM
595 }
596
0faf0076 597 if (print_what != LOCATION)
e3eebbd7
PA
598 {
599 CORE_ADDR pc;
600
601 if (get_frame_pc_if_available (frame, &pc))
602 set_default_breakpoint (1, sal.pspace, pc, sal.symtab, sal.line);
603 else
604 set_default_breakpoint (0, 0, 0, 0, 0);
605 }
c5394b80
JM
606
607 annotate_frame_end ();
608
609 gdb_flush (gdb_stdout);
610}
611
e9e07ba6
JK
612/* Attempt to obtain the FUNNAME, FUNLANG and optionally FUNCP of the function
613 corresponding to FRAME. */
614
f8f6f20b
TJB
615void
616find_frame_funname (struct frame_info *frame, char **funname,
e9e07ba6 617 enum language *funlang, struct symbol **funcp)
c5394b80
JM
618{
619 struct symbol *func;
8b93c638 620
f8f6f20b
TJB
621 *funname = NULL;
622 *funlang = language_unknown;
e9e07ba6
JK
623 if (funcp)
624 *funcp = NULL;
c5394b80 625
edb3359d 626 func = get_frame_function (frame);
c906108c
SS
627 if (func)
628 {
629 /* In certain pathological cases, the symtabs give the wrong
c5aa993b
JM
630 function (when we are in the first function in a file which
631 is compiled without debugging symbols, the previous function
632 is compiled with debugging symbols, and the "foo.o" symbol
033a42c2
MK
633 that is supposed to tell us where the file with debugging
634 symbols ends has been truncated by ar because it is longer
635 than 15 characters). This also occurs if the user uses asm()
636 to create a function but not stabs for it (in a file compiled
637 with -g).
c5aa993b
JM
638
639 So look in the minimal symbol tables as well, and if it comes
640 up with a larger address for the function use that instead.
033a42c2
MK
641 I don't think this can ever cause any problems; there
642 shouldn't be any minimal symbols in the middle of a function;
643 if this is ever changed many parts of GDB will need to be
644 changed (and we'll create a find_pc_minimal_function or some
645 such). */
646
edb3359d
DJ
647 struct minimal_symbol *msymbol = NULL;
648
649 /* Don't attempt to do this for inlined functions, which do not
650 have a corresponding minimal symbol. */
651 if (!block_inlined_p (SYMBOL_BLOCK_VALUE (func)))
652 msymbol
653 = lookup_minimal_symbol_by_pc (get_frame_address_in_block (frame));
c906108c 654
c906108c 655 if (msymbol != NULL
c5aa993b 656 && (SYMBOL_VALUE_ADDRESS (msymbol)
c906108c
SS
657 > BLOCK_START (SYMBOL_BLOCK_VALUE (func))))
658 {
c906108c
SS
659 /* We also don't know anything about the function besides
660 its address and name. */
661 func = 0;
f8f6f20b
TJB
662 *funname = SYMBOL_PRINT_NAME (msymbol);
663 *funlang = SYMBOL_LANGUAGE (msymbol);
c906108c
SS
664 }
665 else
666 {
f8f6f20b
TJB
667 *funname = SYMBOL_PRINT_NAME (func);
668 *funlang = SYMBOL_LANGUAGE (func);
e9e07ba6
JK
669 if (funcp)
670 *funcp = func;
f8f6f20b 671 if (*funlang == language_cplus)
c5aa993b 672 {
033a42c2
MK
673 /* It seems appropriate to use SYMBOL_PRINT_NAME() here,
674 to display the demangled name that we already have
675 stored in the symbol table, but we stored a version
676 with DMGL_PARAMS turned on, and here we don't want to
3567439c 677 display parameters. So remove the parameters. */
f8f6f20b 678 char *func_only = cp_remove_params (*funname);
433759f7 679
3567439c
DJ
680 if (func_only)
681 {
f8f6f20b 682 *funname = func_only;
3567439c
DJ
683 make_cleanup (xfree, func_only);
684 }
c5aa993b 685 }
c906108c
SS
686 }
687 }
688 else
689 {
e3eebbd7
PA
690 struct minimal_symbol *msymbol;
691 CORE_ADDR pc;
033a42c2 692
e3eebbd7
PA
693 if (!get_frame_address_in_block_if_available (frame, &pc))
694 return;
695
696 msymbol = lookup_minimal_symbol_by_pc (pc);
c906108c
SS
697 if (msymbol != NULL)
698 {
f8f6f20b
TJB
699 *funname = SYMBOL_PRINT_NAME (msymbol);
700 *funlang = SYMBOL_LANGUAGE (msymbol);
c906108c
SS
701 }
702 }
f8f6f20b
TJB
703}
704
705static void
706print_frame (struct frame_info *frame, int print_level,
707 enum print_what print_what, int print_args,
708 struct symtab_and_line sal)
709{
5af949e3 710 struct gdbarch *gdbarch = get_frame_arch (frame);
79a45e25 711 struct ui_out *uiout = current_uiout;
f8f6f20b
TJB
712 char *funname = NULL;
713 enum language funlang = language_unknown;
714 struct ui_stream *stb;
715 struct cleanup *old_chain, *list_chain;
716 struct value_print_options opts;
e9e07ba6 717 struct symbol *func;
e3eebbd7
PA
718 CORE_ADDR pc = 0;
719 int pc_p;
720
721 pc_p = get_frame_pc_if_available (frame, &pc);
f8f6f20b
TJB
722
723 stb = ui_out_stream_new (uiout);
724 old_chain = make_cleanup_ui_out_stream_delete (stb);
725
e9e07ba6 726 find_frame_funname (frame, &funname, &funlang, &func);
c906108c 727
033a42c2 728 annotate_frame_begin (print_level ? frame_relative_level (frame) : 0,
e3eebbd7 729 gdbarch, pc);
c5394b80 730
666547aa 731 list_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "frame");
c5394b80 732
0faf0076 733 if (print_level)
8b93c638 734 {
8b93c638 735 ui_out_text (uiout, "#");
0faf0076 736 ui_out_field_fmt_int (uiout, 2, ui_left, "level",
033a42c2 737 frame_relative_level (frame));
8b93c638 738 }
79a45b7d
TT
739 get_user_print_options (&opts);
740 if (opts.addressprint)
e3eebbd7
PA
741 if (!sal.symtab
742 || frame_show_address (frame, sal)
0faf0076 743 || print_what == LOC_AND_ADDRESS)
c5394b80
JM
744 {
745 annotate_frame_address ();
e3eebbd7
PA
746 if (pc_p)
747 ui_out_field_core_addr (uiout, "addr", gdbarch, pc);
748 else
749 ui_out_field_string (uiout, "addr", "<unavailable>");
8b93c638
JM
750 annotate_frame_address_end ();
751 ui_out_text (uiout, " in ");
c5394b80
JM
752 }
753 annotate_frame_function_name ();
033a42c2
MK
754 fprintf_symbol_filtered (stb->stream, funname ? funname : "??",
755 funlang, DMGL_ANSI);
8b93c638
JM
756 ui_out_field_stream (uiout, "func", stb);
757 ui_out_wrap_hint (uiout, " ");
c5394b80
JM
758 annotate_frame_args ();
759
8b93c638 760 ui_out_text (uiout, " (");
0faf0076 761 if (print_args)
c906108c 762 {
311b5970
JK
763 struct gdbarch *gdbarch = get_frame_arch (frame);
764 int numargs;
d493eb33 765 struct cleanup *args_list_chain;
311b5970 766 volatile struct gdb_exception e;
433759f7 767
311b5970
JK
768 if (gdbarch_frame_num_args_p (gdbarch))
769 {
770 numargs = gdbarch_frame_num_args (gdbarch, frame);
771 gdb_assert (numargs >= 0);
772 }
773 else
774 numargs = -1;
775
68c81b54 776 args_list_chain = make_cleanup_ui_out_list_begin_end (uiout, "args");
311b5970
JK
777 TRY_CATCH (e, RETURN_MASK_ERROR)
778 {
779 print_frame_args (func, frame, numargs, gdb_stdout);
780 }
c378eb4e 781 /* FIXME: ARGS must be a list. If one argument is a string it
033a42c2 782 will have " that will not be properly escaped. */
666547aa 783 /* Invoke ui_out_tuple_end. */
d493eb33 784 do_cleanups (args_list_chain);
c5394b80
JM
785 QUIT;
786 }
8b93c638 787 ui_out_text (uiout, ")");
c5394b80
JM
788 if (sal.symtab && sal.symtab->filename)
789 {
790 annotate_frame_source_begin ();
8b93c638
JM
791 ui_out_wrap_hint (uiout, " ");
792 ui_out_text (uiout, " at ");
793 annotate_frame_source_file ();
794 ui_out_field_string (uiout, "file", sal.symtab->filename);
76ff342d
DJ
795 if (ui_out_is_mi_like_p (uiout))
796 {
797 const char *fullname = symtab_to_fullname (sal.symtab);
433759f7 798
76ff342d
DJ
799 if (fullname != NULL)
800 ui_out_field_string (uiout, "fullname", fullname);
801 }
8b93c638
JM
802 annotate_frame_source_file_end ();
803 ui_out_text (uiout, ":");
804 annotate_frame_source_line ();
805 ui_out_field_int (uiout, "line", sal.line);
c5394b80
JM
806 annotate_frame_source_end ();
807 }
c906108c 808
e3eebbd7 809 if (pc_p && (!funname || (!sal.symtab || !sal.symtab->filename)))
c906108c 810 {
a77053c2 811#ifdef PC_SOLIB
033a42c2 812 char *lib = PC_SOLIB (get_frame_pc (frame));
a77053c2 813#else
6c95b8df
PA
814 char *lib = solib_name_from_address (get_frame_program_space (frame),
815 get_frame_pc (frame));
a77053c2 816#endif
c5394b80 817 if (lib)
c906108c 818 {
c5394b80 819 annotate_frame_where ();
8b93c638
JM
820 ui_out_wrap_hint (uiout, " ");
821 ui_out_text (uiout, " from ");
822 ui_out_field_string (uiout, "from", lib);
c906108c 823 }
c906108c 824 }
e514a9d6 825
666547aa 826 /* do_cleanups will call ui_out_tuple_end() for us. */
e6e0bfab 827 do_cleanups (list_chain);
8b93c638
JM
828 ui_out_text (uiout, "\n");
829 do_cleanups (old_chain);
c906108c
SS
830}
831\f
c5aa993b 832
033a42c2
MK
833/* Read a frame specification in whatever the appropriate format is
834 from FRAME_EXP. Call error(), printing MESSAGE, if the
835 specification is in any way invalid (so this function never returns
836 NULL). When SEPECTED_P is non-NULL set its target to indicate that
837 the default selected frame was used. */
c906108c 838
1c8831c5
AC
839static struct frame_info *
840parse_frame_specification_1 (const char *frame_exp, const char *message,
841 int *selected_frame_p)
c906108c 842{
1c8831c5
AC
843 int numargs;
844 struct value *args[4];
845 CORE_ADDR addrs[ARRAY_SIZE (args)];
c5aa993b 846
1c8831c5
AC
847 if (frame_exp == NULL)
848 numargs = 0;
849 else
c906108c 850 {
1c8831c5
AC
851 numargs = 0;
852 while (1)
c906108c 853 {
1c8831c5
AC
854 char *addr_string;
855 struct cleanup *cleanup;
856 const char *p;
857
858 /* Skip leading white space, bail of EOL. */
859 while (isspace (*frame_exp))
860 frame_exp++;
861 if (!*frame_exp)
862 break;
c906108c 863
1c8831c5
AC
864 /* Parse the argument, extract it, save it. */
865 for (p = frame_exp;
866 *p && !isspace (*p);
867 p++);
868 addr_string = savestring (frame_exp, p - frame_exp);
c906108c 869 frame_exp = p;
1c8831c5
AC
870 cleanup = make_cleanup (xfree, addr_string);
871
872 /* NOTE: Parse and evaluate expression, but do not use
873 functions such as parse_and_eval_long or
874 parse_and_eval_address to also extract the value.
875 Instead value_as_long and value_as_address are used.
876 This avoids problems with expressions that contain
877 side-effects. */
878 if (numargs >= ARRAY_SIZE (args))
8a3fe4f8 879 error (_("Too many args in frame specification"));
1c8831c5
AC
880 args[numargs++] = parse_and_eval (addr_string);
881
882 do_cleanups (cleanup);
c906108c
SS
883 }
884 }
885
1c8831c5
AC
886 /* If no args, default to the selected frame. */
887 if (numargs == 0)
c906108c 888 {
1c8831c5
AC
889 if (selected_frame_p != NULL)
890 (*selected_frame_p) = 1;
891 return get_selected_frame (message);
892 }
c906108c 893
1c8831c5
AC
894 /* None of the remaining use the selected frame. */
895 if (selected_frame_p != NULL)
98f276a0 896 (*selected_frame_p) = 0;
c906108c 897
1c8831c5
AC
898 /* Assume the single arg[0] is an integer, and try using that to
899 select a frame relative to current. */
900 if (numargs == 1)
901 {
902 struct frame_info *fid;
903 int level = value_as_long (args[0]);
433759f7 904
1c8831c5
AC
905 fid = find_relative_frame (get_current_frame (), &level);
906 if (level == 0)
c378eb4e 907 /* find_relative_frame was successful. */
1c8831c5
AC
908 return fid;
909 }
c906108c 910
1c8831c5
AC
911 /* Convert each value into a corresponding address. */
912 {
913 int i;
433759f7 914
1c8831c5 915 for (i = 0; i < numargs; i++)
1e275f79 916 addrs[i] = value_as_address (args[i]);
1c8831c5 917 }
c5aa993b 918
1c8831c5
AC
919 /* Assume that the single arg[0] is an address, use that to identify
920 a frame with a matching ID. Should this also accept stack/pc or
921 stack/pc/special. */
922 if (numargs == 1)
923 {
924 struct frame_id id = frame_id_build_wild (addrs[0]);
925 struct frame_info *fid;
926
1c8831c5
AC
927 /* If (s)he specifies the frame with an address, he deserves
928 what (s)he gets. Still, give the highest one that matches.
929 (NOTE: cagney/2004-10-29: Why highest, or outer-most, I don't
930 know). */
931 for (fid = get_current_frame ();
932 fid != NULL;
933 fid = get_prev_frame (fid))
934 {
935 if (frame_id_eq (id, get_frame_id (fid)))
936 {
c7ce8faa
DJ
937 struct frame_info *prev_frame;
938
939 while (1)
940 {
941 prev_frame = get_prev_frame (fid);
942 if (!prev_frame
943 || !frame_id_eq (id, get_frame_id (prev_frame)))
944 break;
945 fid = prev_frame;
946 }
1c8831c5
AC
947 return fid;
948 }
949 }
c906108c
SS
950 }
951
1c8831c5
AC
952 /* We couldn't identify the frame as an existing frame, but
953 perhaps we can create one with a single argument. */
1c8831c5
AC
954 if (numargs == 1)
955 return create_new_frame (addrs[0], 0);
cd65c8f6
AC
956 else if (numargs == 2)
957 return create_new_frame (addrs[0], addrs[1]);
958 else
8a3fe4f8 959 error (_("Too many args in frame specification"));
1c8831c5
AC
960}
961
9c833c82 962static struct frame_info *
1c8831c5
AC
963parse_frame_specification (char *frame_exp)
964{
965 return parse_frame_specification_1 (frame_exp, NULL, NULL);
c906108c
SS
966}
967
033a42c2
MK
968/* Print verbosely the selected frame or the frame at address
969 ADDR_EXP. Absolutely all information in the frame is printed. */
c906108c
SS
970
971static void
fba45db2 972frame_info (char *addr_exp, int from_tty)
c906108c
SS
973{
974 struct frame_info *fi;
975 struct symtab_and_line sal;
976 struct symbol *func;
977 struct symtab *s;
978 struct frame_info *calling_frame_info;
167e4384 979 int numregs;
c906108c
SS
980 char *funname = 0;
981 enum language funlang = language_unknown;
82de1e5b 982 const char *pc_regname;
1c8831c5 983 int selected_frame_p;
7500260a 984 struct gdbarch *gdbarch;
3567439c 985 struct cleanup *back_to = make_cleanup (null_cleanup, NULL);
008f8f2e
PA
986 CORE_ADDR frame_pc;
987 int frame_pc_p;
988 CORE_ADDR caller_pc;
c906108c 989
1c8831c5 990 fi = parse_frame_specification_1 (addr_exp, "No stack.", &selected_frame_p);
12368003 991 gdbarch = get_frame_arch (fi);
c906108c 992
82de1e5b
AC
993 /* Name of the value returned by get_frame_pc(). Per comments, "pc"
994 is not a good name. */
12368003 995 if (gdbarch_pc_regnum (gdbarch) >= 0)
3e8c568d 996 /* OK, this is weird. The gdbarch_pc_regnum hardware register's value can
82de1e5b
AC
997 easily not match that of the internal value returned by
998 get_frame_pc(). */
12368003 999 pc_regname = gdbarch_register_name (gdbarch, gdbarch_pc_regnum (gdbarch));
82de1e5b 1000 else
3e8c568d 1001 /* But then, this is weird to. Even without gdbarch_pc_regnum, an
82de1e5b
AC
1002 architectures will often have a hardware register called "pc",
1003 and that register's value, again, can easily not match
1004 get_frame_pc(). */
1005 pc_regname = "pc";
1006
008f8f2e 1007 frame_pc_p = get_frame_pc_if_available (fi, &frame_pc);
1058bca7 1008 find_frame_sal (fi, &sal);
c906108c 1009 func = get_frame_function (fi);
008f8f2e 1010 s = sal.symtab;
c906108c
SS
1011 if (func)
1012 {
3567439c 1013 funname = SYMBOL_PRINT_NAME (func);
c5aa993b
JM
1014 funlang = SYMBOL_LANGUAGE (func);
1015 if (funlang == language_cplus)
1016 {
3567439c
DJ
1017 /* It seems appropriate to use SYMBOL_PRINT_NAME() here,
1018 to display the demangled name that we already have
1019 stored in the symbol table, but we stored a version
1020 with DMGL_PARAMS turned on, and here we don't want to
1021 display parameters. So remove the parameters. */
1022 char *func_only = cp_remove_params (funname);
433759f7 1023
3567439c
DJ
1024 if (func_only)
1025 {
1026 funname = func_only;
1027 make_cleanup (xfree, func_only);
1028 }
c5aa993b 1029 }
c906108c 1030 }
008f8f2e 1031 else if (frame_pc_p)
c906108c 1032 {
033a42c2
MK
1033 struct minimal_symbol *msymbol;
1034
008f8f2e 1035 msymbol = lookup_minimal_symbol_by_pc (frame_pc);
c906108c
SS
1036 if (msymbol != NULL)
1037 {
3567439c 1038 funname = SYMBOL_PRINT_NAME (msymbol);
c906108c
SS
1039 funlang = SYMBOL_LANGUAGE (msymbol);
1040 }
1041 }
1042 calling_frame_info = get_prev_frame (fi);
1043
1c8831c5 1044 if (selected_frame_p && frame_relative_level (fi) >= 0)
c906108c 1045 {
a3f17187 1046 printf_filtered (_("Stack level %d, frame at "),
1c8831c5 1047 frame_relative_level (fi));
c906108c
SS
1048 }
1049 else
1050 {
a3f17187 1051 printf_filtered (_("Stack frame at "));
c906108c 1052 }
5af949e3 1053 fputs_filtered (paddress (gdbarch, get_frame_base (fi)), gdb_stdout);
9c833c82 1054 printf_filtered (":\n");
82de1e5b 1055 printf_filtered (" %s = ", pc_regname);
008f8f2e
PA
1056 if (frame_pc_p)
1057 fputs_filtered (paddress (gdbarch, get_frame_pc (fi)), gdb_stdout);
1058 else
1059 fputs_filtered ("<unavailable>", gdb_stdout);
c906108c
SS
1060
1061 wrap_here (" ");
1062 if (funname)
1063 {
1064 printf_filtered (" in ");
1065 fprintf_symbol_filtered (gdb_stdout, funname, funlang,
1066 DMGL_ANSI | DMGL_PARAMS);
1067 }
1068 wrap_here (" ");
1069 if (sal.symtab)
1070 printf_filtered (" (%s:%d)", sal.symtab->filename, sal.line);
1071 puts_filtered ("; ");
1072 wrap_here (" ");
82de1e5b 1073 printf_filtered ("saved %s ", pc_regname);
008f8f2e
PA
1074 if (frame_unwind_caller_pc_if_available (fi, &caller_pc))
1075 fputs_filtered (paddress (gdbarch, caller_pc), gdb_stdout);
1076 else
1077 fputs_filtered ("<unavailable>", gdb_stdout);
c906108c
SS
1078 printf_filtered ("\n");
1079
55feb689
DJ
1080 if (calling_frame_info == NULL)
1081 {
1082 enum unwind_stop_reason reason;
1083
1084 reason = get_frame_unwind_stop_reason (fi);
1085 if (reason != UNWIND_NO_REASON)
1086 printf_filtered (_(" Outermost frame: %s\n"),
1087 frame_stop_reason_string (reason));
1088 }
edb3359d
DJ
1089 else if (get_frame_type (fi) == INLINE_FRAME)
1090 printf_filtered (" inlined into frame %d",
1091 frame_relative_level (get_prev_frame (fi)));
1092 else
c906108c
SS
1093 {
1094 printf_filtered (" called by frame at ");
5af949e3 1095 fputs_filtered (paddress (gdbarch, get_frame_base (calling_frame_info)),
ed49a04f 1096 gdb_stdout);
c906108c 1097 }
75e3c1f9 1098 if (get_next_frame (fi) && calling_frame_info)
c906108c
SS
1099 puts_filtered (",");
1100 wrap_here (" ");
75e3c1f9 1101 if (get_next_frame (fi))
c906108c
SS
1102 {
1103 printf_filtered (" caller of frame at ");
5af949e3 1104 fputs_filtered (paddress (gdbarch, get_frame_base (get_next_frame (fi))),
ed49a04f 1105 gdb_stdout);
c906108c 1106 }
75e3c1f9 1107 if (get_next_frame (fi) || calling_frame_info)
c906108c 1108 puts_filtered ("\n");
55feb689 1109
c906108c 1110 if (s)
1058bca7
AC
1111 printf_filtered (" source language %s.\n",
1112 language_str (s->language));
c906108c 1113
c906108c
SS
1114 {
1115 /* Address of the argument list for this frame, or 0. */
da62e633 1116 CORE_ADDR arg_list = get_frame_args_address (fi);
c906108c
SS
1117 /* Number of args for this frame, or -1 if unknown. */
1118 int numargs;
1119
1120 if (arg_list == 0)
1121 printf_filtered (" Arglist at unknown address.\n");
1122 else
1123 {
1124 printf_filtered (" Arglist at ");
5af949e3 1125 fputs_filtered (paddress (gdbarch, arg_list), gdb_stdout);
c906108c
SS
1126 printf_filtered (",");
1127
7500260a 1128 if (!gdbarch_frame_num_args_p (gdbarch))
983a287a
AC
1129 {
1130 numargs = -1;
1131 puts_filtered (" args: ");
1132 }
c906108c 1133 else
983a287a 1134 {
7500260a 1135 numargs = gdbarch_frame_num_args (gdbarch, fi);
983a287a
AC
1136 gdb_assert (numargs >= 0);
1137 if (numargs == 0)
1138 puts_filtered (" no args.");
1139 else if (numargs == 1)
1140 puts_filtered (" 1 arg: ");
1141 else
1142 printf_filtered (" %d args: ", numargs);
1143 }
c906108c
SS
1144 print_frame_args (func, fi, numargs, gdb_stdout);
1145 puts_filtered ("\n");
1146 }
1147 }
1148 {
1149 /* Address of the local variables for this frame, or 0. */
da62e633 1150 CORE_ADDR arg_list = get_frame_locals_address (fi);
c906108c
SS
1151
1152 if (arg_list == 0)
1153 printf_filtered (" Locals at unknown address,");
1154 else
1155 {
1156 printf_filtered (" Locals at ");
5af949e3 1157 fputs_filtered (paddress (gdbarch, arg_list), gdb_stdout);
c906108c
SS
1158 printf_filtered (",");
1159 }
1160 }
1161
4f460812
AC
1162 /* Print as much information as possible on the location of all the
1163 registers. */
1164 {
1165 enum lval_type lval;
1166 int optimized;
0fdb4f18 1167 int unavailable;
4f460812
AC
1168 CORE_ADDR addr;
1169 int realnum;
1170 int count;
1171 int i;
1172 int need_nl = 1;
1173
1174 /* The sp is special; what's displayed isn't the save address, but
1175 the value of the previous frame's sp. This is a legacy thing,
1176 at one stage the frame cached the previous frame's SP instead
1177 of its address, hence it was easiest to just display the cached
1178 value. */
7500260a 1179 if (gdbarch_sp_regnum (gdbarch) >= 0)
4f460812
AC
1180 {
1181 /* Find out the location of the saved stack pointer with out
1182 actually evaluating it. */
7500260a 1183 frame_register_unwind (fi, gdbarch_sp_regnum (gdbarch),
0fdb4f18 1184 &optimized, &unavailable, &lval, &addr,
4f460812 1185 &realnum, NULL);
0fdb4f18 1186 if (!optimized && !unavailable && lval == not_lval)
c906108c 1187 {
e17a4113
UW
1188 enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
1189 int sp_size = register_size (gdbarch, gdbarch_sp_regnum (gdbarch));
10c42a71 1190 gdb_byte value[MAX_REGISTER_SIZE];
4f460812 1191 CORE_ADDR sp;
433759f7 1192
7500260a 1193 frame_register_unwind (fi, gdbarch_sp_regnum (gdbarch),
0fdb4f18 1194 &optimized, &unavailable, &lval, &addr,
4f460812 1195 &realnum, value);
af1342ab
AC
1196 /* NOTE: cagney/2003-05-22: This is assuming that the
1197 stack pointer was packed as an unsigned integer. That
1198 may or may not be valid. */
e17a4113 1199 sp = extract_unsigned_integer (value, sp_size, byte_order);
4f460812 1200 printf_filtered (" Previous frame's sp is ");
5af949e3 1201 fputs_filtered (paddress (gdbarch, sp), gdb_stdout);
4f460812
AC
1202 printf_filtered ("\n");
1203 need_nl = 0;
c906108c 1204 }
0fdb4f18 1205 else if (!optimized && !unavailable && lval == lval_memory)
4f460812
AC
1206 {
1207 printf_filtered (" Previous frame's sp at ");
5af949e3 1208 fputs_filtered (paddress (gdbarch, addr), gdb_stdout);
4f460812
AC
1209 printf_filtered ("\n");
1210 need_nl = 0;
1211 }
0fdb4f18 1212 else if (!optimized && !unavailable && lval == lval_register)
4f460812
AC
1213 {
1214 printf_filtered (" Previous frame's sp in %s\n",
7500260a 1215 gdbarch_register_name (gdbarch, realnum));
4f460812
AC
1216 need_nl = 0;
1217 }
1218 /* else keep quiet. */
1219 }
1220
1221 count = 0;
7500260a
UW
1222 numregs = gdbarch_num_regs (gdbarch)
1223 + gdbarch_num_pseudo_regs (gdbarch);
4f460812 1224 for (i = 0; i < numregs; i++)
7500260a
UW
1225 if (i != gdbarch_sp_regnum (gdbarch)
1226 && gdbarch_register_reggroup_p (gdbarch, i, all_reggroup))
4f460812
AC
1227 {
1228 /* Find out the location of the saved register without
1229 fetching the corresponding value. */
0fdb4f18
PA
1230 frame_register_unwind (fi, i, &optimized, &unavailable,
1231 &lval, &addr, &realnum, NULL);
4f460812
AC
1232 /* For moment, only display registers that were saved on the
1233 stack. */
0fdb4f18 1234 if (!optimized && !unavailable && lval == lval_memory)
4f460812
AC
1235 {
1236 if (count == 0)
1237 puts_filtered (" Saved registers:\n ");
1238 else
1239 puts_filtered (",");
1240 wrap_here (" ");
c9f4d572 1241 printf_filtered (" %s at ",
7500260a 1242 gdbarch_register_name (gdbarch, i));
5af949e3 1243 fputs_filtered (paddress (gdbarch, addr), gdb_stdout);
4f460812
AC
1244 count++;
1245 }
1246 }
1247 if (count || need_nl)
c906108c 1248 puts_filtered ("\n");
4f460812 1249 }
3567439c
DJ
1250
1251 do_cleanups (back_to);
c906108c
SS
1252}
1253
033a42c2
MK
1254/* Print briefly all stack frames or just the innermost COUNT_EXP
1255 frames. */
c906108c
SS
1256
1257static void
fba45db2 1258backtrace_command_1 (char *count_exp, int show_locals, int from_tty)
c906108c
SS
1259{
1260 struct frame_info *fi;
52f0bd74
AC
1261 int count;
1262 int i;
1263 struct frame_info *trailing;
1264 int trailing_level;
c906108c
SS
1265
1266 if (!target_has_stack)
8a3fe4f8 1267 error (_("No stack."));
c906108c 1268
033a42c2
MK
1269 /* The following code must do two things. First, it must set the
1270 variable TRAILING to the frame from which we should start
c906108c
SS
1271 printing. Second, it must set the variable count to the number
1272 of frames which we should print, or -1 if all of them. */
1273 trailing = get_current_frame ();
d082b2bb 1274
c906108c
SS
1275 trailing_level = 0;
1276 if (count_exp)
1277 {
bb518678 1278 count = parse_and_eval_long (count_exp);
c906108c
SS
1279 if (count < 0)
1280 {
1281 struct frame_info *current;
1282
1283 count = -count;
1284
1285 current = trailing;
1286 while (current && count--)
1287 {
1288 QUIT;
1289 current = get_prev_frame (current);
1290 }
c5aa993b 1291
033a42c2
MK
1292 /* Will stop when CURRENT reaches the top of the stack.
1293 TRAILING will be COUNT below it. */
c906108c
SS
1294 while (current)
1295 {
1296 QUIT;
1297 trailing = get_prev_frame (trailing);
1298 current = get_prev_frame (current);
1299 trailing_level++;
1300 }
c5aa993b 1301
c906108c
SS
1302 count = -1;
1303 }
1304 }
1305 else
1306 count = -1;
1307
1308 if (info_verbose)
1309 {
033a42c2
MK
1310 /* Read in symbols for all of the frames. Need to do this in a
1311 separate pass so that "Reading in symbols for xxx" messages
1312 don't screw up the appearance of the backtrace. Also if
1313 people have strong opinions against reading symbols for
c5aa993b 1314 backtrace this may have to be an option. */
c906108c 1315 i = count;
033a42c2 1316 for (fi = trailing; fi != NULL && i--; fi = get_prev_frame (fi))
c906108c 1317 {
ccefe4c4 1318 CORE_ADDR pc;
433759f7 1319
c906108c 1320 QUIT;
ccefe4c4
TT
1321 pc = get_frame_address_in_block (fi);
1322 find_pc_sect_symtab_via_partial (pc, find_pc_mapped_section (pc));
c906108c
SS
1323 }
1324 }
1325
033a42c2 1326 for (i = 0, fi = trailing; fi && count--; i++, fi = get_prev_frame (fi))
c906108c
SS
1327 {
1328 QUIT;
1329
1330 /* Don't use print_stack_frame; if an error() occurs it probably
c5aa993b
JM
1331 means further attempts to backtrace would fail (on the other
1332 hand, perhaps the code does or could be fixed to make sure
1333 the frame->prev field gets set to NULL in that case). */
0faf0076 1334 print_frame_info (fi, 1, LOCATION, 1);
c906108c 1335 if (show_locals)
c5aa993b 1336 print_frame_local_vars (fi, 1, gdb_stdout);
55feb689
DJ
1337
1338 /* Save the last frame to check for error conditions. */
1339 trailing = fi;
c906108c
SS
1340 }
1341
1342 /* If we've stopped before the end, mention that. */
1343 if (fi && from_tty)
a3f17187 1344 printf_filtered (_("(More stack frames follow...)\n"));
55feb689
DJ
1345
1346 /* If we've run out of frames, and the reason appears to be an error
1347 condition, print it. */
1348 if (fi == NULL && trailing != NULL)
1349 {
1350 enum unwind_stop_reason reason;
1351
1352 reason = get_frame_unwind_stop_reason (trailing);
1353 if (reason > UNWIND_FIRST_ERROR)
1354 printf_filtered (_("Backtrace stopped: %s\n"),
1355 frame_stop_reason_string (reason));
1356 }
c906108c
SS
1357}
1358
1359static void
fba45db2 1360backtrace_command (char *arg, int from_tty)
c906108c 1361{
5fe41fbf 1362 struct cleanup *old_chain = make_cleanup (null_cleanup, NULL);
033a42c2 1363 int fulltrace_arg = -1, arglen = 0, argc = 0;
c906108c 1364
033a42c2 1365 if (arg)
c906108c 1366 {
033a42c2 1367 char **argv;
c906108c
SS
1368 int i;
1369
d1a41061 1370 argv = gdb_buildargv (arg);
5fe41fbf 1371 make_cleanup_freeargv (argv);
c906108c 1372 argc = 0;
033a42c2 1373 for (i = 0; argv[i]; i++)
c5aa993b 1374 {
745b8ca0 1375 unsigned int j;
c5aa993b 1376
033a42c2 1377 for (j = 0; j < strlen (argv[i]); j++)
c5aa993b
JM
1378 argv[i][j] = tolower (argv[i][j]);
1379
033a42c2
MK
1380 if (fulltrace_arg < 0 && subset_compare (argv[i], "full"))
1381 fulltrace_arg = argc;
c5aa993b
JM
1382 else
1383 {
033a42c2 1384 arglen += strlen (argv[i]);
c5aa993b 1385 argc++;
c5aa993b
JM
1386 }
1387 }
033a42c2
MK
1388 arglen += argc;
1389 if (fulltrace_arg >= 0)
c5aa993b 1390 {
033a42c2 1391 if (arglen > 0)
c5aa993b 1392 {
033a42c2 1393 arg = xmalloc (arglen + 1);
b1d288d3
JK
1394 make_cleanup (xfree, arg);
1395 arg[0] = 0;
033a42c2 1396 for (i = 0; i < (argc + 1); i++)
c5aa993b 1397 {
033a42c2 1398 if (i != fulltrace_arg)
c5aa993b 1399 {
033a42c2
MK
1400 strcat (arg, argv[i]);
1401 strcat (arg, " ");
c5aa993b
JM
1402 }
1403 }
1404 }
1405 else
033a42c2 1406 arg = NULL;
c5aa993b 1407 }
c906108c
SS
1408 }
1409
b1d288d3 1410 backtrace_command_1 (arg, fulltrace_arg >= 0 /* show_locals */, from_tty);
c906108c 1411
5fe41fbf 1412 do_cleanups (old_chain);
c906108c
SS
1413}
1414
1415static void
fba45db2 1416backtrace_full_command (char *arg, int from_tty)
c906108c 1417{
b1d288d3 1418 backtrace_command_1 (arg, 1 /* show_locals */, from_tty);
c906108c 1419}
c906108c 1420\f
c5aa993b 1421
2c58c0a9
PA
1422/* Iterate over the local variables of a block B, calling CB with
1423 CB_DATA. */
c906108c 1424
2c58c0a9
PA
1425static void
1426iterate_over_block_locals (struct block *b,
1427 iterate_over_block_arg_local_vars_cb cb,
1428 void *cb_data)
c906108c 1429{
de4f826b 1430 struct dict_iterator iter;
de4f826b 1431 struct symbol *sym;
c906108c 1432
de4f826b 1433 ALL_BLOCK_SYMBOLS (b, iter, sym)
c906108c 1434 {
c906108c
SS
1435 switch (SYMBOL_CLASS (sym))
1436 {
1437 case LOC_LOCAL:
1438 case LOC_REGISTER:
1439 case LOC_STATIC:
4c2df51b 1440 case LOC_COMPUTED:
2a2d4dc3
AS
1441 if (SYMBOL_IS_ARGUMENT (sym))
1442 break;
2c58c0a9 1443 (*cb) (SYMBOL_PRINT_NAME (sym), sym, cb_data);
c906108c
SS
1444 break;
1445
1446 default:
1447 /* Ignore symbols which are not locals. */
1448 break;
1449 }
1450 }
c906108c
SS
1451}
1452
65c06092 1453
c906108c
SS
1454/* Same, but print labels. */
1455
65c06092
JB
1456#if 0
1457/* Commented out, as the code using this function has also been
1458 commented out. FIXME:brobecker/2009-01-13: Find out why the code
1459 was commented out in the first place. The discussion introducing
1460 this change (2007-12-04: Support lexical blocks and function bodies
1461 that occupy non-contiguous address ranges) did not explain why
1462 this change was made. */
c906108c 1463static int
5af949e3
UW
1464print_block_frame_labels (struct gdbarch *gdbarch, struct block *b,
1465 int *have_default, struct ui_file *stream)
c906108c 1466{
de4f826b 1467 struct dict_iterator iter;
52f0bd74
AC
1468 struct symbol *sym;
1469 int values_printed = 0;
c906108c 1470
de4f826b 1471 ALL_BLOCK_SYMBOLS (b, iter, sym)
c906108c 1472 {
3567439c 1473 if (strcmp (SYMBOL_LINKAGE_NAME (sym), "default") == 0)
c906108c
SS
1474 {
1475 if (*have_default)
1476 continue;
1477 *have_default = 1;
1478 }
1479 if (SYMBOL_CLASS (sym) == LOC_LABEL)
1480 {
1481 struct symtab_and_line sal;
79a45b7d 1482 struct value_print_options opts;
433759f7 1483
c906108c
SS
1484 sal = find_pc_line (SYMBOL_VALUE_ADDRESS (sym), 0);
1485 values_printed = 1;
de5ad195 1486 fputs_filtered (SYMBOL_PRINT_NAME (sym), stream);
79a45b7d
TT
1487 get_user_print_options (&opts);
1488 if (opts.addressprint)
c906108c
SS
1489 {
1490 fprintf_filtered (stream, " ");
5af949e3
UW
1491 fputs_filtered (paddress (gdbarch, SYMBOL_VALUE_ADDRESS (sym)),
1492 stream);
c906108c
SS
1493 }
1494 fprintf_filtered (stream, " in file %s, line %d\n",
1495 sal.symtab->filename, sal.line);
1496 }
1497 }
033a42c2 1498
c906108c
SS
1499 return values_printed;
1500}
65c06092 1501#endif
c906108c 1502
2c58c0a9
PA
1503/* Iterate over all the local variables in block B, including all its
1504 superblocks, stopping when the top-level block is reached. */
1505
1506void
1507iterate_over_block_local_vars (struct block *block,
1508 iterate_over_block_arg_local_vars_cb cb,
1509 void *cb_data)
1510{
1511 while (block)
1512 {
1513 iterate_over_block_locals (block, cb, cb_data);
1514 /* After handling the function's top-level block, stop. Don't
1515 continue to its superblock, the block of per-file
1516 symbols. */
1517 if (BLOCK_FUNCTION (block))
1518 break;
1519 block = BLOCK_SUPERBLOCK (block);
1520 }
1521}
1522
1523/* Data to be passed around in the calls to the locals and args
1524 iterators. */
c906108c 1525
2c58c0a9
PA
1526struct print_variable_and_value_data
1527{
1528 struct frame_info *frame;
1529 int num_tabs;
1530 struct ui_file *stream;
1531 int values_printed;
1532};
1533
c378eb4e 1534/* The callback for the locals and args iterators. */
2c58c0a9
PA
1535
1536static void
1537do_print_variable_and_value (const char *print_name,
1538 struct symbol *sym,
1539 void *cb_data)
1540{
1541 struct print_variable_and_value_data *p = cb_data;
1542
1543 print_variable_and_value (print_name, sym,
1544 p->frame, p->stream, p->num_tabs);
1545 p->values_printed = 1;
1546}
c906108c
SS
1547
1548static void
033a42c2 1549print_frame_local_vars (struct frame_info *frame, int num_tabs,
aa1ee363 1550 struct ui_file *stream)
c906108c 1551{
2c58c0a9
PA
1552 struct print_variable_and_value_data cb_data;
1553 struct block *block;
1d4f5741
PA
1554 CORE_ADDR pc;
1555
1556 if (!get_frame_pc_if_available (frame, &pc))
1557 {
1558 fprintf_filtered (stream,
1559 _("PC unavailable, cannot determine locals.\n"));
1560 return;
1561 }
c906108c 1562
2c58c0a9 1563 block = get_frame_block (frame, 0);
c906108c
SS
1564 if (block == 0)
1565 {
1566 fprintf_filtered (stream, "No symbol table info available.\n");
1567 return;
1568 }
c5aa993b 1569
2c58c0a9
PA
1570 cb_data.frame = frame;
1571 cb_data.num_tabs = 4 * num_tabs;
1572 cb_data.stream = stream;
1573 cb_data.values_printed = 0;
1574
1575 iterate_over_block_local_vars (block,
1576 do_print_variable_and_value,
1577 &cb_data);
c906108c 1578
2c58c0a9 1579 if (!cb_data.values_printed)
033a42c2 1580 fprintf_filtered (stream, _("No locals.\n"));
c906108c
SS
1581}
1582
1583/* Same, but print labels. */
1584
1585static void
033a42c2 1586print_frame_label_vars (struct frame_info *frame, int this_level_only,
aa1ee363 1587 struct ui_file *stream)
c906108c 1588{
801e3a5b
JB
1589#if 1
1590 fprintf_filtered (stream, "print_frame_label_vars disabled.\n");
1591#else
52f0bd74 1592 struct blockvector *bl;
033a42c2 1593 struct block *block = get_frame_block (frame, 0);
5af949e3 1594 struct gdbarch *gdbarch = get_frame_arch (frame);
52f0bd74 1595 int values_printed = 0;
c906108c
SS
1596 int index, have_default = 0;
1597 char *blocks_printed;
033a42c2 1598 CORE_ADDR pc = get_frame_pc (frame);
c906108c
SS
1599
1600 if (block == 0)
1601 {
1602 fprintf_filtered (stream, "No symbol table info available.\n");
1603 return;
1604 }
1605
1606 bl = blockvector_for_pc (BLOCK_END (block) - 4, &index);
033a42c2 1607 blocks_printed = alloca (BLOCKVECTOR_NBLOCKS (bl) * sizeof (char));
c906108c
SS
1608 memset (blocks_printed, 0, BLOCKVECTOR_NBLOCKS (bl) * sizeof (char));
1609
1610 while (block != 0)
1611 {
1612 CORE_ADDR end = BLOCK_END (block) - 4;
1613 int last_index;
1614
1615 if (bl != blockvector_for_pc (end, &index))
8a3fe4f8 1616 error (_("blockvector blotch"));
c906108c 1617 if (BLOCKVECTOR_BLOCK (bl, index) != block)
8a3fe4f8 1618 error (_("blockvector botch"));
c906108c
SS
1619 last_index = BLOCKVECTOR_NBLOCKS (bl);
1620 index += 1;
1621
1622 /* Don't print out blocks that have gone by. */
1623 while (index < last_index
1624 && BLOCK_END (BLOCKVECTOR_BLOCK (bl, index)) < pc)
1625 index++;
1626
1627 while (index < last_index
1628 && BLOCK_END (BLOCKVECTOR_BLOCK (bl, index)) < end)
1629 {
1630 if (blocks_printed[index] == 0)
1631 {
5af949e3
UW
1632 if (print_block_frame_labels (gdbarch,
1633 BLOCKVECTOR_BLOCK (bl, index),
033a42c2 1634 &have_default, stream))
c906108c
SS
1635 values_printed = 1;
1636 blocks_printed[index] = 1;
1637 }
1638 index++;
1639 }
1640 if (have_default)
1641 return;
1642 if (values_printed && this_level_only)
1643 return;
1644
033a42c2 1645 /* After handling the function's top-level block, stop. Don't
edb3359d
DJ
1646 continue to its superblock, the block of per-file symbols.
1647 Also do not continue to the containing function of an inlined
1648 function. */
c906108c
SS
1649 if (BLOCK_FUNCTION (block))
1650 break;
1651 block = BLOCK_SUPERBLOCK (block);
1652 }
1653
1654 if (!values_printed && !this_level_only)
033a42c2 1655 fprintf_filtered (stream, _("No catches.\n"));
801e3a5b 1656#endif
c906108c
SS
1657}
1658
c906108c 1659void
fba45db2 1660locals_info (char *args, int from_tty)
c906108c 1661{
033a42c2 1662 print_frame_local_vars (get_selected_frame (_("No frame selected.")),
b04f3ab4 1663 0, gdb_stdout);
c906108c
SS
1664}
1665
1666static void
fba45db2 1667catch_info (char *ignore, int from_tty)
c906108c 1668{
dfdfb3ca
JB
1669 /* Assume g++ compiled code; old GDB 4.16 behaviour. */
1670 print_frame_label_vars (get_selected_frame (_("No frame selected.")),
1671 0, gdb_stdout);
c906108c
SS
1672}
1673
2c58c0a9
PA
1674/* Iterate over all the argument variables in block B.
1675
1676 Returns 1 if any argument was walked; 0 otherwise. */
1677
1678void
1679iterate_over_block_arg_vars (struct block *b,
1680 iterate_over_block_arg_local_vars_cb cb,
1681 void *cb_data)
c906108c 1682{
de4f826b 1683 struct dict_iterator iter;
52f0bd74 1684 struct symbol *sym, *sym2;
c906108c 1685
de4f826b 1686 ALL_BLOCK_SYMBOLS (b, iter, sym)
c906108c 1687 {
2a2d4dc3
AS
1688 /* Don't worry about things which aren't arguments. */
1689 if (SYMBOL_IS_ARGUMENT (sym))
c906108c 1690 {
c906108c
SS
1691 /* We have to look up the symbol because arguments can have
1692 two entries (one a parameter, one a local) and the one we
1693 want is the local, which lookup_symbol will find for us.
1694 This includes gcc1 (not gcc2) on the sparc when passing a
1695 small structure and gcc2 when the argument type is float
1696 and it is passed as a double and converted to float by
1697 the prologue (in the latter case the type of the LOC_ARG
1698 symbol is double and the type of the LOC_LOCAL symbol is
1699 float). There are also LOC_ARG/LOC_REGISTER pairs which
1700 are not combined in symbol-reading. */
1701
3567439c 1702 sym2 = lookup_symbol (SYMBOL_LINKAGE_NAME (sym),
2570f2b7 1703 b, VAR_DOMAIN, NULL);
2c58c0a9 1704 (*cb) (SYMBOL_PRINT_NAME (sym), sym2, cb_data);
c906108c
SS
1705 }
1706 }
2c58c0a9
PA
1707}
1708
1709static void
1710print_frame_arg_vars (struct frame_info *frame, struct ui_file *stream)
1711{
1712 struct print_variable_and_value_data cb_data;
1713 struct symbol *func;
1d4f5741
PA
1714 CORE_ADDR pc;
1715
1716 if (!get_frame_pc_if_available (frame, &pc))
1717 {
1718 fprintf_filtered (stream, _("PC unavailable, cannot determine args.\n"));
1719 return;
1720 }
2c58c0a9
PA
1721
1722 func = get_frame_function (frame);
1723 if (func == NULL)
1724 {
1725 fprintf_filtered (stream, _("No symbol table info available.\n"));
1726 return;
1727 }
1728
1729 cb_data.frame = frame;
1730 cb_data.num_tabs = 0;
1731 cb_data.stream = gdb_stdout;
1732 cb_data.values_printed = 0;
1733
1734 iterate_over_block_arg_vars (SYMBOL_BLOCK_VALUE (func),
1735 do_print_variable_and_value, &cb_data);
033a42c2 1736
2c58c0a9 1737 if (!cb_data.values_printed)
033a42c2 1738 fprintf_filtered (stream, _("No arguments.\n"));
c906108c
SS
1739}
1740
1741void
fba45db2 1742args_info (char *ignore, int from_tty)
c906108c 1743{
033a42c2 1744 print_frame_arg_vars (get_selected_frame (_("No frame selected.")),
b04f3ab4 1745 gdb_stdout);
c906108c
SS
1746}
1747
1748
1749static void
fba45db2 1750args_plus_locals_info (char *ignore, int from_tty)
c906108c 1751{
c5aa993b
JM
1752 args_info (ignore, from_tty);
1753 locals_info (ignore, from_tty);
c906108c 1754}
c906108c 1755\f
c5aa993b 1756
033a42c2
MK
1757/* Select frame FRAME. Also print the stack frame and show the source
1758 if this is the tui version. */
bedfa57b 1759static void
033a42c2 1760select_and_print_frame (struct frame_info *frame)
c906108c 1761{
033a42c2
MK
1762 select_frame (frame);
1763 if (frame)
1764 print_stack_frame (frame, 1, SRC_AND_LOC);
c906108c 1765}
c906108c 1766\f
c906108c 1767/* Return the symbol-block in which the selected frame is executing.
ae767bfb
JB
1768 Can return zero under various legitimate circumstances.
1769
1770 If ADDR_IN_BLOCK is non-zero, set *ADDR_IN_BLOCK to the relevant
1771 code address within the block returned. We use this to decide
1772 which macros are in scope. */
c906108c
SS
1773
1774struct block *
ae767bfb 1775get_selected_block (CORE_ADDR *addr_in_block)
c906108c 1776{
d729566a 1777 if (!has_stack_frames ())
8ea051c5
PA
1778 return 0;
1779
206415a3 1780 return get_frame_block (get_selected_frame (NULL), addr_in_block);
c906108c
SS
1781}
1782
1783/* Find a frame a certain number of levels away from FRAME.
1784 LEVEL_OFFSET_PTR points to an int containing the number of levels.
1785 Positive means go to earlier frames (up); negative, the reverse.
1786 The int that contains the number of levels is counted toward
1787 zero as the frames for those levels are found.
1788 If the top or bottom frame is reached, that frame is returned,
1789 but the final value of *LEVEL_OFFSET_PTR is nonzero and indicates
1790 how much farther the original request asked to go. */
1791
1792struct frame_info *
033a42c2 1793find_relative_frame (struct frame_info *frame, int *level_offset_ptr)
c906108c 1794{
033a42c2
MK
1795 /* Going up is simple: just call get_prev_frame enough times or
1796 until the initial frame is reached. */
c906108c
SS
1797 while (*level_offset_ptr > 0)
1798 {
033a42c2 1799 struct frame_info *prev = get_prev_frame (frame);
433759f7 1800
033a42c2 1801 if (!prev)
c906108c
SS
1802 break;
1803 (*level_offset_ptr)--;
1804 frame = prev;
1805 }
033a42c2 1806
c906108c 1807 /* Going down is just as simple. */
033a42c2 1808 while (*level_offset_ptr < 0)
c906108c 1809 {
033a42c2 1810 struct frame_info *next = get_next_frame (frame);
433759f7 1811
033a42c2
MK
1812 if (!next)
1813 break;
1814 (*level_offset_ptr)++;
1815 frame = next;
c906108c 1816 }
033a42c2 1817
c906108c
SS
1818 return frame;
1819}
1820
033a42c2
MK
1821/* The "select_frame" command. With no argument this is a NOP.
1822 Select the frame at level LEVEL_EXP if it is a valid level.
1823 Otherwise, treat LEVEL_EXP as an address expression and select it.
1824
1825 See parse_frame_specification for more info on proper frame
1826 expressions. */
c906108c 1827
8b93c638 1828void
fba45db2 1829select_frame_command (char *level_exp, int from_tty)
c906108c 1830{
1c8831c5 1831 select_frame (parse_frame_specification_1 (level_exp, "No stack.", NULL));
c906108c
SS
1832}
1833
033a42c2
MK
1834/* The "frame" command. With no argument, print the selected frame
1835 briefly. With an argument, behave like select_frame and then print
1836 the selected frame. */
c906108c 1837
033a42c2 1838static void
fba45db2 1839frame_command (char *level_exp, int from_tty)
c906108c
SS
1840{
1841 select_frame_command (level_exp, from_tty);
b04f3ab4 1842 print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC);
c906108c
SS
1843}
1844
033a42c2 1845/* The XDB Compatibility command to print the current frame. */
c906108c 1846
7a292a7a 1847static void
fba45db2 1848current_frame_command (char *level_exp, int from_tty)
c906108c 1849{
033a42c2 1850 print_stack_frame (get_selected_frame (_("No stack.")), 1, SRC_AND_LOC);
7a292a7a 1851}
c906108c 1852
033a42c2
MK
1853/* Select the frame up one or COUNT_EXP stack levels from the
1854 previously selected frame, and print it briefly. */
c906108c 1855
c906108c 1856static void
fba45db2 1857up_silently_base (char *count_exp)
c906108c 1858{
033a42c2
MK
1859 struct frame_info *frame;
1860 int count = 1;
1861
c906108c 1862 if (count_exp)
bb518678 1863 count = parse_and_eval_long (count_exp);
c5aa993b 1864
033a42c2
MK
1865 frame = find_relative_frame (get_selected_frame ("No stack."), &count);
1866 if (count != 0 && count_exp == NULL)
8a3fe4f8 1867 error (_("Initial frame selected; you cannot go up."));
033a42c2 1868 select_frame (frame);
c906108c
SS
1869}
1870
1871static void
fba45db2 1872up_silently_command (char *count_exp, int from_tty)
c906108c 1873{
c5aa993b 1874 up_silently_base (count_exp);
c906108c
SS
1875}
1876
1877static void
fba45db2 1878up_command (char *count_exp, int from_tty)
c906108c
SS
1879{
1880 up_silently_base (count_exp);
b04f3ab4 1881 print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC);
c906108c
SS
1882}
1883
033a42c2
MK
1884/* Select the frame down one or COUNT_EXP stack levels from the previously
1885 selected frame, and print it briefly. */
c906108c 1886
c906108c 1887static void
fba45db2 1888down_silently_base (char *count_exp)
c906108c 1889{
52f0bd74 1890 struct frame_info *frame;
033a42c2 1891 int count = -1;
f89b749f 1892
c906108c 1893 if (count_exp)
bb518678 1894 count = -parse_and_eval_long (count_exp);
c5aa993b 1895
033a42c2
MK
1896 frame = find_relative_frame (get_selected_frame ("No stack."), &count);
1897 if (count != 0 && count_exp == NULL)
c906108c 1898 {
033a42c2
MK
1899 /* We only do this if COUNT_EXP is not specified. That way
1900 "down" means to really go down (and let me know if that is
1901 impossible), but "down 9999" can be used to mean go all the
1902 way down without getting an error. */
c906108c 1903
033a42c2 1904 error (_("Bottom (innermost) frame selected; you cannot go down."));
c906108c
SS
1905 }
1906
0f7d239c 1907 select_frame (frame);
c906108c
SS
1908}
1909
c906108c 1910static void
fba45db2 1911down_silently_command (char *count_exp, int from_tty)
c906108c
SS
1912{
1913 down_silently_base (count_exp);
c906108c
SS
1914}
1915
1916static void
fba45db2 1917down_command (char *count_exp, int from_tty)
c906108c
SS
1918{
1919 down_silently_base (count_exp);
b04f3ab4 1920 print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC);
c906108c
SS
1921}
1922\f
033a42c2 1923
8b93c638 1924void
fba45db2 1925return_command (char *retval_exp, int from_tty)
c906108c 1926{
5ed92fa8 1927 struct frame_info *thisframe;
d80b854b 1928 struct gdbarch *gdbarch;
c906108c 1929 struct symbol *thisfun;
3d6d86c6 1930 struct value *return_value = NULL;
fc70c2a0 1931 const char *query_prefix = "";
c906108c 1932
5ed92fa8
UW
1933 thisframe = get_selected_frame ("No selected frame.");
1934 thisfun = get_frame_function (thisframe);
d80b854b 1935 gdbarch = get_frame_arch (thisframe);
c906108c 1936
edb3359d
DJ
1937 if (get_frame_type (get_current_frame ()) == INLINE_FRAME)
1938 error (_("Can not force return from an inlined function."));
1939
fc70c2a0
AC
1940 /* Compute the return value. If the computation triggers an error,
1941 let it bail. If the return type can't be handled, set
1942 RETURN_VALUE to NULL, and QUERY_PREFIX to an informational
1943 message. */
c906108c
SS
1944 if (retval_exp)
1945 {
61ff14c6
JK
1946 struct expression *retval_expr = parse_expression (retval_exp);
1947 struct cleanup *old_chain = make_cleanup (xfree, retval_expr);
c906108c
SS
1948 struct type *return_type = NULL;
1949
fc70c2a0
AC
1950 /* Compute the return value. Should the computation fail, this
1951 call throws an error. */
61ff14c6 1952 return_value = evaluate_expression (retval_expr);
c906108c 1953
fc70c2a0
AC
1954 /* Cast return value to the return type of the function. Should
1955 the cast fail, this call throws an error. */
c906108c
SS
1956 if (thisfun != NULL)
1957 return_type = TYPE_TARGET_TYPE (SYMBOL_TYPE (thisfun));
1958 if (return_type == NULL)
61ff14c6
JK
1959 {
1960 if (retval_expr->elts[0].opcode != UNOP_CAST)
1961 error (_("Return value type not available for selected "
1962 "stack frame.\n"
1963 "Please use an explicit cast of the value to return."));
1964 return_type = value_type (return_value);
1965 }
1966 do_cleanups (old_chain);
3e9a183c 1967 CHECK_TYPEDEF (return_type);
c906108c
SS
1968 return_value = value_cast (return_type, return_value);
1969
fc70c2a0
AC
1970 /* Make sure the value is fully evaluated. It may live in the
1971 stack frame we're about to pop. */
d69fe07e 1972 if (value_lazy (return_value))
c906108c 1973 value_fetch_lazy (return_value);
c906108c 1974
667e784f
AC
1975 if (TYPE_CODE (return_type) == TYPE_CODE_VOID)
1976 /* If the return-type is "void", don't try to find the
1977 return-value's location. However, do still evaluate the
1978 return expression so that, even when the expression result
1979 is discarded, side effects such as "return i++" still
033a42c2 1980 occur. */
667e784f 1981 return_value = NULL;
42e2132c 1982 else if (thisfun != NULL
d80b854b
UW
1983 && using_struct_return (gdbarch,
1984 SYMBOL_TYPE (thisfun), return_type))
fc70c2a0 1985 {
3e43a32a
MS
1986 query_prefix = "The location at which to store the "
1987 "function's return value is unknown.\n"
1988 "If you continue, the return value "
1989 "that you specified will be ignored.\n";
667e784f 1990 return_value = NULL;
fc70c2a0 1991 }
c906108c
SS
1992 }
1993
fc70c2a0
AC
1994 /* Does an interactive user really want to do this? Include
1995 information, such as how well GDB can handle the return value, in
1996 the query message. */
1997 if (from_tty)
1998 {
1999 int confirmed;
433759f7 2000
fc70c2a0 2001 if (thisfun == NULL)
e2e0b3e5 2002 confirmed = query (_("%sMake selected stack frame return now? "),
fc70c2a0
AC
2003 query_prefix);
2004 else
e2e0b3e5 2005 confirmed = query (_("%sMake %s return now? "), query_prefix,
fc70c2a0
AC
2006 SYMBOL_PRINT_NAME (thisfun));
2007 if (!confirmed)
8a3fe4f8 2008 error (_("Not confirmed"));
fc70c2a0 2009 }
c906108c 2010
a45ae3ed
UW
2011 /* Discard the selected frame and all frames inner-to it. */
2012 frame_pop (get_selected_frame (NULL));
c906108c 2013
a1f5b845 2014 /* Store RETURN_VALUE in the just-returned register set. */
fc70c2a0
AC
2015 if (return_value != NULL)
2016 {
df407dfe 2017 struct type *return_type = value_type (return_value);
7500260a 2018 struct gdbarch *gdbarch = get_regcache_arch (get_current_regcache ());
42e2132c
JK
2019 struct type *func_type = thisfun == NULL ? NULL : SYMBOL_TYPE (thisfun);
2020
2021 gdb_assert (gdbarch_return_value (gdbarch, func_type, return_type, NULL,
2022 NULL, NULL)
750eb019 2023 == RETURN_VALUE_REGISTER_CONVENTION);
42e2132c 2024 gdbarch_return_value (gdbarch, func_type, return_type,
594f7785 2025 get_current_regcache (), NULL /*read*/,
0fd88904 2026 value_contents (return_value) /*write*/);
fc70c2a0 2027 }
1a2aab69 2028
fc70c2a0
AC
2029 /* If we are at the end of a call dummy now, pop the dummy frame
2030 too. */
e8bcf01f
AC
2031 if (get_frame_type (get_current_frame ()) == DUMMY_FRAME)
2032 frame_pop (get_current_frame ());
1a2aab69 2033
c906108c 2034 /* If interactive, print the frame that is now current. */
c906108c
SS
2035 if (from_tty)
2036 frame_command ("0", 1);
2037 else
2038 select_frame_command ("0", 0);
2039}
2040
033a42c2 2041/* Sets the scope to input function name, provided that the function
c378eb4e 2042 is within the current stack frame. */
c906108c
SS
2043
2044struct function_bounds
2045{
2046 CORE_ADDR low, high;
2047};
2048
2049static void
fba45db2 2050func_command (char *arg, int from_tty)
c906108c 2051{
033a42c2 2052 struct frame_info *frame;
c906108c
SS
2053 int found = 0;
2054 struct symtabs_and_lines sals;
2055 int i;
2056 int level = 1;
033a42c2 2057 struct function_bounds *func_bounds = NULL;
c906108c 2058
033a42c2 2059 if (arg != NULL)
c906108c
SS
2060 return;
2061
033a42c2 2062 frame = parse_frame_specification ("0");
c906108c
SS
2063 sals = decode_line_spec (arg, 1);
2064 func_bounds = (struct function_bounds *) xmalloc (
2065 sizeof (struct function_bounds) * sals.nelts);
2066 for (i = 0; (i < sals.nelts && !found); i++)
2067 {
033a42c2
MK
2068 if (sals.sals[i].pc == 0
2069 || find_pc_partial_function (sals.sals[i].pc, NULL,
2070 &func_bounds[i].low,
2071 &func_bounds[i].high) == 0)
c906108c 2072 {
033a42c2 2073 func_bounds[i].low = func_bounds[i].high = 0;
c906108c
SS
2074 }
2075 }
2076
2077 do
2078 {
2079 for (i = 0; (i < sals.nelts && !found); i++)
033a42c2
MK
2080 found = (get_frame_pc (frame) >= func_bounds[i].low
2081 && get_frame_pc (frame) < func_bounds[i].high);
c906108c
SS
2082 if (!found)
2083 {
2084 level = 1;
033a42c2 2085 frame = find_relative_frame (frame, &level);
c906108c
SS
2086 }
2087 }
2088 while (!found && level == 0);
2089
2090 if (func_bounds)
b8c9b27d 2091 xfree (func_bounds);
c906108c
SS
2092
2093 if (!found)
a3f17187 2094 printf_filtered (_("'%s' not within current stack frame.\n"), arg);
206415a3 2095 else if (frame != get_selected_frame (NULL))
033a42c2 2096 select_and_print_frame (frame);
c906108c
SS
2097}
2098
2099/* Gets the language of the current frame. */
2100
2101enum language
fba45db2 2102get_frame_language (void)
c906108c 2103{
206415a3 2104 struct frame_info *frame = deprecated_safe_get_selected_frame ();
c5aa993b 2105
033a42c2 2106 if (frame)
c906108c 2107 {
e3eebbd7
PA
2108 volatile struct gdb_exception ex;
2109 CORE_ADDR pc = 0;
2110 struct symtab *s;
2111
7ae4c3a5 2112 /* We determine the current frame language by looking up its
033a42c2
MK
2113 associated symtab. To retrieve this symtab, we use the frame
2114 PC. However we cannot use the frame PC as is, because it
2115 usually points to the instruction following the "call", which
2116 is sometimes the first instruction of another function. So
2117 we rely on get_frame_address_in_block(), it provides us with
2118 a PC that is guaranteed to be inside the frame's code
2119 block. */
033a42c2 2120
e3eebbd7
PA
2121 TRY_CATCH (ex, RETURN_MASK_ERROR)
2122 {
2123 pc = get_frame_address_in_block (frame);
2124 }
2125 if (ex.reason < 0)
2126 {
2127 if (ex.error != NOT_AVAILABLE_ERROR)
2128 throw_exception (ex);
2129 }
2130 else
2131 {
2132 s = find_pc_symtab (pc);
2133 if (s != NULL)
2134 return s->language;
2135 }
c906108c 2136 }
c906108c 2137
033a42c2 2138 return language_unknown;
c906108c
SS
2139}
2140\f
033a42c2
MK
2141
2142/* Provide a prototype to silence -Wmissing-prototypes. */
2143void _initialize_stack (void);
2144
c906108c 2145void
fba45db2 2146_initialize_stack (void)
c906108c 2147{
1bedd215
AC
2148 add_com ("return", class_stack, return_command, _("\
2149Make selected stack frame return to its caller.\n\
c906108c
SS
2150Control remains in the debugger, but when you continue\n\
2151execution will resume in the frame above the one now selected.\n\
1bedd215
AC
2152If an argument is given, it is an expression for the value to return."));
2153
2154 add_com ("up", class_stack, up_command, _("\
2155Select and print stack frame that called this one.\n\
2156An argument says how many frames up to go."));
2157 add_com ("up-silently", class_support, up_silently_command, _("\
2158Same as the `up' command, but does not print anything.\n\
2159This is useful in command scripts."));
2160
2161 add_com ("down", class_stack, down_command, _("\
2162Select and print stack frame called by this one.\n\
2163An argument says how many frames down to go."));
c906108c
SS
2164 add_com_alias ("do", "down", class_stack, 1);
2165 add_com_alias ("dow", "down", class_stack, 1);
1bedd215
AC
2166 add_com ("down-silently", class_support, down_silently_command, _("\
2167Same as the `down' command, but does not print anything.\n\
2168This is useful in command scripts."));
c906108c 2169
1bedd215 2170 add_com ("frame", class_stack, frame_command, _("\
3e43a32a
MS
2171Select and print a stack frame.\nWith no argument, \
2172print the selected stack frame. (See also \"info frame\").\n\
c906108c
SS
2173An argument specifies the frame to select.\n\
2174It can be a stack frame number or the address of the frame.\n\
2175With argument, nothing is printed if input is coming from\n\
1bedd215 2176a command file or a user-defined command."));
c906108c
SS
2177
2178 add_com_alias ("f", "frame", class_stack, 1);
2179
2180 if (xdb_commands)
2181 {
c5aa993b 2182 add_com ("L", class_stack, current_frame_command,
1bedd215 2183 _("Print the current stack frame.\n"));
c906108c
SS
2184 add_com_alias ("V", "frame", class_stack, 1);
2185 }
1bedd215
AC
2186 add_com ("select-frame", class_stack, select_frame_command, _("\
2187Select a stack frame without printing anything.\n\
c906108c 2188An argument specifies the frame to select.\n\
1bedd215 2189It can be a stack frame number or the address of the frame.\n"));
c906108c 2190
1bedd215
AC
2191 add_com ("backtrace", class_stack, backtrace_command, _("\
2192Print backtrace of all stack frames, or innermost COUNT frames.\n\
3e43a32a
MS
2193With a negative argument, print outermost -COUNT frames.\nUse of the \
2194'full' qualifier also prints the values of the local variables.\n"));
c906108c
SS
2195 add_com_alias ("bt", "backtrace", class_stack, 0);
2196 if (xdb_commands)
2197 {
2198 add_com_alias ("t", "backtrace", class_stack, 0);
1bedd215 2199 add_com ("T", class_stack, backtrace_full_command, _("\
cce7e648 2200Print backtrace of all stack frames, or innermost COUNT frames\n\
c906108c
SS
2201and the values of the local variables.\n\
2202With a negative argument, print outermost -COUNT frames.\n\
1bedd215 2203Usage: T <count>\n"));
c906108c
SS
2204 }
2205
2206 add_com_alias ("where", "backtrace", class_alias, 0);
2207 add_info ("stack", backtrace_command,
1bedd215 2208 _("Backtrace of the stack, or innermost COUNT frames."));
c906108c
SS
2209 add_info_alias ("s", "stack", 1);
2210 add_info ("frame", frame_info,
1bedd215 2211 _("All about selected stack frame, or frame at ADDR."));
c906108c
SS
2212 add_info_alias ("f", "frame", 1);
2213 add_info ("locals", locals_info,
1bedd215 2214 _("Local variables of current stack frame."));
c906108c 2215 add_info ("args", args_info,
1bedd215 2216 _("Argument variables of current stack frame."));
c906108c 2217 if (xdb_commands)
c5aa993b 2218 add_com ("l", class_info, args_plus_locals_info,
1bedd215 2219 _("Argument and local variables of current stack frame."));
c906108c
SS
2220
2221 if (dbx_commands)
1bedd215
AC
2222 add_com ("func", class_stack, func_command, _("\
2223Select the stack frame that contains <func>.\n\
2224Usage: func <name>\n"));
c906108c
SS
2225
2226 add_info ("catch", catch_info,
1bedd215 2227 _("Exceptions that can be caught in the current stack frame."));
c906108c 2228
88408340
JB
2229 add_setshow_enum_cmd ("frame-arguments", class_stack,
2230 print_frame_arguments_choices, &print_frame_arguments,
2231 _("Set printing of non-scalar frame arguments"),
2232 _("Show printing of non-scalar frame arguments"),
2233 NULL, NULL, NULL, &setprintlist, &showprintlist);
2234
30c33a9f
HZ
2235 add_setshow_auto_boolean_cmd ("disassemble-next-line", class_stack,
2236 &disassemble_next_line, _("\
3e43a32a
MS
2237Set whether to disassemble next source line or insn when execution stops."),
2238 _("\
2239Show whether to disassemble next source line or insn when execution stops."),
2240 _("\
80a0ea0f
EZ
2241If ON, GDB will display disassembly of the next source line, in addition\n\
2242to displaying the source line itself. If the next source line cannot\n\
2243be displayed (e.g., source is unavailable or there's no line info), GDB\n\
2244will display disassembly of next instruction instead of showing the\n\
2245source line.\n\
2246If AUTO, display disassembly of next instruction only if the source line\n\
2247cannot be displayed.\n\
2248If OFF (which is the default), never display the disassembly of the next\n\
2249source line."),
30c33a9f
HZ
2250 NULL,
2251 show_disassemble_next_line,
2252 &setlist, &showlist);
a362e3d3 2253 disassemble_next_line = AUTO_BOOLEAN_FALSE;
c906108c 2254}
This page took 1.465198 seconds and 4 git commands to generate.