stack.c revision 1.3 1 1.1 christos /* Print and select stack frames for GDB, the GNU debugger.
2 1.1 christos
3 1.3 christos Copyright (C) 1986-2015 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 <ctype.h>
52 1.1 christos #include "symfile.h"
53 1.3 christos #include "extension.h"
54 1.1 christos
55 1.1 christos void (*deprecated_selected_frame_level_changed_hook) (int);
56 1.1 christos
57 1.1 christos /* The possible choices of "set print frame-arguments", and the value
58 1.1 christos of this setting. */
59 1.1 christos
60 1.1 christos static const char *const print_frame_arguments_choices[] =
61 1.1 christos {"all", "scalars", "none", NULL};
62 1.1 christos static const char *print_frame_arguments = "scalars";
63 1.1 christos
64 1.1 christos /* If non-zero, don't invoke pretty-printers for frame arguments. */
65 1.1 christos static int print_raw_frame_arguments;
66 1.1 christos
67 1.1 christos /* The possible choices of "set print entry-values", and the value
68 1.1 christos of this setting. */
69 1.1 christos
70 1.1 christos const char print_entry_values_no[] = "no";
71 1.1 christos const char print_entry_values_only[] = "only";
72 1.1 christos const char print_entry_values_preferred[] = "preferred";
73 1.1 christos const char print_entry_values_if_needed[] = "if-needed";
74 1.1 christos const char print_entry_values_both[] = "both";
75 1.1 christos const char print_entry_values_compact[] = "compact";
76 1.1 christos const char print_entry_values_default[] = "default";
77 1.1 christos static const char *const print_entry_values_choices[] =
78 1.1 christos {
79 1.1 christos print_entry_values_no,
80 1.1 christos print_entry_values_only,
81 1.1 christos print_entry_values_preferred,
82 1.1 christos print_entry_values_if_needed,
83 1.1 christos print_entry_values_both,
84 1.1 christos print_entry_values_compact,
85 1.1 christos print_entry_values_default,
86 1.1 christos NULL
87 1.1 christos };
88 1.1 christos const char *print_entry_values = print_entry_values_default;
89 1.1 christos
90 1.1 christos /* Prototypes for local functions. */
91 1.1 christos
92 1.1 christos static void print_frame_local_vars (struct frame_info *, int,
93 1.1 christos struct ui_file *);
94 1.1 christos
95 1.1 christos static void print_frame (struct frame_info *frame, int print_level,
96 1.1 christos enum print_what print_what, int print_args,
97 1.1 christos struct symtab_and_line sal);
98 1.1 christos
99 1.1 christos static void set_last_displayed_sal (int valid,
100 1.1 christos struct program_space *pspace,
101 1.1 christos CORE_ADDR addr,
102 1.1 christos struct symtab *symtab,
103 1.1 christos int line);
104 1.1 christos
105 1.1 christos /* Zero means do things normally; we are interacting directly with the
106 1.1 christos user. One means print the full filename and linenumber when a
107 1.1 christos frame is printed, and do so in a format emacs18/emacs19.22 can
108 1.1 christos parse. Two means print similar annotations, but in many more
109 1.1 christos cases and in a slightly different syntax. */
110 1.1 christos
111 1.1 christos int annotation_level = 0;
112 1.1 christos
113 1.1 christos /* These variables hold the last symtab and line we displayed to the user.
114 1.1 christos * This is where we insert a breakpoint or a skiplist entry by default. */
115 1.1 christos static int last_displayed_sal_valid = 0;
116 1.1 christos static struct program_space *last_displayed_pspace = 0;
117 1.1 christos static CORE_ADDR last_displayed_addr = 0;
118 1.1 christos static struct symtab *last_displayed_symtab = 0;
119 1.1 christos static int last_displayed_line = 0;
120 1.1 christos
121 1.1 christos
123 1.1 christos /* Return 1 if we should display the address in addition to the location,
124 1.1 christos because we are in the middle of a statement. */
125 1.1 christos
126 1.1 christos static int
127 1.1 christos frame_show_address (struct frame_info *frame,
128 1.1 christos struct symtab_and_line sal)
129 1.1 christos {
130 1.1 christos /* If there is a line number, but no PC, then there is no location
131 1.1 christos information associated with this sal. The only way that should
132 1.1 christos happen is for the call sites of inlined functions (SAL comes from
133 1.1 christos find_frame_sal). Otherwise, we would have some PC range if the
134 1.1 christos SAL came from a line table. */
135 1.1 christos if (sal.line != 0 && sal.pc == 0 && sal.end == 0)
136 1.1 christos {
137 1.1 christos if (get_next_frame (frame) == NULL)
138 1.1 christos gdb_assert (inline_skipped_frames (inferior_ptid) > 0);
139 1.1 christos else
140 1.1 christos gdb_assert (get_frame_type (get_next_frame (frame)) == INLINE_FRAME);
141 1.1 christos return 0;
142 1.1 christos }
143 1.1 christos
144 1.1 christos return get_frame_pc (frame) != sal.pc;
145 1.1 christos }
146 1.1 christos
147 1.1 christos /* Show or print a stack frame FRAME briefly. The output is format
148 1.1 christos according to PRINT_LEVEL and PRINT_WHAT printing the frame's
149 1.1 christos relative level, function name, argument list, and file name and
150 1.1 christos line number. If the frame's PC is not at the beginning of the
151 1.1 christos source line, the actual PC is printed at the beginning. */
152 1.1 christos
153 1.1 christos void
154 1.1 christos print_stack_frame (struct frame_info *frame, int print_level,
155 1.1 christos enum print_what print_what,
156 1.1 christos int set_current_sal)
157 1.1 christos {
158 1.1 christos volatile struct gdb_exception e;
159 1.1 christos
160 1.1 christos /* For mi, alway print location and address. */
161 1.1 christos if (ui_out_is_mi_like_p (current_uiout))
162 1.1 christos print_what = LOC_AND_ADDRESS;
163 1.1 christos
164 1.1 christos TRY_CATCH (e, RETURN_MASK_ERROR)
165 1.1 christos {
166 1.1 christos print_frame_info (frame, print_level, print_what, 1 /* print_args */,
167 1.1 christos set_current_sal);
168 1.3 christos if (set_current_sal)
169 1.1 christos set_current_sal_from_frame (frame);
170 1.1 christos }
171 1.1 christos }
172 1.1 christos
173 1.1 christos /* Print nameless arguments of frame FRAME on STREAM, where START is
174 1.1 christos the offset of the first nameless argument, and NUM is the number of
175 1.1 christos nameless arguments to print. FIRST is nonzero if this is the first
176 1.1 christos argument (not just the first nameless argument). */
177 1.1 christos
178 1.1 christos static void
179 1.1 christos print_frame_nameless_args (struct frame_info *frame, long start, int num,
180 1.1 christos int first, struct ui_file *stream)
181 1.1 christos {
182 1.1 christos struct gdbarch *gdbarch = get_frame_arch (frame);
183 1.1 christos enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
184 1.1 christos int i;
185 1.1 christos CORE_ADDR argsaddr;
186 1.1 christos long arg_value;
187 1.1 christos
188 1.1 christos for (i = 0; i < num; i++)
189 1.1 christos {
190 1.1 christos QUIT;
191 1.1 christos argsaddr = get_frame_args_address (frame);
192 1.1 christos if (!argsaddr)
193 1.1 christos return;
194 1.1 christos arg_value = read_memory_integer (argsaddr + start,
195 1.1 christos sizeof (int), byte_order);
196 1.1 christos if (!first)
197 1.1 christos fprintf_filtered (stream, ", ");
198 1.1 christos fprintf_filtered (stream, "%ld", arg_value);
199 1.1 christos first = 0;
200 1.1 christos start += sizeof (int);
201 1.1 christos }
202 1.1 christos }
203 1.1 christos
204 1.1 christos /* Print single argument of inferior function. ARG must be already
205 1.1 christos read in.
206 1.1 christos
207 1.1 christos Errors are printed as if they would be the parameter value. Use zeroed ARG
208 1.1 christos iff it should not be printed accoring to user settings. */
209 1.1 christos
210 1.1 christos static void
211 1.1 christos print_frame_arg (const struct frame_arg *arg)
212 1.1 christos {
213 1.1 christos struct ui_out *uiout = current_uiout;
214 1.1 christos volatile struct gdb_exception except;
215 1.1 christos struct cleanup *old_chain;
216 1.1 christos struct ui_file *stb;
217 1.1 christos
218 1.1 christos stb = mem_fileopen ();
219 1.1 christos old_chain = make_cleanup_ui_file_delete (stb);
220 1.1 christos
221 1.1 christos gdb_assert (!arg->val || !arg->error);
222 1.1 christos gdb_assert (arg->entry_kind == print_entry_values_no
223 1.1 christos || arg->entry_kind == print_entry_values_only
224 1.1 christos || (!ui_out_is_mi_like_p (uiout)
225 1.1 christos && arg->entry_kind == print_entry_values_compact));
226 1.1 christos
227 1.1 christos annotate_arg_begin ();
228 1.1 christos
229 1.1 christos make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
230 1.1 christos fprintf_symbol_filtered (stb, SYMBOL_PRINT_NAME (arg->sym),
231 1.1 christos SYMBOL_LANGUAGE (arg->sym), DMGL_PARAMS | DMGL_ANSI);
232 1.1 christos if (arg->entry_kind == print_entry_values_compact)
233 1.1 christos {
234 1.1 christos /* It is OK to provide invalid MI-like stream as with
235 1.1 christos PRINT_ENTRY_VALUE_COMPACT we never use MI. */
236 1.1 christos fputs_filtered ("=", stb);
237 1.1 christos
238 1.1 christos fprintf_symbol_filtered (stb, SYMBOL_PRINT_NAME (arg->sym),
239 1.1 christos SYMBOL_LANGUAGE (arg->sym),
240 1.1 christos DMGL_PARAMS | DMGL_ANSI);
241 1.1 christos }
242 1.1 christos if (arg->entry_kind == print_entry_values_only
243 1.1 christos || arg->entry_kind == print_entry_values_compact)
244 1.1 christos fputs_filtered ("@entry", stb);
245 1.1 christos ui_out_field_stream (uiout, "name", stb);
246 1.1 christos annotate_arg_name_end ();
247 1.1 christos ui_out_text (uiout, "=");
248 1.1 christos
249 1.1 christos if (!arg->val && !arg->error)
250 1.1 christos ui_out_text (uiout, "...");
251 1.1 christos else
252 1.1 christos {
253 1.1 christos if (arg->error)
254 1.1 christos except.message = arg->error;
255 1.1 christos else
256 1.1 christos {
257 1.1 christos /* TRY_CATCH has two statements, wrap it in a block. */
258 1.1 christos
259 1.1 christos TRY_CATCH (except, RETURN_MASK_ERROR)
260 1.1 christos {
261 1.1 christos const struct language_defn *language;
262 1.1 christos struct value_print_options opts;
263 1.1 christos
264 1.1 christos /* Avoid value_print because it will deref ref parameters. We
265 1.1 christos just want to print their addresses. Print ??? for args whose
266 1.1 christos address we do not know. We pass 2 as "recurse" to val_print
267 1.1 christos because our standard indentation here is 4 spaces, and
268 1.1 christos val_print indents 2 for each recurse. */
269 1.1 christos
270 1.1 christos annotate_arg_value (value_type (arg->val));
271 1.1 christos
272 1.1 christos /* Use the appropriate language to display our symbol, unless the
273 1.1 christos user forced the language to a specific language. */
274 1.1 christos if (language_mode == language_mode_auto)
275 1.1 christos language = language_def (SYMBOL_LANGUAGE (arg->sym));
276 1.1 christos else
277 1.1 christos language = current_language;
278 1.1 christos
279 1.1 christos get_no_prettyformat_print_options (&opts);
280 1.1 christos opts.deref_ref = 1;
281 1.1 christos opts.raw = print_raw_frame_arguments;
282 1.1 christos
283 1.1 christos /* True in "summary" mode, false otherwise. */
284 1.1 christos opts.summary = !strcmp (print_frame_arguments, "scalars");
285 1.1 christos
286 1.1 christos common_val_print (arg->val, stb, 2, &opts, language);
287 1.1 christos }
288 1.1 christos }
289 1.1 christos if (except.message)
290 1.1 christos fprintf_filtered (stb, _("<error reading variable: %s>"),
291 1.1 christos except.message);
292 1.1 christos }
293 1.1 christos
294 1.1 christos ui_out_field_stream (uiout, "value", stb);
295 1.1 christos
296 1.1 christos /* Also invoke ui_out_tuple_end. */
297 1.1 christos do_cleanups (old_chain);
298 1.1 christos
299 1.1 christos annotate_arg_end ();
300 1.1 christos }
301 1.1 christos
302 1.1 christos /* Read in inferior function local SYM at FRAME into ARGP. Caller is
303 1.1 christos responsible for xfree of ARGP->ERROR. This function never throws an
304 1.1 christos exception. */
305 1.1 christos
306 1.1 christos void
307 1.1 christos read_frame_local (struct symbol *sym, struct frame_info *frame,
308 1.1 christos struct frame_arg *argp)
309 1.1 christos {
310 1.1 christos volatile struct gdb_exception except;
311 1.1 christos struct value *val = NULL;
312 1.1 christos
313 1.1 christos TRY_CATCH (except, RETURN_MASK_ERROR)
314 1.1 christos {
315 1.1 christos val = read_var_value (sym, frame);
316 1.1 christos }
317 1.1 christos
318 1.1 christos argp->error = (val == NULL) ? xstrdup (except.message) : NULL;
319 1.1 christos argp->sym = sym;
320 1.1 christos argp->val = val;
321 1.1 christos }
322 1.1 christos
323 1.1 christos /* Read in inferior function parameter SYM at FRAME into ARGP. Caller is
324 1.1 christos responsible for xfree of ARGP->ERROR. This function never throws an
325 1.1 christos exception. */
326 1.1 christos
327 1.1 christos void
328 1.1 christos read_frame_arg (struct symbol *sym, struct frame_info *frame,
329 1.1 christos struct frame_arg *argp, struct frame_arg *entryargp)
330 1.1 christos {
331 1.1 christos struct value *val = NULL, *entryval = NULL;
332 1.1 christos char *val_error = NULL, *entryval_error = NULL;
333 1.1 christos int val_equal = 0;
334 1.1 christos volatile struct gdb_exception except;
335 1.1 christos
336 1.1 christos if (print_entry_values != print_entry_values_only
337 1.1 christos && print_entry_values != print_entry_values_preferred)
338 1.1 christos {
339 1.1 christos TRY_CATCH (except, RETURN_MASK_ERROR)
340 1.1 christos {
341 1.1 christos val = read_var_value (sym, frame);
342 1.1 christos }
343 1.1 christos if (!val)
344 1.1 christos {
345 1.1 christos val_error = alloca (strlen (except.message) + 1);
346 1.1 christos strcpy (val_error, except.message);
347 1.1 christos }
348 1.1 christos }
349 1.1 christos
350 1.1 christos if (SYMBOL_COMPUTED_OPS (sym) != NULL
351 1.1 christos && SYMBOL_COMPUTED_OPS (sym)->read_variable_at_entry != NULL
352 1.1 christos && print_entry_values != print_entry_values_no
353 1.1 christos && (print_entry_values != print_entry_values_if_needed
354 1.1 christos || !val || value_optimized_out (val)))
355 1.1 christos {
356 1.1 christos TRY_CATCH (except, RETURN_MASK_ERROR)
357 1.1 christos {
358 1.1 christos const struct symbol_computed_ops *ops;
359 1.1 christos
360 1.1 christos ops = SYMBOL_COMPUTED_OPS (sym);
361 1.1 christos entryval = ops->read_variable_at_entry (sym, frame);
362 1.1 christos }
363 1.1 christos if (!entryval)
364 1.1 christos {
365 1.1 christos entryval_error = alloca (strlen (except.message) + 1);
366 1.1 christos strcpy (entryval_error, except.message);
367 1.1 christos }
368 1.1 christos
369 1.1 christos if (except.error == NO_ENTRY_VALUE_ERROR
370 1.1 christos || (entryval && value_optimized_out (entryval)))
371 1.1 christos {
372 1.1 christos entryval = NULL;
373 1.1 christos entryval_error = NULL;
374 1.1 christos }
375 1.1 christos
376 1.1 christos if (print_entry_values == print_entry_values_compact
377 1.1 christos || print_entry_values == print_entry_values_default)
378 1.1 christos {
379 1.1 christos /* For MI do not try to use print_entry_values_compact for ARGP. */
380 1.1 christos
381 1.1 christos if (val && entryval && !ui_out_is_mi_like_p (current_uiout))
382 1.1 christos {
383 1.1 christos struct type *type = value_type (val);
384 1.3 christos
385 1.3 christos if (value_lazy (val))
386 1.3 christos value_fetch_lazy (val);
387 1.3 christos if (value_lazy (entryval))
388 1.3 christos value_fetch_lazy (entryval);
389 1.3 christos
390 1.1 christos if (value_contents_eq (val, 0, entryval, 0, TYPE_LENGTH (type)))
391 1.1 christos {
392 1.1 christos /* Initialize it just to avoid a GCC false warning. */
393 1.1 christos struct value *val_deref = NULL, *entryval_deref;
394 1.1 christos
395 1.1 christos /* DW_AT_GNU_call_site_value does match with the current
396 1.1 christos value. If it is a reference still try to verify if
397 1.1 christos dereferenced DW_AT_GNU_call_site_data_value does not
398 1.1 christos differ. */
399 1.1 christos
400 1.1 christos TRY_CATCH (except, RETURN_MASK_ERROR)
401 1.1 christos {
402 1.1 christos struct type *type_deref;
403 1.1 christos
404 1.1 christos val_deref = coerce_ref (val);
405 1.1 christos if (value_lazy (val_deref))
406 1.1 christos value_fetch_lazy (val_deref);
407 1.1 christos type_deref = value_type (val_deref);
408 1.1 christos
409 1.1 christos entryval_deref = coerce_ref (entryval);
410 1.1 christos if (value_lazy (entryval_deref))
411 1.1 christos value_fetch_lazy (entryval_deref);
412 1.1 christos
413 1.1 christos /* If the reference addresses match but dereferenced
414 1.1 christos content does not match print them. */
415 1.3 christos if (val != val_deref
416 1.3 christos && value_contents_eq (val_deref, 0,
417 1.3 christos entryval_deref, 0,
418 1.1 christos TYPE_LENGTH (type_deref)))
419 1.1 christos val_equal = 1;
420 1.1 christos }
421 1.1 christos
422 1.1 christos /* Value was not a reference; and its content matches. */
423 1.1 christos if (val == val_deref)
424 1.1 christos val_equal = 1;
425 1.1 christos /* If the dereferenced content could not be fetched do not
426 1.1 christos display anything. */
427 1.1 christos else if (except.error == NO_ENTRY_VALUE_ERROR)
428 1.1 christos val_equal = 1;
429 1.1 christos else if (except.message)
430 1.1 christos {
431 1.1 christos entryval_error = alloca (strlen (except.message) + 1);
432 1.1 christos strcpy (entryval_error, except.message);
433 1.1 christos }
434 1.1 christos
435 1.1 christos if (val_equal)
436 1.1 christos entryval = NULL;
437 1.1 christos }
438 1.1 christos }
439 1.1 christos
440 1.1 christos /* Try to remove possibly duplicate error message for ENTRYARGP even
441 1.1 christos in MI mode. */
442 1.1 christos
443 1.1 christos if (val_error && entryval_error
444 1.1 christos && strcmp (val_error, entryval_error) == 0)
445 1.1 christos {
446 1.1 christos entryval_error = NULL;
447 1.1 christos
448 1.1 christos /* Do not se VAL_EQUAL as the same error message may be shown for
449 1.1 christos the entry value even if no entry values are present in the
450 1.1 christos inferior. */
451 1.1 christos }
452 1.1 christos }
453 1.1 christos }
454 1.1 christos
455 1.1 christos if (entryval == NULL)
456 1.1 christos {
457 1.1 christos if (print_entry_values == print_entry_values_preferred)
458 1.1 christos {
459 1.1 christos TRY_CATCH (except, RETURN_MASK_ERROR)
460 1.1 christos {
461 1.1 christos val = read_var_value (sym, frame);
462 1.1 christos }
463 1.1 christos if (!val)
464 1.1 christos {
465 1.1 christos val_error = alloca (strlen (except.message) + 1);
466 1.1 christos strcpy (val_error, except.message);
467 1.1 christos }
468 1.1 christos }
469 1.1 christos if (print_entry_values == print_entry_values_only
470 1.1 christos || print_entry_values == print_entry_values_both
471 1.1 christos || (print_entry_values == print_entry_values_preferred
472 1.1 christos && (!val || value_optimized_out (val))))
473 1.1 christos {
474 1.1 christos entryval = allocate_optimized_out_value (SYMBOL_TYPE (sym));
475 1.1 christos entryval_error = NULL;
476 1.1 christos }
477 1.1 christos }
478 1.1 christos if ((print_entry_values == print_entry_values_compact
479 1.1 christos || print_entry_values == print_entry_values_if_needed
480 1.1 christos || print_entry_values == print_entry_values_preferred)
481 1.1 christos && (!val || value_optimized_out (val)) && entryval != NULL)
482 1.1 christos {
483 1.1 christos val = NULL;
484 1.1 christos val_error = NULL;
485 1.1 christos }
486 1.1 christos
487 1.1 christos argp->sym = sym;
488 1.1 christos argp->val = val;
489 1.1 christos argp->error = val_error ? xstrdup (val_error) : NULL;
490 1.1 christos if (!val && !val_error)
491 1.1 christos argp->entry_kind = print_entry_values_only;
492 1.1 christos else if ((print_entry_values == print_entry_values_compact
493 1.1 christos || print_entry_values == print_entry_values_default) && val_equal)
494 1.1 christos {
495 1.1 christos argp->entry_kind = print_entry_values_compact;
496 1.1 christos gdb_assert (!ui_out_is_mi_like_p (current_uiout));
497 1.1 christos }
498 1.1 christos else
499 1.1 christos argp->entry_kind = print_entry_values_no;
500 1.1 christos
501 1.1 christos entryargp->sym = sym;
502 1.1 christos entryargp->val = entryval;
503 1.1 christos entryargp->error = entryval_error ? xstrdup (entryval_error) : NULL;
504 1.1 christos if (!entryval && !entryval_error)
505 1.1 christos entryargp->entry_kind = print_entry_values_no;
506 1.1 christos else
507 1.1 christos entryargp->entry_kind = print_entry_values_only;
508 1.1 christos }
509 1.1 christos
510 1.1 christos /* Print the arguments of frame FRAME on STREAM, given the function
511 1.1 christos FUNC running in that frame (as a symbol), where NUM is the number
512 1.1 christos of arguments according to the stack frame (or -1 if the number of
513 1.1 christos arguments is unknown). */
514 1.1 christos
515 1.1 christos /* Note that currently the "number of arguments according to the
516 1.1 christos stack frame" is only known on VAX where i refers to the "number of
517 1.1 christos ints of arguments according to the stack frame". */
518 1.1 christos
519 1.1 christos static void
520 1.1 christos print_frame_args (struct symbol *func, struct frame_info *frame,
521 1.1 christos int num, struct ui_file *stream)
522 1.1 christos {
523 1.1 christos struct ui_out *uiout = current_uiout;
524 1.1 christos int first = 1;
525 1.1 christos /* Offset of next stack argument beyond the one we have seen that is
526 1.1 christos at the highest offset, or -1 if we haven't come to a stack
527 1.1 christos argument yet. */
528 1.1 christos long highest_offset = -1;
529 1.1 christos /* Number of ints of arguments that we have printed so far. */
530 1.1 christos int args_printed = 0;
531 1.1 christos struct cleanup *old_chain;
532 1.1 christos struct ui_file *stb;
533 1.1 christos /* True if we should print arguments, false otherwise. */
534 1.1 christos int print_args = strcmp (print_frame_arguments, "none");
535 1.1 christos
536 1.1 christos stb = mem_fileopen ();
537 1.1 christos old_chain = make_cleanup_ui_file_delete (stb);
538 1.1 christos
539 1.1 christos if (func)
540 1.3 christos {
541 1.1 christos const struct block *b = SYMBOL_BLOCK_VALUE (func);
542 1.1 christos struct block_iterator iter;
543 1.1 christos struct symbol *sym;
544 1.1 christos
545 1.1 christos ALL_BLOCK_SYMBOLS (b, iter, sym)
546 1.1 christos {
547 1.1 christos struct frame_arg arg, entryarg;
548 1.1 christos
549 1.1 christos QUIT;
550 1.1 christos
551 1.1 christos /* Keep track of the highest stack argument offset seen, and
552 1.1 christos skip over any kinds of symbols we don't care about. */
553 1.1 christos
554 1.1 christos if (!SYMBOL_IS_ARGUMENT (sym))
555 1.1 christos continue;
556 1.1 christos
557 1.1 christos switch (SYMBOL_CLASS (sym))
558 1.1 christos {
559 1.1 christos case LOC_ARG:
560 1.1 christos case LOC_REF_ARG:
561 1.1 christos {
562 1.1 christos long current_offset = SYMBOL_VALUE (sym);
563 1.1 christos int arg_size = TYPE_LENGTH (SYMBOL_TYPE (sym));
564 1.1 christos
565 1.1 christos /* Compute address of next argument by adding the size of
566 1.1 christos this argument and rounding to an int boundary. */
567 1.1 christos current_offset =
568 1.1 christos ((current_offset + arg_size + sizeof (int) - 1)
569 1.1 christos & ~(sizeof (int) - 1));
570 1.1 christos
571 1.1 christos /* If this is the highest offset seen yet, set
572 1.1 christos highest_offset. */
573 1.1 christos if (highest_offset == -1
574 1.1 christos || (current_offset > highest_offset))
575 1.1 christos highest_offset = current_offset;
576 1.1 christos
577 1.1 christos /* Add the number of ints we're about to print to
578 1.1 christos args_printed. */
579 1.1 christos args_printed += (arg_size + sizeof (int) - 1) / sizeof (int);
580 1.1 christos }
581 1.1 christos
582 1.1 christos /* We care about types of symbols, but don't need to
583 1.1 christos keep track of stack offsets in them. */
584 1.1 christos case LOC_REGISTER:
585 1.1 christos case LOC_REGPARM_ADDR:
586 1.1 christos case LOC_COMPUTED:
587 1.1 christos case LOC_OPTIMIZED_OUT:
588 1.1 christos default:
589 1.1 christos break;
590 1.1 christos }
591 1.1 christos
592 1.1 christos /* We have to look up the symbol because arguments can have
593 1.1 christos two entries (one a parameter, one a local) and the one we
594 1.1 christos want is the local, which lookup_symbol will find for us.
595 1.1 christos This includes gcc1 (not gcc2) on SPARC when passing a
596 1.1 christos small structure and gcc2 when the argument type is float
597 1.1 christos and it is passed as a double and converted to float by
598 1.1 christos the prologue (in the latter case the type of the LOC_ARG
599 1.1 christos symbol is double and the type of the LOC_LOCAL symbol is
600 1.1 christos float). */
601 1.1 christos /* But if the parameter name is null, don't try it. Null
602 1.1 christos parameter names occur on the RS/6000, for traceback
603 1.1 christos tables. FIXME, should we even print them? */
604 1.1 christos
605 1.1 christos if (*SYMBOL_LINKAGE_NAME (sym))
606 1.1 christos {
607 1.1 christos struct symbol *nsym;
608 1.1 christos
609 1.1 christos nsym = lookup_symbol (SYMBOL_LINKAGE_NAME (sym),
610 1.1 christos b, VAR_DOMAIN, NULL);
611 1.1 christos gdb_assert (nsym != NULL);
612 1.1 christos if (SYMBOL_CLASS (nsym) == LOC_REGISTER
613 1.1 christos && !SYMBOL_IS_ARGUMENT (nsym))
614 1.1 christos {
615 1.1 christos /* There is a LOC_ARG/LOC_REGISTER pair. This means
616 1.1 christos that it was passed on the stack and loaded into a
617 1.1 christos register, or passed in a register and stored in a
618 1.1 christos stack slot. GDB 3.x used the LOC_ARG; GDB
619 1.1 christos 4.0-4.11 used the LOC_REGISTER.
620 1.1 christos
621 1.1 christos Reasons for using the LOC_ARG:
622 1.1 christos
623 1.1 christos (1) Because find_saved_registers may be slow for
624 1.1 christos remote debugging.
625 1.1 christos
626 1.1 christos (2) Because registers are often re-used and stack
627 1.1 christos slots rarely (never?) are. Therefore using
628 1.1 christos the stack slot is much less likely to print
629 1.1 christos garbage.
630 1.1 christos
631 1.1 christos Reasons why we might want to use the LOC_REGISTER:
632 1.1 christos
633 1.1 christos (1) So that the backtrace prints the same value
634 1.1 christos as "print foo". I see no compelling reason
635 1.1 christos why this needs to be the case; having the
636 1.1 christos backtrace print the value which was passed
637 1.1 christos in, and "print foo" print the value as
638 1.1 christos modified within the called function, makes
639 1.1 christos perfect sense to me.
640 1.1 christos
641 1.1 christos Additional note: It might be nice if "info args"
642 1.1 christos displayed both values.
643 1.1 christos
644 1.1 christos One more note: There is a case with SPARC
645 1.1 christos structure passing where we need to use the
646 1.1 christos LOC_REGISTER, but this is dealt with by creating
647 1.1 christos a single LOC_REGPARM in symbol reading. */
648 1.1 christos
649 1.1 christos /* Leave sym (the LOC_ARG) alone. */
650 1.1 christos ;
651 1.1 christos }
652 1.1 christos else
653 1.1 christos sym = nsym;
654 1.1 christos }
655 1.1 christos
656 1.1 christos /* Print the current arg. */
657 1.1 christos if (!first)
658 1.1 christos ui_out_text (uiout, ", ");
659 1.1 christos ui_out_wrap_hint (uiout, " ");
660 1.1 christos
661 1.1 christos if (!print_args)
662 1.1 christos {
663 1.1 christos memset (&arg, 0, sizeof (arg));
664 1.1 christos arg.sym = sym;
665 1.1 christos arg.entry_kind = print_entry_values_no;
666 1.1 christos memset (&entryarg, 0, sizeof (entryarg));
667 1.1 christos entryarg.sym = sym;
668 1.1 christos entryarg.entry_kind = print_entry_values_no;
669 1.1 christos }
670 1.1 christos else
671 1.1 christos read_frame_arg (sym, frame, &arg, &entryarg);
672 1.1 christos
673 1.1 christos if (arg.entry_kind != print_entry_values_only)
674 1.1 christos print_frame_arg (&arg);
675 1.1 christos
676 1.1 christos if (entryarg.entry_kind != print_entry_values_no)
677 1.1 christos {
678 1.1 christos if (arg.entry_kind != print_entry_values_only)
679 1.1 christos {
680 1.1 christos ui_out_text (uiout, ", ");
681 1.1 christos ui_out_wrap_hint (uiout, " ");
682 1.1 christos }
683 1.1 christos
684 1.1 christos print_frame_arg (&entryarg);
685 1.1 christos }
686 1.1 christos
687 1.1 christos xfree (arg.error);
688 1.1 christos xfree (entryarg.error);
689 1.1 christos
690 1.1 christos first = 0;
691 1.1 christos }
692 1.1 christos }
693 1.1 christos
694 1.1 christos /* Don't print nameless args in situations where we don't know
695 1.1 christos enough about the stack to find them. */
696 1.1 christos if (num != -1)
697 1.1 christos {
698 1.1 christos long start;
699 1.1 christos
700 1.1 christos if (highest_offset == -1)
701 1.1 christos start = gdbarch_frame_args_skip (get_frame_arch (frame));
702 1.1 christos else
703 1.1 christos start = highest_offset;
704 1.1 christos
705 1.1 christos print_frame_nameless_args (frame, start, num - args_printed,
706 1.1 christos first, stream);
707 1.1 christos }
708 1.1 christos
709 1.1 christos do_cleanups (old_chain);
710 1.1 christos }
711 1.1 christos
712 1.1 christos /* Set the current source and line to the location given by frame
713 1.1 christos FRAME, if possible. When CENTER is true, adjust so the relevant
714 1.1 christos line is in the center of the next 'list'. */
715 1.1 christos
716 1.3 christos void
717 1.1 christos set_current_sal_from_frame (struct frame_info *frame)
718 1.1 christos {
719 1.1 christos struct symtab_and_line sal;
720 1.1 christos
721 1.3 christos find_frame_sal (frame, &sal);
722 1.3 christos if (sal.symtab != NULL)
723 1.1 christos set_current_source_symtab_and_line (&sal);
724 1.1 christos }
725 1.1 christos
726 1.1 christos /* If ON, GDB will display disassembly of the next source line when
727 1.1 christos execution of the program being debugged stops.
728 1.1 christos If AUTO (which is the default), or there's no line info to determine
729 1.1 christos the source line of the next instruction, display disassembly of next
730 1.1 christos instruction instead. */
731 1.1 christos
732 1.1 christos static enum auto_boolean disassemble_next_line;
733 1.1 christos
734 1.1 christos static void
735 1.1 christos show_disassemble_next_line (struct ui_file *file, int from_tty,
736 1.1 christos struct cmd_list_element *c,
737 1.1 christos const char *value)
738 1.1 christos {
739 1.1 christos fprintf_filtered (file,
740 1.1 christos _("Debugger's willingness to use "
741 1.1 christos "disassemble-next-line is %s.\n"),
742 1.1 christos value);
743 1.1 christos }
744 1.1 christos
745 1.1 christos /* Use TRY_CATCH to catch the exception from the gdb_disassembly
746 1.1 christos because it will be broken by filter sometime. */
747 1.1 christos
748 1.1 christos static void
749 1.1 christos do_gdb_disassembly (struct gdbarch *gdbarch,
750 1.1 christos int how_many, CORE_ADDR low, CORE_ADDR high)
751 1.1 christos {
752 1.1 christos volatile struct gdb_exception exception;
753 1.1 christos
754 1.1 christos TRY_CATCH (exception, RETURN_MASK_ERROR)
755 1.1 christos {
756 1.1 christos gdb_disassembly (gdbarch, current_uiout, 0,
757 1.1 christos DISASSEMBLY_RAW_INSN, how_many,
758 1.1 christos low, high);
759 1.1 christos }
760 1.1 christos if (exception.reason < 0)
761 1.1 christos {
762 1.1 christos /* If an exception was thrown while doing the disassembly, print
763 1.1 christos the error message, to give the user a clue of what happened. */
764 1.1 christos exception_print (gdb_stderr, exception);
765 1.1 christos }
766 1.1 christos }
767 1.1 christos
768 1.1 christos /* Print information about frame FRAME. The output is format according
769 1.1 christos to PRINT_LEVEL and PRINT_WHAT and PRINT_ARGS. The meaning of
770 1.1 christos PRINT_WHAT is:
771 1.1 christos
772 1.1 christos SRC_LINE: Print only source line.
773 1.1 christos LOCATION: Print only location.
774 1.1 christos LOC_AND_SRC: Print location and source line.
775 1.1 christos
776 1.1 christos Used in "where" output, and to emit breakpoint or step
777 1.1 christos messages. */
778 1.1 christos
779 1.1 christos void
780 1.1 christos print_frame_info (struct frame_info *frame, int print_level,
781 1.1 christos enum print_what print_what, int print_args,
782 1.1 christos int set_current_sal)
783 1.1 christos {
784 1.1 christos struct gdbarch *gdbarch = get_frame_arch (frame);
785 1.1 christos struct symtab_and_line sal;
786 1.1 christos int source_print;
787 1.1 christos int location_print;
788 1.1 christos struct ui_out *uiout = current_uiout;
789 1.1 christos
790 1.1 christos if (get_frame_type (frame) == DUMMY_FRAME
791 1.1 christos || get_frame_type (frame) == SIGTRAMP_FRAME
792 1.1 christos || get_frame_type (frame) == ARCH_FRAME)
793 1.1 christos {
794 1.1 christos struct cleanup *uiout_cleanup
795 1.1 christos = make_cleanup_ui_out_tuple_begin_end (uiout, "frame");
796 1.1 christos
797 1.1 christos annotate_frame_begin (print_level ? frame_relative_level (frame) : 0,
798 1.1 christos gdbarch, get_frame_pc (frame));
799 1.1 christos
800 1.1 christos /* Do this regardless of SOURCE because we don't have any source
801 1.1 christos to list for this frame. */
802 1.1 christos if (print_level)
803 1.1 christos {
804 1.1 christos ui_out_text (uiout, "#");
805 1.1 christos ui_out_field_fmt_int (uiout, 2, ui_left, "level",
806 1.1 christos frame_relative_level (frame));
807 1.1 christos }
808 1.1 christos if (ui_out_is_mi_like_p (uiout))
809 1.1 christos {
810 1.1 christos annotate_frame_address ();
811 1.1 christos ui_out_field_core_addr (uiout, "addr",
812 1.1 christos gdbarch, get_frame_pc (frame));
813 1.1 christos annotate_frame_address_end ();
814 1.1 christos }
815 1.1 christos
816 1.1 christos if (get_frame_type (frame) == DUMMY_FRAME)
817 1.1 christos {
818 1.1 christos annotate_function_call ();
819 1.1 christos ui_out_field_string (uiout, "func", "<function called from gdb>");
820 1.1 christos }
821 1.1 christos else if (get_frame_type (frame) == SIGTRAMP_FRAME)
822 1.1 christos {
823 1.1 christos annotate_signal_handler_caller ();
824 1.1 christos ui_out_field_string (uiout, "func", "<signal handler called>");
825 1.1 christos }
826 1.1 christos else if (get_frame_type (frame) == ARCH_FRAME)
827 1.1 christos {
828 1.1 christos ui_out_field_string (uiout, "func", "<cross-architecture call>");
829 1.1 christos }
830 1.1 christos ui_out_text (uiout, "\n");
831 1.1 christos annotate_frame_end ();
832 1.3 christos
833 1.3 christos /* If disassemble-next-line is set to auto or on output the next
834 1.3 christos instruction. */
835 1.3 christos if (disassemble_next_line == AUTO_BOOLEAN_AUTO
836 1.3 christos || disassemble_next_line == AUTO_BOOLEAN_TRUE)
837 1.3 christos do_gdb_disassembly (get_frame_arch (frame), 1,
838 1.3 christos get_frame_pc (frame), get_frame_pc (frame) + 1);
839 1.1 christos
840 1.1 christos do_cleanups (uiout_cleanup);
841 1.1 christos return;
842 1.1 christos }
843 1.1 christos
844 1.1 christos /* If FRAME is not the innermost frame, that normally means that
845 1.1 christos FRAME->pc points to *after* the call instruction, and we want to
846 1.1 christos get the line containing the call, never the next line. But if
847 1.1 christos the next frame is a SIGTRAMP_FRAME or a DUMMY_FRAME, then the
848 1.1 christos next frame was not entered as the result of a call, and we want
849 1.1 christos to get the line containing FRAME->pc. */
850 1.1 christos find_frame_sal (frame, &sal);
851 1.1 christos
852 1.1 christos location_print = (print_what == LOCATION
853 1.1 christos || print_what == LOC_AND_ADDRESS
854 1.1 christos || print_what == SRC_AND_LOC);
855 1.1 christos
856 1.1 christos if (location_print || !sal.symtab)
857 1.1 christos print_frame (frame, print_level, print_what, print_args, sal);
858 1.1 christos
859 1.1 christos source_print = (print_what == SRC_LINE || print_what == SRC_AND_LOC);
860 1.1 christos
861 1.1 christos /* If disassemble-next-line is set to auto or on and doesn't have
862 1.1 christos the line debug messages for $pc, output the next instruction. */
863 1.1 christos if ((disassemble_next_line == AUTO_BOOLEAN_AUTO
864 1.1 christos || disassemble_next_line == AUTO_BOOLEAN_TRUE)
865 1.1 christos && source_print && !sal.symtab)
866 1.1 christos do_gdb_disassembly (get_frame_arch (frame), 1,
867 1.1 christos get_frame_pc (frame), get_frame_pc (frame) + 1);
868 1.1 christos
869 1.1 christos if (source_print && sal.symtab)
870 1.1 christos {
871 1.1 christos int done = 0;
872 1.1 christos int mid_statement = ((print_what == SRC_LINE)
873 1.1 christos && frame_show_address (frame, sal));
874 1.1 christos
875 1.1 christos if (annotation_level)
876 1.1 christos done = identify_source_line (sal.symtab, sal.line, mid_statement,
877 1.1 christos get_frame_pc (frame));
878 1.1 christos if (!done)
879 1.1 christos {
880 1.1 christos if (deprecated_print_frame_info_listing_hook)
881 1.1 christos deprecated_print_frame_info_listing_hook (sal.symtab,
882 1.1 christos sal.line,
883 1.1 christos sal.line + 1, 0);
884 1.1 christos else
885 1.1 christos {
886 1.1 christos struct value_print_options opts;
887 1.1 christos
888 1.1 christos get_user_print_options (&opts);
889 1.1 christos /* We used to do this earlier, but that is clearly
890 1.1 christos wrong. This function is used by many different
891 1.1 christos parts of gdb, including normal_stop in infrun.c,
892 1.1 christos which uses this to print out the current PC
893 1.1 christos when we stepi/nexti into the middle of a source
894 1.1 christos line. Only the command line really wants this
895 1.1 christos behavior. Other UIs probably would like the
896 1.1 christos ability to decide for themselves if it is desired. */
897 1.1 christos if (opts.addressprint && mid_statement)
898 1.1 christos {
899 1.1 christos ui_out_field_core_addr (uiout, "addr",
900 1.1 christos gdbarch, get_frame_pc (frame));
901 1.1 christos ui_out_text (uiout, "\t");
902 1.1 christos }
903 1.1 christos
904 1.1 christos print_source_lines (sal.symtab, sal.line, sal.line + 1, 0);
905 1.1 christos }
906 1.1 christos }
907 1.1 christos
908 1.1 christos /* If disassemble-next-line is set to on and there is line debug
909 1.1 christos messages, output assembly codes for next line. */
910 1.1 christos if (disassemble_next_line == AUTO_BOOLEAN_TRUE)
911 1.1 christos do_gdb_disassembly (get_frame_arch (frame), -1, sal.pc, sal.end);
912 1.1 christos }
913 1.1 christos
914 1.1 christos if (set_current_sal)
915 1.1 christos {
916 1.1 christos CORE_ADDR pc;
917 1.1 christos
918 1.1 christos if (get_frame_pc_if_available (frame, &pc))
919 1.1 christos set_last_displayed_sal (1, sal.pspace, pc, sal.symtab, sal.line);
920 1.1 christos else
921 1.1 christos set_last_displayed_sal (0, 0, 0, 0, 0);
922 1.1 christos }
923 1.1 christos
924 1.1 christos annotate_frame_end ();
925 1.1 christos
926 1.1 christos gdb_flush (gdb_stdout);
927 1.1 christos }
928 1.1 christos
929 1.1 christos /* Remember the last symtab and line we displayed, which we use e.g.
930 1.1 christos * as the place to put a breakpoint when the `break' command is
931 1.1 christos * invoked with no arguments. */
932 1.1 christos
933 1.1 christos static void
934 1.1 christos set_last_displayed_sal (int valid, struct program_space *pspace,
935 1.1 christos CORE_ADDR addr, struct symtab *symtab,
936 1.1 christos int line)
937 1.1 christos {
938 1.1 christos last_displayed_sal_valid = valid;
939 1.1 christos last_displayed_pspace = pspace;
940 1.1 christos last_displayed_addr = addr;
941 1.1 christos last_displayed_symtab = symtab;
942 1.1 christos last_displayed_line = line;
943 1.1 christos if (valid && pspace == NULL)
944 1.1 christos {
945 1.1 christos clear_last_displayed_sal ();
946 1.1 christos internal_error (__FILE__, __LINE__,
947 1.1 christos _("Trying to set NULL pspace."));
948 1.1 christos }
949 1.1 christos }
950 1.1 christos
951 1.1 christos /* Forget the last sal we displayed. */
952 1.1 christos
953 1.1 christos void
954 1.1 christos clear_last_displayed_sal (void)
955 1.1 christos {
956 1.1 christos last_displayed_sal_valid = 0;
957 1.1 christos last_displayed_pspace = 0;
958 1.1 christos last_displayed_addr = 0;
959 1.1 christos last_displayed_symtab = 0;
960 1.1 christos last_displayed_line = 0;
961 1.1 christos }
962 1.1 christos
963 1.1 christos /* Is our record of the last sal we displayed valid? If not,
964 1.1 christos * the get_last_displayed_* functions will return NULL or 0, as
965 1.1 christos * appropriate. */
966 1.1 christos
967 1.1 christos int
968 1.1 christos last_displayed_sal_is_valid (void)
969 1.1 christos {
970 1.1 christos return last_displayed_sal_valid;
971 1.1 christos }
972 1.1 christos
973 1.1 christos /* Get the pspace of the last sal we displayed, if it's valid. */
974 1.1 christos
975 1.1 christos struct program_space *
976 1.1 christos get_last_displayed_pspace (void)
977 1.1 christos {
978 1.1 christos if (last_displayed_sal_valid)
979 1.1 christos return last_displayed_pspace;
980 1.1 christos return 0;
981 1.1 christos }
982 1.1 christos
983 1.1 christos /* Get the address of the last sal we displayed, if it's valid. */
984 1.1 christos
985 1.1 christos CORE_ADDR
986 1.1 christos get_last_displayed_addr (void)
987 1.1 christos {
988 1.1 christos if (last_displayed_sal_valid)
989 1.1 christos return last_displayed_addr;
990 1.1 christos return 0;
991 1.1 christos }
992 1.1 christos
993 1.1 christos /* Get the symtab of the last sal we displayed, if it's valid. */
994 1.1 christos
995 1.1 christos struct symtab*
996 1.1 christos get_last_displayed_symtab (void)
997 1.1 christos {
998 1.1 christos if (last_displayed_sal_valid)
999 1.1 christos return last_displayed_symtab;
1000 1.1 christos return 0;
1001 1.1 christos }
1002 1.1 christos
1003 1.1 christos /* Get the line of the last sal we displayed, if it's valid. */
1004 1.1 christos
1005 1.1 christos int
1006 1.1 christos get_last_displayed_line (void)
1007 1.1 christos {
1008 1.1 christos if (last_displayed_sal_valid)
1009 1.1 christos return last_displayed_line;
1010 1.1 christos return 0;
1011 1.1 christos }
1012 1.1 christos
1013 1.1 christos /* Get the last sal we displayed, if it's valid. */
1014 1.1 christos
1015 1.1 christos void
1016 1.1 christos get_last_displayed_sal (struct symtab_and_line *sal)
1017 1.1 christos {
1018 1.1 christos if (last_displayed_sal_valid)
1019 1.1 christos {
1020 1.1 christos sal->pspace = last_displayed_pspace;
1021 1.1 christos sal->pc = last_displayed_addr;
1022 1.1 christos sal->symtab = last_displayed_symtab;
1023 1.1 christos sal->line = last_displayed_line;
1024 1.1 christos }
1025 1.1 christos else
1026 1.1 christos {
1027 1.1 christos sal->pspace = 0;
1028 1.1 christos sal->pc = 0;
1029 1.1 christos sal->symtab = 0;
1030 1.1 christos sal->line = 0;
1031 1.1 christos }
1032 1.1 christos }
1033 1.1 christos
1034 1.1 christos
1035 1.1 christos /* Attempt to obtain the FUNNAME, FUNLANG and optionally FUNCP of the function
1036 1.1 christos corresponding to FRAME. FUNNAME needs to be freed by the caller. */
1037 1.1 christos
1038 1.1 christos void
1039 1.1 christos find_frame_funname (struct frame_info *frame, char **funname,
1040 1.1 christos enum language *funlang, struct symbol **funcp)
1041 1.1 christos {
1042 1.1 christos struct symbol *func;
1043 1.1 christos
1044 1.1 christos *funname = NULL;
1045 1.1 christos *funlang = language_unknown;
1046 1.1 christos if (funcp)
1047 1.1 christos *funcp = NULL;
1048 1.1 christos
1049 1.1 christos func = get_frame_function (frame);
1050 1.1 christos if (func)
1051 1.1 christos {
1052 1.1 christos /* In certain pathological cases, the symtabs give the wrong
1053 1.1 christos function (when we are in the first function in a file which
1054 1.1 christos is compiled without debugging symbols, the previous function
1055 1.1 christos is compiled with debugging symbols, and the "foo.o" symbol
1056 1.1 christos that is supposed to tell us where the file with debugging
1057 1.1 christos symbols ends has been truncated by ar because it is longer
1058 1.1 christos than 15 characters). This also occurs if the user uses asm()
1059 1.1 christos to create a function but not stabs for it (in a file compiled
1060 1.1 christos with -g).
1061 1.1 christos
1062 1.1 christos So look in the minimal symbol tables as well, and if it comes
1063 1.1 christos up with a larger address for the function use that instead.
1064 1.1 christos I don't think this can ever cause any problems; there
1065 1.1 christos shouldn't be any minimal symbols in the middle of a function;
1066 1.1 christos if this is ever changed many parts of GDB will need to be
1067 1.1 christos changed (and we'll create a find_pc_minimal_function or some
1068 1.1 christos such). */
1069 1.1 christos
1070 1.1 christos struct bound_minimal_symbol msymbol;
1071 1.1 christos
1072 1.1 christos /* Don't attempt to do this for inlined functions, which do not
1073 1.1 christos have a corresponding minimal symbol. */
1074 1.1 christos if (!block_inlined_p (SYMBOL_BLOCK_VALUE (func)))
1075 1.1 christos msymbol
1076 1.1 christos = lookup_minimal_symbol_by_pc (get_frame_address_in_block (frame));
1077 1.1 christos else
1078 1.1 christos memset (&msymbol, 0, sizeof (msymbol));
1079 1.1 christos
1080 1.3 christos if (msymbol.minsym != NULL
1081 1.1 christos && (BMSYMBOL_VALUE_ADDRESS (msymbol)
1082 1.1 christos > BLOCK_START (SYMBOL_BLOCK_VALUE (func))))
1083 1.1 christos {
1084 1.1 christos /* We also don't know anything about the function besides
1085 1.1 christos its address and name. */
1086 1.3 christos func = 0;
1087 1.3 christos *funname = xstrdup (MSYMBOL_PRINT_NAME (msymbol.minsym));
1088 1.1 christos *funlang = MSYMBOL_LANGUAGE (msymbol.minsym);
1089 1.1 christos }
1090 1.1 christos else
1091 1.1 christos {
1092 1.1 christos *funname = xstrdup (SYMBOL_PRINT_NAME (func));
1093 1.1 christos *funlang = SYMBOL_LANGUAGE (func);
1094 1.1 christos if (funcp)
1095 1.1 christos *funcp = func;
1096 1.1 christos if (*funlang == language_cplus)
1097 1.1 christos {
1098 1.1 christos /* It seems appropriate to use SYMBOL_PRINT_NAME() here,
1099 1.1 christos to display the demangled name that we already have
1100 1.1 christos stored in the symbol table, but we stored a version
1101 1.1 christos with DMGL_PARAMS turned on, and here we don't want to
1102 1.1 christos display parameters. So remove the parameters. */
1103 1.1 christos char *func_only = cp_remove_params (*funname);
1104 1.1 christos
1105 1.1 christos if (func_only)
1106 1.1 christos {
1107 1.1 christos xfree (*funname);
1108 1.1 christos *funname = func_only;
1109 1.1 christos }
1110 1.1 christos }
1111 1.1 christos }
1112 1.1 christos }
1113 1.1 christos else
1114 1.1 christos {
1115 1.1 christos struct bound_minimal_symbol msymbol;
1116 1.1 christos CORE_ADDR pc;
1117 1.1 christos
1118 1.1 christos if (!get_frame_address_in_block_if_available (frame, &pc))
1119 1.1 christos return;
1120 1.1 christos
1121 1.1 christos msymbol = lookup_minimal_symbol_by_pc (pc);
1122 1.1 christos if (msymbol.minsym != NULL)
1123 1.3 christos {
1124 1.3 christos *funname = xstrdup (MSYMBOL_PRINT_NAME (msymbol.minsym));
1125 1.1 christos *funlang = MSYMBOL_LANGUAGE (msymbol.minsym);
1126 1.1 christos }
1127 1.1 christos }
1128 1.1 christos }
1129 1.1 christos
1130 1.1 christos static void
1131 1.1 christos print_frame (struct frame_info *frame, int print_level,
1132 1.1 christos enum print_what print_what, int print_args,
1133 1.1 christos struct symtab_and_line sal)
1134 1.1 christos {
1135 1.1 christos struct gdbarch *gdbarch = get_frame_arch (frame);
1136 1.1 christos struct ui_out *uiout = current_uiout;
1137 1.1 christos char *funname = NULL;
1138 1.1 christos enum language funlang = language_unknown;
1139 1.1 christos struct ui_file *stb;
1140 1.1 christos struct cleanup *old_chain, *list_chain;
1141 1.1 christos struct value_print_options opts;
1142 1.1 christos struct symbol *func;
1143 1.1 christos CORE_ADDR pc = 0;
1144 1.1 christos int pc_p;
1145 1.1 christos
1146 1.1 christos pc_p = get_frame_pc_if_available (frame, &pc);
1147 1.1 christos
1148 1.1 christos stb = mem_fileopen ();
1149 1.1 christos old_chain = make_cleanup_ui_file_delete (stb);
1150 1.1 christos
1151 1.1 christos find_frame_funname (frame, &funname, &funlang, &func);
1152 1.1 christos make_cleanup (xfree, funname);
1153 1.1 christos
1154 1.1 christos annotate_frame_begin (print_level ? frame_relative_level (frame) : 0,
1155 1.1 christos gdbarch, pc);
1156 1.1 christos
1157 1.1 christos list_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "frame");
1158 1.1 christos
1159 1.1 christos if (print_level)
1160 1.1 christos {
1161 1.1 christos ui_out_text (uiout, "#");
1162 1.1 christos ui_out_field_fmt_int (uiout, 2, ui_left, "level",
1163 1.1 christos frame_relative_level (frame));
1164 1.1 christos }
1165 1.1 christos get_user_print_options (&opts);
1166 1.1 christos if (opts.addressprint)
1167 1.1 christos if (!sal.symtab
1168 1.1 christos || frame_show_address (frame, sal)
1169 1.1 christos || print_what == LOC_AND_ADDRESS)
1170 1.1 christos {
1171 1.1 christos annotate_frame_address ();
1172 1.1 christos if (pc_p)
1173 1.1 christos ui_out_field_core_addr (uiout, "addr", gdbarch, pc);
1174 1.1 christos else
1175 1.1 christos ui_out_field_string (uiout, "addr", "<unavailable>");
1176 1.1 christos annotate_frame_address_end ();
1177 1.1 christos ui_out_text (uiout, " in ");
1178 1.1 christos }
1179 1.1 christos annotate_frame_function_name ();
1180 1.1 christos fprintf_symbol_filtered (stb, funname ? funname : "??",
1181 1.1 christos funlang, DMGL_ANSI);
1182 1.1 christos ui_out_field_stream (uiout, "func", stb);
1183 1.1 christos ui_out_wrap_hint (uiout, " ");
1184 1.1 christos annotate_frame_args ();
1185 1.1 christos
1186 1.1 christos ui_out_text (uiout, " (");
1187 1.1 christos if (print_args)
1188 1.1 christos {
1189 1.1 christos struct gdbarch *gdbarch = get_frame_arch (frame);
1190 1.1 christos int numargs;
1191 1.1 christos struct cleanup *args_list_chain;
1192 1.1 christos volatile struct gdb_exception e;
1193 1.1 christos
1194 1.1 christos if (gdbarch_frame_num_args_p (gdbarch))
1195 1.1 christos {
1196 1.1 christos numargs = gdbarch_frame_num_args (gdbarch, frame);
1197 1.1 christos gdb_assert (numargs >= 0);
1198 1.1 christos }
1199 1.1 christos else
1200 1.1 christos numargs = -1;
1201 1.1 christos
1202 1.1 christos args_list_chain = make_cleanup_ui_out_list_begin_end (uiout, "args");
1203 1.1 christos TRY_CATCH (e, RETURN_MASK_ERROR)
1204 1.1 christos {
1205 1.1 christos print_frame_args (func, frame, numargs, gdb_stdout);
1206 1.1 christos }
1207 1.1 christos /* FIXME: ARGS must be a list. If one argument is a string it
1208 1.1 christos will have " that will not be properly escaped. */
1209 1.1 christos /* Invoke ui_out_tuple_end. */
1210 1.1 christos do_cleanups (args_list_chain);
1211 1.1 christos QUIT;
1212 1.1 christos }
1213 1.1 christos ui_out_text (uiout, ")");
1214 1.1 christos if (sal.symtab)
1215 1.1 christos {
1216 1.1 christos const char *filename_display;
1217 1.1 christos
1218 1.1 christos filename_display = symtab_to_filename_for_display (sal.symtab);
1219 1.1 christos annotate_frame_source_begin ();
1220 1.1 christos ui_out_wrap_hint (uiout, " ");
1221 1.1 christos ui_out_text (uiout, " at ");
1222 1.1 christos annotate_frame_source_file ();
1223 1.1 christos ui_out_field_string (uiout, "file", filename_display);
1224 1.1 christos if (ui_out_is_mi_like_p (uiout))
1225 1.1 christos {
1226 1.1 christos const char *fullname = symtab_to_fullname (sal.symtab);
1227 1.1 christos
1228 1.1 christos ui_out_field_string (uiout, "fullname", fullname);
1229 1.1 christos }
1230 1.1 christos annotate_frame_source_file_end ();
1231 1.1 christos ui_out_text (uiout, ":");
1232 1.1 christos annotate_frame_source_line ();
1233 1.1 christos ui_out_field_int (uiout, "line", sal.line);
1234 1.1 christos annotate_frame_source_end ();
1235 1.1 christos }
1236 1.1 christos
1237 1.1 christos if (pc_p && (funname == NULL || sal.symtab == NULL))
1238 1.1 christos {
1239 1.1 christos char *lib = solib_name_from_address (get_frame_program_space (frame),
1240 1.1 christos get_frame_pc (frame));
1241 1.1 christos
1242 1.1 christos if (lib)
1243 1.1 christos {
1244 1.1 christos annotate_frame_where ();
1245 1.1 christos ui_out_wrap_hint (uiout, " ");
1246 1.1 christos ui_out_text (uiout, " from ");
1247 1.1 christos ui_out_field_string (uiout, "from", lib);
1248 1.1 christos }
1249 1.1 christos }
1250 1.1 christos
1251 1.1 christos /* do_cleanups will call ui_out_tuple_end() for us. */
1252 1.1 christos do_cleanups (list_chain);
1253 1.1 christos ui_out_text (uiout, "\n");
1254 1.1 christos do_cleanups (old_chain);
1255 1.1 christos }
1256 1.1 christos
1257 1.1 christos
1259 1.1 christos /* Read a frame specification in whatever the appropriate format is
1260 1.1 christos from FRAME_EXP. Call error(), printing MESSAGE, if the
1261 1.1 christos specification is in any way invalid (so this function never returns
1262 1.1 christos NULL). When SEPECTED_P is non-NULL set its target to indicate that
1263 1.1 christos the default selected frame was used. */
1264 1.1 christos
1265 1.1 christos static struct frame_info *
1266 1.1 christos parse_frame_specification_1 (const char *frame_exp, const char *message,
1267 1.1 christos int *selected_frame_p)
1268 1.1 christos {
1269 1.1 christos int numargs;
1270 1.1 christos struct value *args[4];
1271 1.1 christos CORE_ADDR addrs[ARRAY_SIZE (args)];
1272 1.1 christos
1273 1.1 christos if (frame_exp == NULL)
1274 1.1 christos numargs = 0;
1275 1.1 christos else
1276 1.1 christos {
1277 1.1 christos numargs = 0;
1278 1.1 christos while (1)
1279 1.1 christos {
1280 1.1 christos char *addr_string;
1281 1.1 christos struct cleanup *cleanup;
1282 1.1 christos const char *p;
1283 1.1 christos
1284 1.1 christos /* Skip leading white space, bail of EOL. */
1285 1.1 christos frame_exp = skip_spaces_const (frame_exp);
1286 1.1 christos if (!*frame_exp)
1287 1.1 christos break;
1288 1.1 christos
1289 1.1 christos /* Parse the argument, extract it, save it. */
1290 1.1 christos for (p = frame_exp;
1291 1.1 christos *p && !isspace (*p);
1292 1.1 christos p++);
1293 1.1 christos addr_string = savestring (frame_exp, p - frame_exp);
1294 1.1 christos frame_exp = p;
1295 1.1 christos cleanup = make_cleanup (xfree, addr_string);
1296 1.1 christos
1297 1.1 christos /* NOTE: Parse and evaluate expression, but do not use
1298 1.1 christos functions such as parse_and_eval_long or
1299 1.1 christos parse_and_eval_address to also extract the value.
1300 1.1 christos Instead value_as_long and value_as_address are used.
1301 1.1 christos This avoids problems with expressions that contain
1302 1.1 christos side-effects. */
1303 1.1 christos if (numargs >= ARRAY_SIZE (args))
1304 1.1 christos error (_("Too many args in frame specification"));
1305 1.1 christos args[numargs++] = parse_and_eval (addr_string);
1306 1.1 christos
1307 1.1 christos do_cleanups (cleanup);
1308 1.1 christos }
1309 1.1 christos }
1310 1.1 christos
1311 1.1 christos /* If no args, default to the selected frame. */
1312 1.1 christos if (numargs == 0)
1313 1.1 christos {
1314 1.1 christos if (selected_frame_p != NULL)
1315 1.1 christos (*selected_frame_p) = 1;
1316 1.1 christos return get_selected_frame (message);
1317 1.1 christos }
1318 1.1 christos
1319 1.1 christos /* None of the remaining use the selected frame. */
1320 1.1 christos if (selected_frame_p != NULL)
1321 1.1 christos (*selected_frame_p) = 0;
1322 1.1 christos
1323 1.1 christos /* Assume the single arg[0] is an integer, and try using that to
1324 1.1 christos select a frame relative to current. */
1325 1.1 christos if (numargs == 1)
1326 1.1 christos {
1327 1.1 christos struct frame_info *fid;
1328 1.1 christos int level = value_as_long (args[0]);
1329 1.1 christos
1330 1.1 christos fid = find_relative_frame (get_current_frame (), &level);
1331 1.1 christos if (level == 0)
1332 1.1 christos /* find_relative_frame was successful. */
1333 1.1 christos return fid;
1334 1.1 christos }
1335 1.1 christos
1336 1.1 christos /* Convert each value into a corresponding address. */
1337 1.1 christos {
1338 1.1 christos int i;
1339 1.1 christos
1340 1.1 christos for (i = 0; i < numargs; i++)
1341 1.1 christos addrs[i] = value_as_address (args[i]);
1342 1.1 christos }
1343 1.1 christos
1344 1.1 christos /* Assume that the single arg[0] is an address, use that to identify
1345 1.1 christos a frame with a matching ID. Should this also accept stack/pc or
1346 1.1 christos stack/pc/special. */
1347 1.1 christos if (numargs == 1)
1348 1.1 christos {
1349 1.1 christos struct frame_id id = frame_id_build_wild (addrs[0]);
1350 1.1 christos struct frame_info *fid;
1351 1.1 christos
1352 1.1 christos /* If (s)he specifies the frame with an address, he deserves
1353 1.1 christos what (s)he gets. Still, give the highest one that matches.
1354 1.1 christos (NOTE: cagney/2004-10-29: Why highest, or outer-most, I don't
1355 1.1 christos know). */
1356 1.1 christos for (fid = get_current_frame ();
1357 1.1 christos fid != NULL;
1358 1.1 christos fid = get_prev_frame (fid))
1359 1.1 christos {
1360 1.1 christos if (frame_id_eq (id, get_frame_id (fid)))
1361 1.1 christos {
1362 1.1 christos struct frame_info *prev_frame;
1363 1.1 christos
1364 1.1 christos while (1)
1365 1.1 christos {
1366 1.1 christos prev_frame = get_prev_frame (fid);
1367 1.1 christos if (!prev_frame
1368 1.1 christos || !frame_id_eq (id, get_frame_id (prev_frame)))
1369 1.1 christos break;
1370 1.1 christos fid = prev_frame;
1371 1.1 christos }
1372 1.1 christos return fid;
1373 1.1 christos }
1374 1.1 christos }
1375 1.1 christos }
1376 1.1 christos
1377 1.1 christos /* We couldn't identify the frame as an existing frame, but
1378 1.1 christos perhaps we can create one with a single argument. */
1379 1.1 christos if (numargs == 1)
1380 1.1 christos return create_new_frame (addrs[0], 0);
1381 1.1 christos else if (numargs == 2)
1382 1.1 christos return create_new_frame (addrs[0], addrs[1]);
1383 1.1 christos else
1384 1.1 christos error (_("Too many args in frame specification"));
1385 1.1 christos }
1386 1.1 christos
1387 1.1 christos static struct frame_info *
1388 1.1 christos parse_frame_specification (char *frame_exp)
1389 1.1 christos {
1390 1.1 christos return parse_frame_specification_1 (frame_exp, NULL, NULL);
1391 1.1 christos }
1392 1.1 christos
1393 1.1 christos /* Print verbosely the selected frame or the frame at address
1394 1.1 christos ADDR_EXP. Absolutely all information in the frame is printed. */
1395 1.1 christos
1396 1.1 christos static void
1397 1.1 christos frame_info (char *addr_exp, int from_tty)
1398 1.1 christos {
1399 1.1 christos struct frame_info *fi;
1400 1.1 christos struct symtab_and_line sal;
1401 1.1 christos struct symbol *func;
1402 1.1 christos struct symtab *s;
1403 1.1 christos struct frame_info *calling_frame_info;
1404 1.1 christos int numregs;
1405 1.1 christos const char *funname = 0;
1406 1.1 christos enum language funlang = language_unknown;
1407 1.1 christos const char *pc_regname;
1408 1.1 christos int selected_frame_p;
1409 1.1 christos struct gdbarch *gdbarch;
1410 1.1 christos struct cleanup *back_to = make_cleanup (null_cleanup, NULL);
1411 1.1 christos CORE_ADDR frame_pc;
1412 1.1 christos int frame_pc_p;
1413 1.1 christos /* Initialize it to avoid "may be used uninitialized" warning. */
1414 1.1 christos CORE_ADDR caller_pc = 0;
1415 1.1 christos volatile struct gdb_exception ex;
1416 1.1 christos
1417 1.1 christos fi = parse_frame_specification_1 (addr_exp, "No stack.", &selected_frame_p);
1418 1.1 christos gdbarch = get_frame_arch (fi);
1419 1.1 christos
1420 1.1 christos /* Name of the value returned by get_frame_pc(). Per comments, "pc"
1421 1.1 christos is not a good name. */
1422 1.1 christos if (gdbarch_pc_regnum (gdbarch) >= 0)
1423 1.1 christos /* OK, this is weird. The gdbarch_pc_regnum hardware register's value can
1424 1.1 christos easily not match that of the internal value returned by
1425 1.1 christos get_frame_pc(). */
1426 1.1 christos pc_regname = gdbarch_register_name (gdbarch, gdbarch_pc_regnum (gdbarch));
1427 1.1 christos else
1428 1.1 christos /* But then, this is weird to. Even without gdbarch_pc_regnum, an
1429 1.1 christos architectures will often have a hardware register called "pc",
1430 1.1 christos and that register's value, again, can easily not match
1431 1.1 christos get_frame_pc(). */
1432 1.1 christos pc_regname = "pc";
1433 1.1 christos
1434 1.1 christos frame_pc_p = get_frame_pc_if_available (fi, &frame_pc);
1435 1.1 christos find_frame_sal (fi, &sal);
1436 1.1 christos func = get_frame_function (fi);
1437 1.1 christos s = sal.symtab;
1438 1.1 christos if (func)
1439 1.1 christos {
1440 1.1 christos funname = SYMBOL_PRINT_NAME (func);
1441 1.1 christos funlang = SYMBOL_LANGUAGE (func);
1442 1.1 christos if (funlang == language_cplus)
1443 1.1 christos {
1444 1.1 christos /* It seems appropriate to use SYMBOL_PRINT_NAME() here,
1445 1.1 christos to display the demangled name that we already have
1446 1.1 christos stored in the symbol table, but we stored a version
1447 1.1 christos with DMGL_PARAMS turned on, and here we don't want to
1448 1.1 christos display parameters. So remove the parameters. */
1449 1.1 christos char *func_only = cp_remove_params (funname);
1450 1.1 christos
1451 1.1 christos if (func_only)
1452 1.1 christos {
1453 1.1 christos funname = func_only;
1454 1.1 christos make_cleanup (xfree, func_only);
1455 1.1 christos }
1456 1.1 christos }
1457 1.1 christos }
1458 1.1 christos else if (frame_pc_p)
1459 1.1 christos {
1460 1.1 christos struct bound_minimal_symbol msymbol;
1461 1.1 christos
1462 1.1 christos msymbol = lookup_minimal_symbol_by_pc (frame_pc);
1463 1.3 christos if (msymbol.minsym != NULL)
1464 1.3 christos {
1465 1.1 christos funname = MSYMBOL_PRINT_NAME (msymbol.minsym);
1466 1.1 christos funlang = MSYMBOL_LANGUAGE (msymbol.minsym);
1467 1.1 christos }
1468 1.1 christos }
1469 1.1 christos calling_frame_info = get_prev_frame (fi);
1470 1.1 christos
1471 1.1 christos if (selected_frame_p && frame_relative_level (fi) >= 0)
1472 1.1 christos {
1473 1.1 christos printf_filtered (_("Stack level %d, frame at "),
1474 1.1 christos frame_relative_level (fi));
1475 1.1 christos }
1476 1.1 christos else
1477 1.1 christos {
1478 1.1 christos printf_filtered (_("Stack frame at "));
1479 1.1 christos }
1480 1.1 christos fputs_filtered (paddress (gdbarch, get_frame_base (fi)), gdb_stdout);
1481 1.1 christos printf_filtered (":\n");
1482 1.1 christos printf_filtered (" %s = ", pc_regname);
1483 1.1 christos if (frame_pc_p)
1484 1.1 christos fputs_filtered (paddress (gdbarch, get_frame_pc (fi)), gdb_stdout);
1485 1.1 christos else
1486 1.1 christos fputs_filtered ("<unavailable>", gdb_stdout);
1487 1.1 christos
1488 1.1 christos wrap_here (" ");
1489 1.1 christos if (funname)
1490 1.1 christos {
1491 1.1 christos printf_filtered (" in ");
1492 1.1 christos fprintf_symbol_filtered (gdb_stdout, funname, funlang,
1493 1.1 christos DMGL_ANSI | DMGL_PARAMS);
1494 1.1 christos }
1495 1.1 christos wrap_here (" ");
1496 1.1 christos if (sal.symtab)
1497 1.1 christos printf_filtered (" (%s:%d)", symtab_to_filename_for_display (sal.symtab),
1498 1.1 christos sal.line);
1499 1.1 christos puts_filtered ("; ");
1500 1.1 christos wrap_here (" ");
1501 1.1 christos printf_filtered ("saved %s = ", pc_regname);
1502 1.1 christos
1503 1.1 christos TRY_CATCH (ex, RETURN_MASK_ERROR)
1504 1.1 christos {
1505 1.1 christos caller_pc = frame_unwind_caller_pc (fi);
1506 1.1 christos }
1507 1.1 christos if (ex.reason < 0)
1508 1.1 christos {
1509 1.1 christos switch (ex.error)
1510 1.1 christos {
1511 1.1 christos case NOT_AVAILABLE_ERROR:
1512 1.1 christos val_print_unavailable (gdb_stdout);
1513 1.1 christos break;
1514 1.1 christos case OPTIMIZED_OUT_ERROR:
1515 1.1 christos val_print_not_saved (gdb_stdout);
1516 1.1 christos break;
1517 1.1 christos default:
1518 1.1 christos fprintf_filtered (gdb_stdout, _("<error: %s>"), ex.message);
1519 1.1 christos break;
1520 1.1 christos }
1521 1.1 christos }
1522 1.1 christos else
1523 1.1 christos fputs_filtered (paddress (gdbarch, caller_pc), gdb_stdout);
1524 1.1 christos printf_filtered ("\n");
1525 1.1 christos
1526 1.1 christos if (calling_frame_info == NULL)
1527 1.1 christos {
1528 1.1 christos enum unwind_stop_reason reason;
1529 1.1 christos
1530 1.1 christos reason = get_frame_unwind_stop_reason (fi);
1531 1.3 christos if (reason != UNWIND_NO_REASON)
1532 1.1 christos printf_filtered (_(" Outermost frame: %s\n"),
1533 1.1 christos frame_stop_reason_string (fi));
1534 1.1 christos }
1535 1.1 christos else if (get_frame_type (fi) == TAILCALL_FRAME)
1536 1.1 christos puts_filtered (" tail call frame");
1537 1.1 christos else if (get_frame_type (fi) == INLINE_FRAME)
1538 1.1 christos printf_filtered (" inlined into frame %d",
1539 1.1 christos frame_relative_level (get_prev_frame (fi)));
1540 1.1 christos else
1541 1.1 christos {
1542 1.1 christos printf_filtered (" called by frame at ");
1543 1.1 christos fputs_filtered (paddress (gdbarch, get_frame_base (calling_frame_info)),
1544 1.1 christos gdb_stdout);
1545 1.1 christos }
1546 1.1 christos if (get_next_frame (fi) && calling_frame_info)
1547 1.1 christos puts_filtered (",");
1548 1.1 christos wrap_here (" ");
1549 1.1 christos if (get_next_frame (fi))
1550 1.1 christos {
1551 1.1 christos printf_filtered (" caller of frame at ");
1552 1.1 christos fputs_filtered (paddress (gdbarch, get_frame_base (get_next_frame (fi))),
1553 1.1 christos gdb_stdout);
1554 1.1 christos }
1555 1.1 christos if (get_next_frame (fi) || calling_frame_info)
1556 1.1 christos puts_filtered ("\n");
1557 1.1 christos
1558 1.1 christos if (s)
1559 1.1 christos printf_filtered (" source language %s.\n",
1560 1.1 christos language_str (s->language));
1561 1.1 christos
1562 1.1 christos {
1563 1.1 christos /* Address of the argument list for this frame, or 0. */
1564 1.1 christos CORE_ADDR arg_list = get_frame_args_address (fi);
1565 1.1 christos /* Number of args for this frame, or -1 if unknown. */
1566 1.1 christos int numargs;
1567 1.1 christos
1568 1.1 christos if (arg_list == 0)
1569 1.1 christos printf_filtered (" Arglist at unknown address.\n");
1570 1.1 christos else
1571 1.1 christos {
1572 1.1 christos printf_filtered (" Arglist at ");
1573 1.1 christos fputs_filtered (paddress (gdbarch, arg_list), gdb_stdout);
1574 1.1 christos printf_filtered (",");
1575 1.1 christos
1576 1.1 christos if (!gdbarch_frame_num_args_p (gdbarch))
1577 1.1 christos {
1578 1.1 christos numargs = -1;
1579 1.1 christos puts_filtered (" args: ");
1580 1.1 christos }
1581 1.1 christos else
1582 1.1 christos {
1583 1.1 christos numargs = gdbarch_frame_num_args (gdbarch, fi);
1584 1.1 christos gdb_assert (numargs >= 0);
1585 1.1 christos if (numargs == 0)
1586 1.1 christos puts_filtered (" no args.");
1587 1.1 christos else if (numargs == 1)
1588 1.1 christos puts_filtered (" 1 arg: ");
1589 1.1 christos else
1590 1.1 christos printf_filtered (" %d args: ", numargs);
1591 1.1 christos }
1592 1.1 christos print_frame_args (func, fi, numargs, gdb_stdout);
1593 1.1 christos puts_filtered ("\n");
1594 1.1 christos }
1595 1.1 christos }
1596 1.1 christos {
1597 1.1 christos /* Address of the local variables for this frame, or 0. */
1598 1.1 christos CORE_ADDR arg_list = get_frame_locals_address (fi);
1599 1.1 christos
1600 1.1 christos if (arg_list == 0)
1601 1.1 christos printf_filtered (" Locals at unknown address,");
1602 1.1 christos else
1603 1.1 christos {
1604 1.1 christos printf_filtered (" Locals at ");
1605 1.1 christos fputs_filtered (paddress (gdbarch, arg_list), gdb_stdout);
1606 1.1 christos printf_filtered (",");
1607 1.1 christos }
1608 1.1 christos }
1609 1.1 christos
1610 1.1 christos /* Print as much information as possible on the location of all the
1611 1.1 christos registers. */
1612 1.1 christos {
1613 1.1 christos enum lval_type lval;
1614 1.1 christos int optimized;
1615 1.1 christos int unavailable;
1616 1.1 christos CORE_ADDR addr;
1617 1.1 christos int realnum;
1618 1.1 christos int count;
1619 1.1 christos int i;
1620 1.1 christos int need_nl = 1;
1621 1.1 christos
1622 1.1 christos /* The sp is special; what's displayed isn't the save address, but
1623 1.1 christos the value of the previous frame's sp. This is a legacy thing,
1624 1.1 christos at one stage the frame cached the previous frame's SP instead
1625 1.1 christos of its address, hence it was easiest to just display the cached
1626 1.1 christos value. */
1627 1.1 christos if (gdbarch_sp_regnum (gdbarch) >= 0)
1628 1.1 christos {
1629 1.1 christos /* Find out the location of the saved stack pointer with out
1630 1.1 christos actually evaluating it. */
1631 1.1 christos frame_register_unwind (fi, gdbarch_sp_regnum (gdbarch),
1632 1.1 christos &optimized, &unavailable, &lval, &addr,
1633 1.1 christos &realnum, NULL);
1634 1.1 christos if (!optimized && !unavailable && lval == not_lval)
1635 1.1 christos {
1636 1.1 christos enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
1637 1.1 christos int sp_size = register_size (gdbarch, gdbarch_sp_regnum (gdbarch));
1638 1.1 christos gdb_byte value[MAX_REGISTER_SIZE];
1639 1.1 christos CORE_ADDR sp;
1640 1.1 christos
1641 1.1 christos frame_register_unwind (fi, gdbarch_sp_regnum (gdbarch),
1642 1.1 christos &optimized, &unavailable, &lval, &addr,
1643 1.1 christos &realnum, value);
1644 1.1 christos /* NOTE: cagney/2003-05-22: This is assuming that the
1645 1.1 christos stack pointer was packed as an unsigned integer. That
1646 1.1 christos may or may not be valid. */
1647 1.1 christos sp = extract_unsigned_integer (value, sp_size, byte_order);
1648 1.1 christos printf_filtered (" Previous frame's sp is ");
1649 1.1 christos fputs_filtered (paddress (gdbarch, sp), gdb_stdout);
1650 1.1 christos printf_filtered ("\n");
1651 1.1 christos need_nl = 0;
1652 1.1 christos }
1653 1.1 christos else if (!optimized && !unavailable && lval == lval_memory)
1654 1.1 christos {
1655 1.1 christos printf_filtered (" Previous frame's sp at ");
1656 1.1 christos fputs_filtered (paddress (gdbarch, addr), gdb_stdout);
1657 1.1 christos printf_filtered ("\n");
1658 1.1 christos need_nl = 0;
1659 1.1 christos }
1660 1.1 christos else if (!optimized && !unavailable && lval == lval_register)
1661 1.1 christos {
1662 1.1 christos printf_filtered (" Previous frame's sp in %s\n",
1663 1.1 christos gdbarch_register_name (gdbarch, realnum));
1664 1.1 christos need_nl = 0;
1665 1.1 christos }
1666 1.1 christos /* else keep quiet. */
1667 1.1 christos }
1668 1.1 christos
1669 1.1 christos count = 0;
1670 1.1 christos numregs = gdbarch_num_regs (gdbarch)
1671 1.1 christos + gdbarch_num_pseudo_regs (gdbarch);
1672 1.1 christos for (i = 0; i < numregs; i++)
1673 1.1 christos if (i != gdbarch_sp_regnum (gdbarch)
1674 1.1 christos && gdbarch_register_reggroup_p (gdbarch, i, all_reggroup))
1675 1.1 christos {
1676 1.1 christos /* Find out the location of the saved register without
1677 1.1 christos fetching the corresponding value. */
1678 1.1 christos frame_register_unwind (fi, i, &optimized, &unavailable,
1679 1.1 christos &lval, &addr, &realnum, NULL);
1680 1.1 christos /* For moment, only display registers that were saved on the
1681 1.1 christos stack. */
1682 1.1 christos if (!optimized && !unavailable && lval == lval_memory)
1683 1.1 christos {
1684 1.1 christos if (count == 0)
1685 1.1 christos puts_filtered (" Saved registers:\n ");
1686 1.1 christos else
1687 1.1 christos puts_filtered (",");
1688 1.1 christos wrap_here (" ");
1689 1.1 christos printf_filtered (" %s at ",
1690 1.1 christos gdbarch_register_name (gdbarch, i));
1691 1.1 christos fputs_filtered (paddress (gdbarch, addr), gdb_stdout);
1692 1.1 christos count++;
1693 1.1 christos }
1694 1.1 christos }
1695 1.1 christos if (count || need_nl)
1696 1.1 christos puts_filtered ("\n");
1697 1.1 christos }
1698 1.1 christos
1699 1.1 christos do_cleanups (back_to);
1700 1.1 christos }
1701 1.1 christos
1702 1.1 christos /* Print briefly all stack frames or just the innermost COUNT_EXP
1703 1.1 christos frames. */
1704 1.1 christos
1705 1.1 christos static void
1706 1.1 christos backtrace_command_1 (char *count_exp, int show_locals, int no_filters,
1707 1.1 christos int from_tty)
1708 1.1 christos {
1709 1.1 christos struct frame_info *fi;
1710 1.1 christos int count;
1711 1.1 christos int i;
1712 1.3 christos struct frame_info *trailing;
1713 1.1 christos int trailing_level, py_start = 0, py_end = 0;
1714 1.1 christos enum ext_lang_bt_status result = EXT_LANG_BT_ERROR;
1715 1.1 christos
1716 1.1 christos if (!target_has_stack)
1717 1.1 christos error (_("No stack."));
1718 1.1 christos
1719 1.1 christos /* The following code must do two things. First, it must set the
1720 1.1 christos variable TRAILING to the frame from which we should start
1721 1.1 christos printing. Second, it must set the variable count to the number
1722 1.1 christos of frames which we should print, or -1 if all of them. */
1723 1.1 christos trailing = get_current_frame ();
1724 1.1 christos
1725 1.1 christos trailing_level = 0;
1726 1.1 christos if (count_exp)
1727 1.1 christos {
1728 1.1 christos count = parse_and_eval_long (count_exp);
1729 1.1 christos if (count < 0)
1730 1.1 christos {
1731 1.1 christos struct frame_info *current;
1732 1.1 christos
1733 1.1 christos py_start = count;
1734 1.1 christos count = -count;
1735 1.1 christos
1736 1.1 christos current = trailing;
1737 1.1 christos while (current && count--)
1738 1.1 christos {
1739 1.1 christos QUIT;
1740 1.1 christos current = get_prev_frame (current);
1741 1.1 christos }
1742 1.1 christos
1743 1.1 christos /* Will stop when CURRENT reaches the top of the stack.
1744 1.1 christos TRAILING will be COUNT below it. */
1745 1.1 christos while (current)
1746 1.1 christos {
1747 1.1 christos QUIT;
1748 1.1 christos trailing = get_prev_frame (trailing);
1749 1.1 christos current = get_prev_frame (current);
1750 1.1 christos trailing_level++;
1751 1.1 christos }
1752 1.1 christos
1753 1.1 christos count = -1;
1754 1.1 christos }
1755 1.1 christos else
1756 1.1 christos {
1757 1.1 christos py_start = 0;
1758 1.1 christos py_end = count;
1759 1.1 christos }
1760 1.1 christos }
1761 1.1 christos else
1762 1.1 christos {
1763 1.1 christos py_end = -1;
1764 1.1 christos count = -1;
1765 1.1 christos }
1766 1.1 christos
1767 1.1 christos if (info_verbose)
1768 1.1 christos {
1769 1.1 christos /* Read in symbols for all of the frames. Need to do this in a
1770 1.1 christos separate pass so that "Reading in symbols for xxx" messages
1771 1.1 christos don't screw up the appearance of the backtrace. Also if
1772 1.1 christos people have strong opinions against reading symbols for
1773 1.1 christos backtrace this may have to be an option. */
1774 1.1 christos i = count;
1775 1.1 christos for (fi = trailing; fi != NULL && i--; fi = get_prev_frame (fi))
1776 1.1 christos {
1777 1.1 christos CORE_ADDR pc;
1778 1.1 christos
1779 1.3 christos QUIT;
1780 1.1 christos pc = get_frame_address_in_block (fi);
1781 1.1 christos expand_symtab_containing_pc (pc, find_pc_mapped_section (pc));
1782 1.1 christos }
1783 1.1 christos }
1784 1.1 christos
1785 1.1 christos if (! no_filters)
1786 1.3 christos {
1787 1.1 christos int flags = PRINT_LEVEL | PRINT_FRAME_INFO | PRINT_ARGS;
1788 1.1 christos enum ext_lang_frame_args arg_type;
1789 1.1 christos
1790 1.1 christos if (show_locals)
1791 1.1 christos flags |= PRINT_LOCALS;
1792 1.1 christos
1793 1.1 christos if (!strcmp (print_frame_arguments, "scalars"))
1794 1.1 christos arg_type = CLI_SCALAR_VALUES;
1795 1.1 christos else if (!strcmp (print_frame_arguments, "all"))
1796 1.1 christos arg_type = CLI_ALL_VALUES;
1797 1.1 christos else
1798 1.3 christos arg_type = NO_VALUES;
1799 1.3 christos
1800 1.3 christos result = apply_ext_lang_frame_filter (get_current_frame (), flags,
1801 1.3 christos arg_type, current_uiout,
1802 1.1 christos py_start, py_end);
1803 1.1 christos }
1804 1.1 christos
1805 1.3 christos /* Run the inbuilt backtrace if there are no filters registered, or
1806 1.1 christos "no-filters" has been specified from the command. */
1807 1.1 christos if (no_filters || result == EXT_LANG_BT_NO_FILTERS)
1808 1.1 christos {
1809 1.1 christos for (i = 0, fi = trailing; fi && count--; i++, fi = get_prev_frame (fi))
1810 1.1 christos {
1811 1.1 christos QUIT;
1812 1.1 christos
1813 1.1 christos /* Don't use print_stack_frame; if an error() occurs it probably
1814 1.1 christos means further attempts to backtrace would fail (on the other
1815 1.1 christos hand, perhaps the code does or could be fixed to make sure
1816 1.1 christos the frame->prev field gets set to NULL in that case). */
1817 1.1 christos
1818 1.1 christos print_frame_info (fi, 1, LOCATION, 1, 0);
1819 1.1 christos if (show_locals)
1820 1.1 christos {
1821 1.1 christos struct frame_id frame_id = get_frame_id (fi);
1822 1.1 christos
1823 1.1 christos print_frame_local_vars (fi, 1, gdb_stdout);
1824 1.1 christos
1825 1.1 christos /* print_frame_local_vars invalidates FI. */
1826 1.1 christos fi = frame_find_by_id (frame_id);
1827 1.1 christos if (fi == NULL)
1828 1.1 christos {
1829 1.1 christos trailing = NULL;
1830 1.1 christos warning (_("Unable to restore previously selected frame."));
1831 1.1 christos break;
1832 1.1 christos }
1833 1.1 christos }
1834 1.1 christos
1835 1.1 christos /* Save the last frame to check for error conditions. */
1836 1.1 christos trailing = fi;
1837 1.1 christos }
1838 1.1 christos
1839 1.1 christos /* If we've stopped before the end, mention that. */
1840 1.1 christos if (fi && from_tty)
1841 1.1 christos printf_filtered (_("(More stack frames follow...)\n"));
1842 1.1 christos
1843 1.1 christos /* If we've run out of frames, and the reason appears to be an error
1844 1.1 christos condition, print it. */
1845 1.1 christos if (fi == NULL && trailing != NULL)
1846 1.1 christos {
1847 1.1 christos enum unwind_stop_reason reason;
1848 1.1 christos
1849 1.1 christos reason = get_frame_unwind_stop_reason (trailing);
1850 1.3 christos if (reason >= UNWIND_FIRST_ERROR)
1851 1.1 christos printf_filtered (_("Backtrace stopped: %s\n"),
1852 1.1 christos frame_stop_reason_string (trailing));
1853 1.1 christos }
1854 1.1 christos }
1855 1.1 christos }
1856 1.1 christos
1857 1.1 christos static void
1858 1.1 christos backtrace_command (char *arg, int from_tty)
1859 1.1 christos {
1860 1.1 christos struct cleanup *old_chain = make_cleanup (null_cleanup, NULL);
1861 1.1 christos int fulltrace_arg = -1, arglen = 0, argc = 0, no_filters = -1;
1862 1.1 christos int user_arg = 0;
1863 1.1 christos
1864 1.1 christos if (arg)
1865 1.1 christos {
1866 1.1 christos char **argv;
1867 1.1 christos int i;
1868 1.1 christos
1869 1.1 christos argv = gdb_buildargv (arg);
1870 1.1 christos make_cleanup_freeargv (argv);
1871 1.1 christos argc = 0;
1872 1.1 christos for (i = 0; argv[i]; i++)
1873 1.1 christos {
1874 1.1 christos unsigned int j;
1875 1.1 christos
1876 1.1 christos for (j = 0; j < strlen (argv[i]); j++)
1877 1.1 christos argv[i][j] = tolower (argv[i][j]);
1878 1.1 christos
1879 1.1 christos if (no_filters < 0 && subset_compare (argv[i], "no-filters"))
1880 1.1 christos no_filters = argc;
1881 1.1 christos else
1882 1.1 christos {
1883 1.1 christos if (fulltrace_arg < 0 && subset_compare (argv[i], "full"))
1884 1.1 christos fulltrace_arg = argc;
1885 1.1 christos else
1886 1.1 christos {
1887 1.1 christos user_arg++;
1888 1.1 christos arglen += strlen (argv[i]);
1889 1.1 christos }
1890 1.1 christos }
1891 1.1 christos argc++;
1892 1.1 christos }
1893 1.1 christos arglen += user_arg;
1894 1.1 christos if (fulltrace_arg >= 0 || no_filters >= 0)
1895 1.1 christos {
1896 1.1 christos if (arglen > 0)
1897 1.1 christos {
1898 1.1 christos arg = xmalloc (arglen + 1);
1899 1.1 christos make_cleanup (xfree, arg);
1900 1.1 christos arg[0] = 0;
1901 1.1 christos for (i = 0; i < argc; i++)
1902 1.1 christos {
1903 1.1 christos if (i != fulltrace_arg && i != no_filters)
1904 1.1 christos {
1905 1.1 christos strcat (arg, argv[i]);
1906 1.1 christos strcat (arg, " ");
1907 1.1 christos }
1908 1.1 christos }
1909 1.1 christos }
1910 1.1 christos else
1911 1.1 christos arg = NULL;
1912 1.1 christos }
1913 1.1 christos }
1914 1.1 christos
1915 1.1 christos backtrace_command_1 (arg, fulltrace_arg >= 0 /* show_locals */,
1916 1.1 christos no_filters >= 0 /* no frame-filters */, from_tty);
1917 1.1 christos
1918 1.1 christos do_cleanups (old_chain);
1919 1.1 christos }
1920 1.1 christos
1921 1.1 christos static void
1922 1.1 christos backtrace_full_command (char *arg, int from_tty)
1923 1.1 christos {
1924 1.1 christos backtrace_command_1 (arg, 1 /* show_locals */, 0, from_tty);
1925 1.1 christos }
1926 1.1 christos
1927 1.1 christos
1929 1.1 christos /* Iterate over the local variables of a block B, calling CB with
1930 1.3 christos CB_DATA. */
1931 1.1 christos
1932 1.1 christos static void
1933 1.1 christos iterate_over_block_locals (const struct block *b,
1934 1.1 christos iterate_over_block_arg_local_vars_cb cb,
1935 1.1 christos void *cb_data)
1936 1.1 christos {
1937 1.1 christos struct block_iterator iter;
1938 1.1 christos struct symbol *sym;
1939 1.1 christos
1940 1.1 christos ALL_BLOCK_SYMBOLS (b, iter, sym)
1941 1.1 christos {
1942 1.1 christos switch (SYMBOL_CLASS (sym))
1943 1.1 christos {
1944 1.1 christos case LOC_LOCAL:
1945 1.1 christos case LOC_REGISTER:
1946 1.1 christos case LOC_STATIC:
1947 1.1 christos case LOC_COMPUTED:
1948 1.1 christos if (SYMBOL_IS_ARGUMENT (sym))
1949 1.1 christos break;
1950 1.1 christos if (SYMBOL_DOMAIN (sym) == COMMON_BLOCK_DOMAIN)
1951 1.1 christos break;
1952 1.1 christos (*cb) (SYMBOL_PRINT_NAME (sym), sym, cb_data);
1953 1.1 christos break;
1954 1.1 christos
1955 1.1 christos default:
1956 1.1 christos /* Ignore symbols which are not locals. */
1957 1.1 christos break;
1958 1.1 christos }
1959 1.1 christos }
1960 1.1 christos }
1961 1.1 christos
1962 1.1 christos
1963 1.1 christos /* Same, but print labels. */
1964 1.1 christos
1965 1.1 christos #if 0
1966 1.1 christos /* Commented out, as the code using this function has also been
1967 1.1 christos commented out. FIXME:brobecker/2009-01-13: Find out why the code
1968 1.1 christos was commented out in the first place. The discussion introducing
1969 1.1 christos this change (2007-12-04: Support lexical blocks and function bodies
1970 1.1 christos that occupy non-contiguous address ranges) did not explain why
1971 1.1 christos this change was made. */
1972 1.1 christos static int
1973 1.1 christos print_block_frame_labels (struct gdbarch *gdbarch, struct block *b,
1974 1.1 christos int *have_default, struct ui_file *stream)
1975 1.1 christos {
1976 1.1 christos struct block_iterator iter;
1977 1.1 christos struct symbol *sym;
1978 1.1 christos int values_printed = 0;
1979 1.1 christos
1980 1.1 christos ALL_BLOCK_SYMBOLS (b, iter, sym)
1981 1.1 christos {
1982 1.1 christos if (strcmp (SYMBOL_LINKAGE_NAME (sym), "default") == 0)
1983 1.1 christos {
1984 1.1 christos if (*have_default)
1985 1.1 christos continue;
1986 1.1 christos *have_default = 1;
1987 1.1 christos }
1988 1.1 christos if (SYMBOL_CLASS (sym) == LOC_LABEL)
1989 1.1 christos {
1990 1.1 christos struct symtab_and_line sal;
1991 1.1 christos struct value_print_options opts;
1992 1.1 christos
1993 1.1 christos sal = find_pc_line (SYMBOL_VALUE_ADDRESS (sym), 0);
1994 1.1 christos values_printed = 1;
1995 1.1 christos fputs_filtered (SYMBOL_PRINT_NAME (sym), stream);
1996 1.1 christos get_user_print_options (&opts);
1997 1.1 christos if (opts.addressprint)
1998 1.1 christos {
1999 1.1 christos fprintf_filtered (stream, " ");
2000 1.1 christos fputs_filtered (paddress (gdbarch, SYMBOL_VALUE_ADDRESS (sym)),
2001 1.1 christos stream);
2002 1.1 christos }
2003 1.1 christos fprintf_filtered (stream, " in file %s, line %d\n",
2004 1.1 christos sal.symtab->filename, sal.line);
2005 1.1 christos }
2006 1.1 christos }
2007 1.1 christos
2008 1.1 christos return values_printed;
2009 1.1 christos }
2010 1.1 christos #endif
2011 1.1 christos
2012 1.1 christos /* Iterate over all the local variables in block B, including all its
2013 1.3 christos superblocks, stopping when the top-level block is reached. */
2014 1.1 christos
2015 1.1 christos void
2016 1.1 christos iterate_over_block_local_vars (const struct block *block,
2017 1.1 christos iterate_over_block_arg_local_vars_cb cb,
2018 1.1 christos void *cb_data)
2019 1.1 christos {
2020 1.1 christos while (block)
2021 1.1 christos {
2022 1.1 christos iterate_over_block_locals (block, cb, cb_data);
2023 1.1 christos /* After handling the function's top-level block, stop. Don't
2024 1.1 christos continue to its superblock, the block of per-file
2025 1.1 christos symbols. */
2026 1.1 christos if (BLOCK_FUNCTION (block))
2027 1.1 christos break;
2028 1.1 christos block = BLOCK_SUPERBLOCK (block);
2029 1.1 christos }
2030 1.1 christos }
2031 1.1 christos
2032 1.1 christos /* Data to be passed around in the calls to the locals and args
2033 1.1 christos iterators. */
2034 1.1 christos
2035 1.1 christos struct print_variable_and_value_data
2036 1.1 christos {
2037 1.1 christos struct frame_id frame_id;
2038 1.1 christos int num_tabs;
2039 1.1 christos struct ui_file *stream;
2040 1.1 christos int values_printed;
2041 1.1 christos };
2042 1.1 christos
2043 1.1 christos /* The callback for the locals and args iterators. */
2044 1.1 christos
2045 1.1 christos static void
2046 1.1 christos do_print_variable_and_value (const char *print_name,
2047 1.1 christos struct symbol *sym,
2048 1.1 christos void *cb_data)
2049 1.1 christos {
2050 1.1 christos struct print_variable_and_value_data *p = cb_data;
2051 1.1 christos struct frame_info *frame;
2052 1.1 christos
2053 1.1 christos frame = frame_find_by_id (p->frame_id);
2054 1.1 christos if (frame == NULL)
2055 1.1 christos {
2056 1.1 christos warning (_("Unable to restore previously selected frame."));
2057 1.1 christos return;
2058 1.1 christos }
2059 1.1 christos
2060 1.1 christos print_variable_and_value (print_name, sym, frame, p->stream, p->num_tabs);
2061 1.1 christos
2062 1.1 christos /* print_variable_and_value invalidates FRAME. */
2063 1.1 christos frame = NULL;
2064 1.1 christos
2065 1.1 christos p->values_printed = 1;
2066 1.1 christos }
2067 1.1 christos
2068 1.1 christos /* Print all variables from the innermost up to the function block of FRAME.
2069 1.1 christos Print them with values to STREAM indented by NUM_TABS.
2070 1.1 christos
2071 1.1 christos This function will invalidate FRAME. */
2072 1.1 christos
2073 1.1 christos static void
2074 1.1 christos print_frame_local_vars (struct frame_info *frame, int num_tabs,
2075 1.3 christos struct ui_file *stream)
2076 1.1 christos {
2077 1.1 christos struct print_variable_and_value_data cb_data;
2078 1.1 christos const struct block *block;
2079 1.1 christos CORE_ADDR pc;
2080 1.1 christos
2081 1.1 christos if (!get_frame_pc_if_available (frame, &pc))
2082 1.1 christos {
2083 1.1 christos fprintf_filtered (stream,
2084 1.1 christos _("PC unavailable, cannot determine locals.\n"));
2085 1.1 christos return;
2086 1.1 christos }
2087 1.1 christos
2088 1.1 christos block = get_frame_block (frame, 0);
2089 1.1 christos if (block == 0)
2090 1.1 christos {
2091 1.1 christos fprintf_filtered (stream, "No symbol table info available.\n");
2092 1.1 christos return;
2093 1.1 christos }
2094 1.1 christos
2095 1.1 christos cb_data.frame_id = get_frame_id (frame);
2096 1.1 christos cb_data.num_tabs = 4 * num_tabs;
2097 1.1 christos cb_data.stream = stream;
2098 1.1 christos cb_data.values_printed = 0;
2099 1.1 christos
2100 1.1 christos iterate_over_block_local_vars (block,
2101 1.1 christos do_print_variable_and_value,
2102 1.1 christos &cb_data);
2103 1.1 christos
2104 1.1 christos /* do_print_variable_and_value invalidates FRAME. */
2105 1.1 christos frame = NULL;
2106 1.1 christos
2107 1.1 christos if (!cb_data.values_printed)
2108 1.1 christos fprintf_filtered (stream, _("No locals.\n"));
2109 1.1 christos }
2110 1.1 christos
2111 1.1 christos void
2112 1.1 christos locals_info (char *args, int from_tty)
2113 1.1 christos {
2114 1.1 christos print_frame_local_vars (get_selected_frame (_("No frame selected.")),
2115 1.1 christos 0, gdb_stdout);
2116 1.1 christos }
2117 1.1 christos
2118 1.1 christos /* Iterate over all the argument variables in block B.
2119 1.1 christos
2120 1.3 christos Returns 1 if any argument was walked; 0 otherwise. */
2121 1.1 christos
2122 1.1 christos void
2123 1.1 christos iterate_over_block_arg_vars (const struct block *b,
2124 1.1 christos iterate_over_block_arg_local_vars_cb cb,
2125 1.1 christos void *cb_data)
2126 1.1 christos {
2127 1.1 christos struct block_iterator iter;
2128 1.1 christos struct symbol *sym, *sym2;
2129 1.1 christos
2130 1.1 christos ALL_BLOCK_SYMBOLS (b, iter, sym)
2131 1.1 christos {
2132 1.1 christos /* Don't worry about things which aren't arguments. */
2133 1.1 christos if (SYMBOL_IS_ARGUMENT (sym))
2134 1.1 christos {
2135 1.1 christos /* We have to look up the symbol because arguments can have
2136 1.1 christos two entries (one a parameter, one a local) and the one we
2137 1.1 christos want is the local, which lookup_symbol will find for us.
2138 1.1 christos This includes gcc1 (not gcc2) on the sparc when passing a
2139 1.1 christos small structure and gcc2 when the argument type is float
2140 1.1 christos and it is passed as a double and converted to float by
2141 1.1 christos the prologue (in the latter case the type of the LOC_ARG
2142 1.1 christos symbol is double and the type of the LOC_LOCAL symbol is
2143 1.1 christos float). There are also LOC_ARG/LOC_REGISTER pairs which
2144 1.1 christos are not combined in symbol-reading. */
2145 1.1 christos
2146 1.1 christos sym2 = lookup_symbol (SYMBOL_LINKAGE_NAME (sym),
2147 1.1 christos b, VAR_DOMAIN, NULL);
2148 1.1 christos (*cb) (SYMBOL_PRINT_NAME (sym), sym2, cb_data);
2149 1.1 christos }
2150 1.1 christos }
2151 1.1 christos }
2152 1.1 christos
2153 1.1 christos /* Print all argument variables of the function of FRAME.
2154 1.1 christos Print them with values to STREAM.
2155 1.1 christos
2156 1.1 christos This function will invalidate FRAME. */
2157 1.1 christos
2158 1.1 christos static void
2159 1.1 christos print_frame_arg_vars (struct frame_info *frame, struct ui_file *stream)
2160 1.1 christos {
2161 1.1 christos struct print_variable_and_value_data cb_data;
2162 1.1 christos struct symbol *func;
2163 1.1 christos CORE_ADDR pc;
2164 1.1 christos
2165 1.1 christos if (!get_frame_pc_if_available (frame, &pc))
2166 1.1 christos {
2167 1.1 christos fprintf_filtered (stream, _("PC unavailable, cannot determine args.\n"));
2168 1.1 christos return;
2169 1.1 christos }
2170 1.1 christos
2171 1.1 christos func = get_frame_function (frame);
2172 1.1 christos if (func == NULL)
2173 1.1 christos {
2174 1.1 christos fprintf_filtered (stream, _("No symbol table info available.\n"));
2175 1.1 christos return;
2176 1.1 christos }
2177 1.1 christos
2178 1.1 christos cb_data.frame_id = get_frame_id (frame);
2179 1.1 christos cb_data.num_tabs = 0;
2180 1.1 christos cb_data.stream = gdb_stdout;
2181 1.1 christos cb_data.values_printed = 0;
2182 1.1 christos
2183 1.1 christos iterate_over_block_arg_vars (SYMBOL_BLOCK_VALUE (func),
2184 1.1 christos do_print_variable_and_value, &cb_data);
2185 1.1 christos
2186 1.1 christos /* do_print_variable_and_value invalidates FRAME. */
2187 1.1 christos frame = NULL;
2188 1.1 christos
2189 1.1 christos if (!cb_data.values_printed)
2190 1.1 christos fprintf_filtered (stream, _("No arguments.\n"));
2191 1.1 christos }
2192 1.1 christos
2193 1.1 christos void
2194 1.1 christos args_info (char *ignore, int from_tty)
2195 1.1 christos {
2196 1.1 christos print_frame_arg_vars (get_selected_frame (_("No frame selected.")),
2197 1.1 christos gdb_stdout);
2198 1.1 christos }
2199 1.1 christos
2200 1.1 christos
2201 1.1 christos static void
2202 1.1 christos args_plus_locals_info (char *ignore, int from_tty)
2203 1.1 christos {
2204 1.1 christos args_info (ignore, from_tty);
2205 1.1 christos locals_info (ignore, from_tty);
2206 1.1 christos }
2207 1.1 christos
2208 1.1 christos
2210 1.1 christos /* Select frame FRAME. Also print the stack frame and show the source
2211 1.1 christos if this is the tui version. */
2212 1.1 christos static void
2213 1.1 christos select_and_print_frame (struct frame_info *frame)
2214 1.1 christos {
2215 1.1 christos select_frame (frame);
2216 1.1 christos if (frame)
2217 1.1 christos print_stack_frame (frame, 1, SRC_AND_LOC, 1);
2218 1.1 christos }
2219 1.1 christos
2220 1.1 christos /* Return the symbol-block in which the selected frame is executing.
2222 1.1 christos Can return zero under various legitimate circumstances.
2223 1.3 christos
2224 1.1 christos If ADDR_IN_BLOCK is non-zero, set *ADDR_IN_BLOCK to the relevant
2225 1.1 christos code address within the block returned. We use this to decide
2226 1.1 christos which macros are in scope. */
2227 1.1 christos
2228 1.1 christos const struct block *
2229 1.1 christos get_selected_block (CORE_ADDR *addr_in_block)
2230 1.1 christos {
2231 1.1 christos if (!has_stack_frames ())
2232 1.1 christos return 0;
2233 1.1 christos
2234 1.1 christos return get_frame_block (get_selected_frame (NULL), addr_in_block);
2235 1.1 christos }
2236 1.1 christos
2237 1.1 christos /* Find a frame a certain number of levels away from FRAME.
2238 1.1 christos LEVEL_OFFSET_PTR points to an int containing the number of levels.
2239 1.1 christos Positive means go to earlier frames (up); negative, the reverse.
2240 1.1 christos The int that contains the number of levels is counted toward
2241 1.1 christos zero as the frames for those levels are found.
2242 1.1 christos If the top or bottom frame is reached, that frame is returned,
2243 1.1 christos but the final value of *LEVEL_OFFSET_PTR is nonzero and indicates
2244 1.1 christos how much farther the original request asked to go. */
2245 1.1 christos
2246 1.1 christos struct frame_info *
2247 1.1 christos find_relative_frame (struct frame_info *frame, int *level_offset_ptr)
2248 1.1 christos {
2249 1.1 christos /* Going up is simple: just call get_prev_frame enough times or
2250 1.1 christos until the initial frame is reached. */
2251 1.1 christos while (*level_offset_ptr > 0)
2252 1.1 christos {
2253 1.1 christos struct frame_info *prev = get_prev_frame (frame);
2254 1.1 christos
2255 1.1 christos if (!prev)
2256 1.1 christos break;
2257 1.1 christos (*level_offset_ptr)--;
2258 1.1 christos frame = prev;
2259 1.1 christos }
2260 1.1 christos
2261 1.1 christos /* Going down is just as simple. */
2262 1.1 christos while (*level_offset_ptr < 0)
2263 1.1 christos {
2264 1.1 christos struct frame_info *next = get_next_frame (frame);
2265 1.1 christos
2266 1.1 christos if (!next)
2267 1.1 christos break;
2268 1.1 christos (*level_offset_ptr)++;
2269 1.1 christos frame = next;
2270 1.1 christos }
2271 1.1 christos
2272 1.1 christos return frame;
2273 1.1 christos }
2274 1.1 christos
2275 1.1 christos /* The "select_frame" command. With no argument this is a NOP.
2276 1.1 christos Select the frame at level LEVEL_EXP if it is a valid level.
2277 1.1 christos Otherwise, treat LEVEL_EXP as an address expression and select it.
2278 1.1 christos
2279 1.1 christos See parse_frame_specification for more info on proper frame
2280 1.1 christos expressions. */
2281 1.1 christos
2282 1.1 christos void
2283 1.1 christos select_frame_command (char *level_exp, int from_tty)
2284 1.1 christos {
2285 1.1 christos select_frame (parse_frame_specification_1 (level_exp, "No stack.", NULL));
2286 1.1 christos }
2287 1.1 christos
2288 1.1 christos /* The "frame" command. With no argument, print the selected frame
2289 1.1 christos briefly. With an argument, behave like select_frame and then print
2290 1.1 christos the selected frame. */
2291 1.1 christos
2292 1.1 christos static void
2293 1.1 christos frame_command (char *level_exp, int from_tty)
2294 1.1 christos {
2295 1.1 christos select_frame_command (level_exp, from_tty);
2296 1.1 christos print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC, 1);
2297 1.1 christos }
2298 1.1 christos
2299 1.1 christos /* The XDB Compatibility command to print the current frame. */
2300 1.1 christos
2301 1.1 christos static void
2302 1.1 christos current_frame_command (char *level_exp, int from_tty)
2303 1.1 christos {
2304 1.1 christos print_stack_frame (get_selected_frame (_("No stack.")), 1, SRC_AND_LOC, 1);
2305 1.1 christos }
2306 1.3 christos
2307 1.1 christos /* Select the frame up one or COUNT_EXP stack levels from the
2308 1.1 christos previously selected frame, and print it briefly. */
2309 1.1 christos
2310 1.1 christos static void
2311 1.1 christos up_silently_base (const char *count_exp)
2312 1.1 christos {
2313 1.1 christos struct frame_info *frame;
2314 1.1 christos int count = 1;
2315 1.1 christos
2316 1.1 christos if (count_exp)
2317 1.1 christos count = parse_and_eval_long (count_exp);
2318 1.1 christos
2319 1.1 christos frame = find_relative_frame (get_selected_frame ("No stack."), &count);
2320 1.1 christos if (count != 0 && count_exp == NULL)
2321 1.1 christos error (_("Initial frame selected; you cannot go up."));
2322 1.1 christos select_frame (frame);
2323 1.1 christos }
2324 1.1 christos
2325 1.1 christos static void
2326 1.1 christos up_silently_command (char *count_exp, int from_tty)
2327 1.1 christos {
2328 1.1 christos up_silently_base (count_exp);
2329 1.1 christos }
2330 1.1 christos
2331 1.1 christos static void
2332 1.1 christos up_command (char *count_exp, int from_tty)
2333 1.1 christos {
2334 1.1 christos up_silently_base (count_exp);
2335 1.1 christos print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC, 1);
2336 1.1 christos }
2337 1.3 christos
2338 1.1 christos /* Select the frame down one or COUNT_EXP stack levels from the previously
2339 1.1 christos selected frame, and print it briefly. */
2340 1.1 christos
2341 1.1 christos static void
2342 1.1 christos down_silently_base (const char *count_exp)
2343 1.1 christos {
2344 1.1 christos struct frame_info *frame;
2345 1.1 christos int count = -1;
2346 1.1 christos
2347 1.1 christos if (count_exp)
2348 1.1 christos count = -parse_and_eval_long (count_exp);
2349 1.1 christos
2350 1.1 christos frame = find_relative_frame (get_selected_frame ("No stack."), &count);
2351 1.1 christos if (count != 0 && count_exp == NULL)
2352 1.1 christos {
2353 1.1 christos /* We only do this if COUNT_EXP is not specified. That way
2354 1.1 christos "down" means to really go down (and let me know if that is
2355 1.1 christos impossible), but "down 9999" can be used to mean go all the
2356 1.1 christos way down without getting an error. */
2357 1.1 christos
2358 1.1 christos error (_("Bottom (innermost) frame selected; you cannot go down."));
2359 1.1 christos }
2360 1.1 christos
2361 1.1 christos select_frame (frame);
2362 1.1 christos }
2363 1.1 christos
2364 1.1 christos static void
2365 1.1 christos down_silently_command (char *count_exp, int from_tty)
2366 1.1 christos {
2367 1.1 christos down_silently_base (count_exp);
2368 1.1 christos }
2369 1.1 christos
2370 1.1 christos static void
2371 1.1 christos down_command (char *count_exp, int from_tty)
2372 1.1 christos {
2373 1.1 christos down_silently_base (count_exp);
2374 1.1 christos print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC, 1);
2375 1.1 christos }
2376 1.1 christos
2377 1.1 christos
2379 1.1 christos void
2380 1.1 christos return_command (char *retval_exp, int from_tty)
2381 1.1 christos {
2382 1.1 christos /* Initialize it just to avoid a GCC false warning. */
2383 1.1 christos enum return_value_convention rv_conv = RETURN_VALUE_STRUCT_CONVENTION;
2384 1.1 christos struct frame_info *thisframe;
2385 1.1 christos struct gdbarch *gdbarch;
2386 1.1 christos struct symbol *thisfun;
2387 1.1 christos struct value *return_value = NULL;
2388 1.1 christos struct value *function = NULL;
2389 1.1 christos const char *query_prefix = "";
2390 1.1 christos
2391 1.1 christos thisframe = get_selected_frame ("No selected frame.");
2392 1.1 christos thisfun = get_frame_function (thisframe);
2393 1.1 christos gdbarch = get_frame_arch (thisframe);
2394 1.1 christos
2395 1.1 christos if (get_frame_type (get_current_frame ()) == INLINE_FRAME)
2396 1.1 christos error (_("Can not force return from an inlined function."));
2397 1.1 christos
2398 1.1 christos /* Compute the return value. If the computation triggers an error,
2399 1.1 christos let it bail. If the return type can't be handled, set
2400 1.1 christos RETURN_VALUE to NULL, and QUERY_PREFIX to an informational
2401 1.1 christos message. */
2402 1.1 christos if (retval_exp)
2403 1.1 christos {
2404 1.1 christos struct expression *retval_expr = parse_expression (retval_exp);
2405 1.1 christos struct cleanup *old_chain = make_cleanup (xfree, retval_expr);
2406 1.1 christos struct type *return_type = NULL;
2407 1.1 christos
2408 1.1 christos /* Compute the return value. Should the computation fail, this
2409 1.1 christos call throws an error. */
2410 1.1 christos return_value = evaluate_expression (retval_expr);
2411 1.1 christos
2412 1.1 christos /* Cast return value to the return type of the function. Should
2413 1.1 christos the cast fail, this call throws an error. */
2414 1.1 christos if (thisfun != NULL)
2415 1.1 christos return_type = TYPE_TARGET_TYPE (SYMBOL_TYPE (thisfun));
2416 1.1 christos if (return_type == NULL)
2417 1.1 christos {
2418 1.1 christos if (retval_expr->elts[0].opcode != UNOP_CAST
2419 1.1 christos && retval_expr->elts[0].opcode != UNOP_CAST_TYPE)
2420 1.1 christos error (_("Return value type not available for selected "
2421 1.1 christos "stack frame.\n"
2422 1.1 christos "Please use an explicit cast of the value to return."));
2423 1.1 christos return_type = value_type (return_value);
2424 1.1 christos }
2425 1.1 christos do_cleanups (old_chain);
2426 1.1 christos CHECK_TYPEDEF (return_type);
2427 1.1 christos return_value = value_cast (return_type, return_value);
2428 1.1 christos
2429 1.1 christos /* Make sure the value is fully evaluated. It may live in the
2430 1.1 christos stack frame we're about to pop. */
2431 1.1 christos if (value_lazy (return_value))
2432 1.1 christos value_fetch_lazy (return_value);
2433 1.1 christos
2434 1.1 christos if (thisfun != NULL)
2435 1.1 christos function = read_var_value (thisfun, thisframe);
2436 1.1 christos
2437 1.1 christos rv_conv = RETURN_VALUE_REGISTER_CONVENTION;
2438 1.1 christos if (TYPE_CODE (return_type) == TYPE_CODE_VOID)
2439 1.1 christos /* If the return-type is "void", don't try to find the
2440 1.1 christos return-value's location. However, do still evaluate the
2441 1.1 christos return expression so that, even when the expression result
2442 1.1 christos is discarded, side effects such as "return i++" still
2443 1.1 christos occur. */
2444 1.1 christos return_value = NULL;
2445 1.1 christos else if (thisfun != NULL)
2446 1.1 christos {
2447 1.1 christos rv_conv = struct_return_convention (gdbarch, function, return_type);
2448 1.1 christos if (rv_conv == RETURN_VALUE_STRUCT_CONVENTION
2449 1.1 christos || rv_conv == RETURN_VALUE_ABI_RETURNS_ADDRESS)
2450 1.1 christos {
2451 1.1 christos query_prefix = "The location at which to store the "
2452 1.1 christos "function's return value is unknown.\n"
2453 1.1 christos "If you continue, the return value "
2454 1.1 christos "that you specified will be ignored.\n";
2455 1.1 christos return_value = NULL;
2456 1.1 christos }
2457 1.1 christos }
2458 1.1 christos }
2459 1.1 christos
2460 1.1 christos /* Does an interactive user really want to do this? Include
2461 1.1 christos information, such as how well GDB can handle the return value, in
2462 1.1 christos the query message. */
2463 1.1 christos if (from_tty)
2464 1.1 christos {
2465 1.1 christos int confirmed;
2466 1.1 christos
2467 1.1 christos if (thisfun == NULL)
2468 1.1 christos confirmed = query (_("%sMake selected stack frame return now? "),
2469 1.1 christos query_prefix);
2470 1.1 christos else
2471 1.1 christos confirmed = query (_("%sMake %s return now? "), query_prefix,
2472 1.1 christos SYMBOL_PRINT_NAME (thisfun));
2473 1.1 christos if (!confirmed)
2474 1.1 christos error (_("Not confirmed"));
2475 1.1 christos }
2476 1.1 christos
2477 1.1 christos /* Discard the selected frame and all frames inner-to it. */
2478 1.1 christos frame_pop (get_selected_frame (NULL));
2479 1.1 christos
2480 1.1 christos /* Store RETURN_VALUE in the just-returned register set. */
2481 1.1 christos if (return_value != NULL)
2482 1.1 christos {
2483 1.1 christos struct type *return_type = value_type (return_value);
2484 1.1 christos struct gdbarch *gdbarch = get_regcache_arch (get_current_regcache ());
2485 1.1 christos
2486 1.1 christos gdb_assert (rv_conv != RETURN_VALUE_STRUCT_CONVENTION
2487 1.1 christos && rv_conv != RETURN_VALUE_ABI_RETURNS_ADDRESS);
2488 1.1 christos gdbarch_return_value (gdbarch, function, return_type,
2489 1.1 christos get_current_regcache (), NULL /*read*/,
2490 1.1 christos value_contents (return_value) /*write*/);
2491 1.1 christos }
2492 1.1 christos
2493 1.1 christos /* If we are at the end of a call dummy now, pop the dummy frame
2494 1.1 christos too. */
2495 1.1 christos if (get_frame_type (get_current_frame ()) == DUMMY_FRAME)
2496 1.1 christos frame_pop (get_current_frame ());
2497 1.1 christos
2498 1.1 christos /* If interactive, print the frame that is now current. */
2499 1.1 christos if (from_tty)
2500 1.1 christos frame_command ("0", 1);
2501 1.1 christos else
2502 1.1 christos select_frame_command ("0", 0);
2503 1.1 christos }
2504 1.1 christos
2505 1.1 christos /* Sets the scope to input function name, provided that the function
2506 1.1 christos is within the current stack frame. */
2507 1.1 christos
2508 1.1 christos struct function_bounds
2509 1.1 christos {
2510 1.1 christos CORE_ADDR low, high;
2511 1.1 christos };
2512 1.1 christos
2513 1.1 christos static void
2514 1.1 christos func_command (char *arg, int from_tty)
2515 1.1 christos {
2516 1.1 christos struct frame_info *frame;
2517 1.1 christos int found = 0;
2518 1.1 christos struct symtabs_and_lines sals;
2519 1.1 christos int i;
2520 1.1 christos int level = 1;
2521 1.1 christos struct function_bounds *func_bounds = NULL;
2522 1.1 christos struct cleanup *cleanups;
2523 1.1 christos
2524 1.1 christos if (arg != NULL)
2525 1.1 christos return;
2526 1.1 christos
2527 1.1 christos frame = parse_frame_specification ("0");
2528 1.1 christos sals = decode_line_with_current_source (arg, DECODE_LINE_FUNFIRSTLINE);
2529 1.1 christos cleanups = make_cleanup (xfree, sals.sals);
2530 1.1 christos func_bounds = (struct function_bounds *) xmalloc (
2531 1.1 christos sizeof (struct function_bounds) * sals.nelts);
2532 1.1 christos make_cleanup (xfree, func_bounds);
2533 1.1 christos for (i = 0; (i < sals.nelts && !found); i++)
2534 1.1 christos {
2535 1.1 christos if (sals.sals[i].pspace != current_program_space)
2536 1.1 christos func_bounds[i].low = func_bounds[i].high = 0;
2537 1.1 christos else if (sals.sals[i].pc == 0
2538 1.1 christos || find_pc_partial_function (sals.sals[i].pc, NULL,
2539 1.1 christos &func_bounds[i].low,
2540 1.1 christos &func_bounds[i].high) == 0)
2541 1.1 christos {
2542 1.1 christos func_bounds[i].low = func_bounds[i].high = 0;
2543 1.1 christos }
2544 1.1 christos }
2545 1.1 christos
2546 1.1 christos do
2547 1.1 christos {
2548 1.1 christos for (i = 0; (i < sals.nelts && !found); i++)
2549 1.1 christos found = (get_frame_pc (frame) >= func_bounds[i].low
2550 1.1 christos && get_frame_pc (frame) < func_bounds[i].high);
2551 1.1 christos if (!found)
2552 1.1 christos {
2553 1.1 christos level = 1;
2554 1.1 christos frame = find_relative_frame (frame, &level);
2555 1.1 christos }
2556 1.1 christos }
2557 1.1 christos while (!found && level == 0);
2558 1.1 christos
2559 1.1 christos do_cleanups (cleanups);
2560 1.1 christos
2561 1.1 christos if (!found)
2562 1.1 christos printf_filtered (_("'%s' not within current stack frame.\n"), arg);
2563 1.1 christos else if (frame != get_selected_frame (NULL))
2564 1.1 christos select_and_print_frame (frame);
2565 1.1 christos }
2566 1.1 christos
2567 1.1 christos /* Gets the language of the current frame. */
2568 1.1 christos
2569 1.1 christos enum language
2570 1.1 christos get_frame_language (void)
2571 1.1 christos {
2572 1.1 christos struct frame_info *frame = deprecated_safe_get_selected_frame ();
2573 1.1 christos
2574 1.1 christos if (frame)
2575 1.1 christos {
2576 1.1 christos volatile struct gdb_exception ex;
2577 1.1 christos CORE_ADDR pc = 0;
2578 1.1 christos
2579 1.1 christos /* We determine the current frame language by looking up its
2580 1.1 christos associated symtab. To retrieve this symtab, we use the frame
2581 1.1 christos PC. However we cannot use the frame PC as is, because it
2582 1.1 christos usually points to the instruction following the "call", which
2583 1.1 christos is sometimes the first instruction of another function. So
2584 1.1 christos we rely on get_frame_address_in_block(), it provides us with
2585 1.1 christos a PC that is guaranteed to be inside the frame's code
2586 1.1 christos block. */
2587 1.1 christos
2588 1.1 christos TRY_CATCH (ex, RETURN_MASK_ERROR)
2589 1.1 christos {
2590 1.1 christos pc = get_frame_address_in_block (frame);
2591 1.1 christos }
2592 1.1 christos if (ex.reason < 0)
2593 1.3 christos {
2594 1.3 christos if (ex.error != NOT_AVAILABLE_ERROR)
2595 1.3 christos throw_exception (ex);
2596 1.3 christos }
2597 1.1 christos else
2598 1.1 christos {
2599 1.1 christos struct compunit_symtab *cust = find_pc_compunit_symtab (pc);
2600 1.1 christos
2601 1.1 christos if (cust != NULL)
2602 1.1 christos return compunit_language (cust);
2603 1.1 christos }
2604 1.1 christos }
2605 1.1 christos
2606 1.1 christos return language_unknown;
2607 1.1 christos }
2608 1.1 christos
2609 1.1 christos
2611 1.1 christos /* Provide a prototype to silence -Wmissing-prototypes. */
2612 1.1 christos void _initialize_stack (void);
2613 1.1 christos
2614 1.1 christos void
2615 1.1 christos _initialize_stack (void)
2616 1.1 christos {
2617 1.1 christos add_com ("return", class_stack, return_command, _("\
2618 1.1 christos Make selected stack frame return to its caller.\n\
2619 1.1 christos Control remains in the debugger, but when you continue\n\
2620 1.1 christos execution will resume in the frame above the one now selected.\n\
2621 1.1 christos If an argument is given, it is an expression for the value to return."));
2622 1.1 christos
2623 1.1 christos add_com ("up", class_stack, up_command, _("\
2624 1.1 christos Select and print stack frame that called this one.\n\
2625 1.1 christos An argument says how many frames up to go."));
2626 1.1 christos add_com ("up-silently", class_support, up_silently_command, _("\
2627 1.1 christos Same as the `up' command, but does not print anything.\n\
2628 1.1 christos This is useful in command scripts."));
2629 1.1 christos
2630 1.1 christos add_com ("down", class_stack, down_command, _("\
2631 1.1 christos Select and print stack frame called by this one.\n\
2632 1.1 christos An argument says how many frames down to go."));
2633 1.1 christos add_com_alias ("do", "down", class_stack, 1);
2634 1.1 christos add_com_alias ("dow", "down", class_stack, 1);
2635 1.1 christos add_com ("down-silently", class_support, down_silently_command, _("\
2636 1.1 christos Same as the `down' command, but does not print anything.\n\
2637 1.1 christos This is useful in command scripts."));
2638 1.1 christos
2639 1.1 christos add_com ("frame", class_stack, frame_command, _("\
2640 1.1 christos Select and print a stack frame.\nWith no argument, \
2641 1.1 christos print the selected stack frame. (See also \"info frame\").\n\
2642 1.1 christos An argument specifies the frame to select.\n\
2643 1.1 christos It can be a stack frame number or the address of the frame.\n\
2644 1.1 christos With argument, nothing is printed if input is coming from\n\
2645 1.1 christos a command file or a user-defined command."));
2646 1.1 christos
2647 1.1 christos add_com_alias ("f", "frame", class_stack, 1);
2648 1.1 christos
2649 1.1 christos if (xdb_commands)
2650 1.1 christos {
2651 1.1 christos add_com ("L", class_stack, current_frame_command,
2652 1.1 christos _("Print the current stack frame.\n"));
2653 1.1 christos add_com_alias ("V", "frame", class_stack, 1);
2654 1.1 christos }
2655 1.1 christos add_com ("select-frame", class_stack, select_frame_command, _("\
2656 1.1 christos Select a stack frame without printing anything.\n\
2657 1.1 christos An argument specifies the frame to select.\n\
2658 1.1 christos It can be a stack frame number or the address of the frame.\n"));
2659 1.1 christos
2660 1.1 christos add_com ("backtrace", class_stack, backtrace_command, _("\
2661 1.1 christos Print backtrace of all stack frames, or innermost COUNT frames.\n\
2662 1.1 christos With a negative argument, print outermost -COUNT frames.\nUse of the \
2663 1.1 christos 'full' qualifier also prints the values of the local variables.\n\
2664 1.1 christos Use of the 'no-filters' qualifier prohibits frame filters from executing\n\
2665 1.1 christos on this backtrace.\n"));
2666 1.1 christos add_com_alias ("bt", "backtrace", class_stack, 0);
2667 1.1 christos if (xdb_commands)
2668 1.1 christos {
2669 1.1 christos add_com_alias ("t", "backtrace", class_stack, 0);
2670 1.1 christos add_com ("T", class_stack, backtrace_full_command, _("\
2671 1.1 christos Print backtrace of all stack frames, or innermost COUNT frames\n\
2672 1.1 christos and the values of the local variables.\n\
2673 1.1 christos With a negative argument, print outermost -COUNT frames.\n\
2674 1.1 christos Usage: T <count>\n"));
2675 1.1 christos }
2676 1.1 christos
2677 1.1 christos add_com_alias ("where", "backtrace", class_alias, 0);
2678 1.1 christos add_info ("stack", backtrace_command,
2679 1.1 christos _("Backtrace of the stack, or innermost COUNT frames."));
2680 1.1 christos add_info_alias ("s", "stack", 1);
2681 1.1 christos add_info ("frame", frame_info,
2682 1.1 christos _("All about selected stack frame, or frame at ADDR."));
2683 1.1 christos add_info_alias ("f", "frame", 1);
2684 1.1 christos add_info ("locals", locals_info,
2685 1.1 christos _("Local variables of current stack frame."));
2686 1.1 christos add_info ("args", args_info,
2687 1.1 christos _("Argument variables of current stack frame."));
2688 1.1 christos if (xdb_commands)
2689 1.1 christos add_com ("l", class_info, args_plus_locals_info,
2690 1.1 christos _("Argument and local variables of current stack frame."));
2691 1.1 christos
2692 1.1 christos if (dbx_commands)
2693 1.1 christos add_com ("func", class_stack, func_command, _("\
2694 1.1 christos Select the stack frame that contains <func>.\n\
2695 1.1 christos Usage: func <name>\n"));
2696 1.1 christos
2697 1.1 christos add_setshow_enum_cmd ("frame-arguments", class_stack,
2698 1.1 christos print_frame_arguments_choices, &print_frame_arguments,
2699 1.1 christos _("Set printing of non-scalar frame arguments"),
2700 1.1 christos _("Show printing of non-scalar frame arguments"),
2701 1.1 christos NULL, NULL, NULL, &setprintlist, &showprintlist);
2702 1.1 christos
2703 1.1 christos add_setshow_boolean_cmd ("frame-arguments", no_class,
2704 1.1 christos &print_raw_frame_arguments, _("\
2705 1.1 christos Set whether to print frame arguments in raw form."), _("\
2706 1.1 christos Show whether to print frame arguments in raw form."), _("\
2707 1.1 christos If set, frame arguments are printed in raw form, bypassing any\n\
2708 1.1 christos pretty-printers for that value."),
2709 1.1 christos NULL, NULL,
2710 1.1 christos &setprintrawlist, &showprintrawlist);
2711 1.1 christos
2712 1.1 christos add_setshow_auto_boolean_cmd ("disassemble-next-line", class_stack,
2713 1.1 christos &disassemble_next_line, _("\
2714 1.1 christos Set whether to disassemble next source line or insn when execution stops."),
2715 1.1 christos _("\
2716 1.1 christos Show whether to disassemble next source line or insn when execution stops."),
2717 1.1 christos _("\
2718 1.1 christos If ON, GDB will display disassembly of the next source line, in addition\n\
2719 1.1 christos to displaying the source line itself. If the next source line cannot\n\
2720 1.1 christos be displayed (e.g., source is unavailable or there's no line info), GDB\n\
2721 1.1 christos will display disassembly of next instruction instead of showing the\n\
2722 1.1 christos source line.\n\
2723 1.1 christos If AUTO, display disassembly of next instruction only if the source line\n\
2724 1.1 christos cannot be displayed.\n\
2725 1.1 christos If OFF (which is the default), never display the disassembly of the next\n\
2726 1.1 christos source line."),
2727 1.1 christos NULL,
2728 1.1 christos show_disassemble_next_line,
2729 1.1 christos &setlist, &showlist);
2730 1.1 christos disassemble_next_line = AUTO_BOOLEAN_FALSE;
2731 1.1 christos
2732 1.1 christos add_setshow_enum_cmd ("entry-values", class_stack,
2733 1.1 christos print_entry_values_choices, &print_entry_values,
2734 1.1 christos _("Set printing of function arguments at function "
2735 1.1 christos "entry"),
2736 1.1 christos _("Show printing of function arguments at function "
2737 1.1 christos "entry"),
2738 _("\
2739 GDB can sometimes determine the values of function arguments at entry,\n\
2740 in addition to their current values. This option tells GDB whether\n\
2741 to print the current value, the value at entry (marked as val@entry),\n\
2742 or both. Note that one or both of these values may be <optimized out>."),
2743 NULL, NULL, &setprintlist, &showprintlist);
2744 }
2745