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