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