diff options
author | Jason Molenda <jsm@bugshack.cygnus.com> | 1999-07-07 20:19:36 +0000 |
---|---|---|
committer | Jason Molenda <jsm@bugshack.cygnus.com> | 1999-07-07 20:19:36 +0000 |
commit | a87029ef15e59af2cc0b27cb4024b0db313fa88e (patch) | |
tree | a5cc2d6f8ebdbbd957642e72e0e88cc5fe5cd2e1 /gdb/stack.c | |
parent | 528824cc847e5a13831dd41e5aacb34679143c94 (diff) | |
download | gdb-a87029ef15e59af2cc0b27cb4024b0db313fa88e.tar.gz |
import gdb-1999-07-07 post reformat
Diffstat (limited to 'gdb/stack.c')
-rw-r--r-- | gdb/stack.c | 514 |
1 files changed, 261 insertions, 253 deletions
diff --git a/gdb/stack.c b/gdb/stack.c index bae471192f9..30486be7c92 100644 --- a/gdb/stack.c +++ b/gdb/stack.c @@ -2,21 +2,22 @@ Copyright 1986, 87, 89, 91, 92, 93, 94, 95, 96, 98, 1999 Free Software Foundation, Inc. -This file is part of GDB. + This file is part of GDB. -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ #include <ctype.h> #include "defs.h" @@ -92,7 +93,7 @@ static int print_block_frame_locals PARAMS ((struct block *, GDB_FILE *)); static void print_frame_info_base PARAMS ((struct frame_info *, int, int, int)); - + static void print_stack_frame_base PARAMS ((struct frame_info *, int, int)); static void backtrace_command PARAMS ((char *, int)); @@ -123,14 +124,15 @@ int selected_frame_level; cases and in a slightly different syntax. */ int annotation_level = 0; - -struct print_stack_frame_args { - struct frame_info *fi; - int level; - int source; - int args; -}; + +struct print_stack_frame_args + { + struct frame_info *fi; + int level; + int source; + int args; + }; static int print_stack_frame_base_stub PARAMS ((char *)); @@ -141,7 +143,7 @@ static int show_and_print_stack_frame_stub (args) void *args; { - struct print_stack_frame_args *p = (struct print_stack_frame_args *)args; + struct print_stack_frame_args *p = (struct print_stack_frame_args *) args; /* Reversed order of these so tuiDo() doesn't occur * in the middle of "Breakpoint 1 ... [location]" printing = RT @@ -160,7 +162,7 @@ static int print_stack_frame_stub (args) void *args; { - struct print_stack_frame_args *p = (struct print_stack_frame_args *)args; + struct print_stack_frame_args *p = (struct print_stack_frame_args *) args; if (tui_version) print_frame_info (p->fi, p->level, p->source, p->args); @@ -178,7 +180,7 @@ static int print_stack_frame_base_stub (args) char *args; { - struct print_stack_frame_args *p = (struct print_stack_frame_args *)args; + struct print_stack_frame_args *p = (struct print_stack_frame_args *) args; print_frame_info_base (p->fi, p->level, p->source, p->args); return 0; @@ -191,7 +193,7 @@ static int print_only_stack_frame_stub (args) void *args; { - struct print_stack_frame_args *p = (struct print_stack_frame_args *)args; + struct print_stack_frame_args *p = (struct print_stack_frame_args *) args; print_frame_info_base (p->fi, p->level, p->source, p->args); return 0; @@ -273,7 +275,7 @@ print_stack_frame (fi, level, source) args.source = source; args.args = 1; - catch_errors (print_stack_frame_stub, (char *)&args, "", RETURN_MASK_ALL); + catch_errors (print_stack_frame_stub, (char *) &args, "", RETURN_MASK_ALL); } /* Print a stack frame briefly. FRAME_INFI should be the frame info @@ -302,7 +304,8 @@ print_only_stack_frame (fi, level, source) catch_errors (print_only_stack_frame_stub, &args, "", RETURN_MASK_ALL); } -struct print_args_args { +struct print_args_args +{ struct symbol *func; struct frame_info *fi; GDB_FILE *stream; @@ -317,7 +320,7 @@ print_args_stub (args) PTR args; { int numargs; - struct print_args_args *p = (struct print_args_args *)args; + struct print_args_args *p = (struct print_args_args *) args; numargs = FRAME_NUM_ARGS (p->fi); print_frame_args (p->func, p->fi, numargs, p->stream); @@ -353,8 +356,8 @@ print_frame_info_base (fi, level, source, args) /* On the 68k, this spends too much time in m68k_find_saved_regs. */ /* Get the value of SP_REGNUM relative to the frame. */ - get_saved_register (buf, (int *)NULL, (CORE_ADDR *)NULL, - FRAME_INFO_ID (fi), SP_REGNUM, (enum lval_type *)NULL); + get_saved_register (buf, (int *) NULL, (CORE_ADDR *) NULL, + FRAME_INFO_ID (fi), SP_REGNUM, (enum lval_type *) NULL); sp = extract_address (buf, REGISTER_RAW_SIZE (SP_REGNUM)); /* This is not a perfect test, because if a function alloca's some @@ -369,7 +372,7 @@ print_frame_info_base (fi, level, source, args) annotate_frame_begin (level == -1 ? 0 : level, fi->pc); /* Do this regardless of SOURCE because we don't have any source - to list for this frame. */ + to list for this frame. */ if (level >= 0) printf_filtered ("#%-2d ", level); annotate_function_call (); @@ -382,7 +385,7 @@ print_frame_info_base (fi, level, source, args) annotate_frame_begin (level == -1 ? 0 : level, fi->pc); /* Do this regardless of SOURCE because we don't have any source - to list for this frame. */ + to list for this frame. */ if (level >= 0) printf_filtered ("#%-2d ", level); annotate_signal_handler_caller (); @@ -407,24 +410,24 @@ print_frame_info_base (fi, level, source, args) if (func) { /* In certain pathological cases, the symtabs give the wrong - function (when we are in the first function in a file which - is compiled without debugging symbols, the previous function - is compiled with debugging symbols, and the "foo.o" symbol - that is supposed to tell us where the file with debugging symbols - ends has been truncated by ar because it is longer than 15 - characters). This also occurs if the user uses asm() to create - a function but not stabs for it (in a file compiled -g). - - So look in the minimal symbol tables as well, and if it comes - up with a larger address for the function use that instead. - I don't think this can ever cause any problems; there shouldn't - be any minimal symbols in the middle of a function; if this is - ever changed many parts of GDB will need to be changed (and we'll - create a find_pc_minimal_function or some such). */ + function (when we are in the first function in a file which + is compiled without debugging symbols, the previous function + is compiled with debugging symbols, and the "foo.o" symbol + that is supposed to tell us where the file with debugging symbols + ends has been truncated by ar because it is longer than 15 + characters). This also occurs if the user uses asm() to create + a function but not stabs for it (in a file compiled -g). + + So look in the minimal symbol tables as well, and if it comes + up with a larger address for the function use that instead. + I don't think this can ever cause any problems; there shouldn't + be any minimal symbols in the middle of a function; if this is + ever changed many parts of GDB will need to be changed (and we'll + create a find_pc_minimal_function or some such). */ struct minimal_symbol *msymbol = lookup_minimal_symbol_by_pc (fi->pc); if (msymbol != NULL - && (SYMBOL_VALUE_ADDRESS (msymbol) + && (SYMBOL_VALUE_ADDRESS (msymbol) > BLOCK_START (SYMBOL_BLOCK_VALUE (func)))) { #if 0 @@ -443,31 +446,32 @@ print_frame_info_base (fi, level, source, args) } else { - /* I'd like to use SYMBOL_SOURCE_NAME() here, to display - * the demangled name that we already have stored in - * the symbol table, but we stored a version with - * DMGL_PARAMS turned on, and here we don't want - * to display parameters. So call the demangler again, - * with DMGL_ANSI only. RT - * (Yes, I know that printf_symbol_filtered() will - * again try to demangle the name on the fly, but - * the issue is that if cplus_demangle() fails here, - * it'll fail there too. So we want to catch the failure - * ("demangled==NULL" case below) here, while we still - * have our hands on the function symbol.) - */ - char * demangled; + /* I'd like to use SYMBOL_SOURCE_NAME() here, to display + * the demangled name that we already have stored in + * the symbol table, but we stored a version with + * DMGL_PARAMS turned on, and here we don't want + * to display parameters. So call the demangler again, + * with DMGL_ANSI only. RT + * (Yes, I know that printf_symbol_filtered() will + * again try to demangle the name on the fly, but + * the issue is that if cplus_demangle() fails here, + * it'll fail there too. So we want to catch the failure + * ("demangled==NULL" case below) here, while we still + * have our hands on the function symbol.) + */ + char *demangled; funname = SYMBOL_NAME (func); funlang = SYMBOL_LANGUAGE (func); - if (funlang == language_cplus) { - demangled = cplus_demangle (funname, DMGL_ANSI); - if (demangled == NULL) - /* If the demangler fails, try the demangled name - * from the symbol table. This'll have parameters, - * but that's preferable to diplaying a mangled name. - */ - funname = SYMBOL_SOURCE_NAME (func); - } + if (funlang == language_cplus) + { + demangled = cplus_demangle (funname, DMGL_ANSI); + if (demangled == NULL) + /* If the demangler fails, try the demangled name + * from the symbol table. This'll have parameters, + * but that's preferable to diplaying a mangled name. + */ + funname = SYMBOL_SOURCE_NAME (func); + } } } else @@ -513,7 +517,7 @@ print_frame_info_base (fi, level, source, args) if (sal.symtab && sal.symtab->filename) { annotate_frame_source_begin (); - wrap_here (" "); + wrap_here (" "); printf_filtered (" at "); annotate_frame_source_file (); printf_filtered ("%s", sal.symtab->filename); @@ -525,9 +529,9 @@ print_frame_info_base (fi, level, source, args) } #ifdef PC_LOAD_SEGMENT - /* If we couldn't print out function name but if can figure out what - load segment this pc value is from, at least print out some info - about its load segment. */ + /* If we couldn't print out function name but if can figure out what + load segment this pc value is from, at least print out some info + about its load segment. */ if (!funname) { annotate_frame_where (); @@ -569,7 +573,7 @@ print_frame_info_base (fi, level, source, args) else if (!tui_version) print_source_lines (sal.symtab, sal.line, sal.line + 1, 0); } - current_source_line = max (sal.line - lines_to_list/2, 1); + current_source_line = max (sal.line - lines_to_list / 2, 1); } if (source != 0) set_default_breakpoint (1, fi->pc, sal.symtab, sal.line); @@ -582,9 +586,9 @@ print_frame_info_base (fi, level, source, args) #if 0 void -stack_publish_stopped_with_no_frame() +stack_publish_stopped_with_no_frame () { - TUIDO(((TuiOpaqueFuncPtr)tuiUpdateOnEnd)); + TUIDO (((TuiOpaqueFuncPtr) tuiUpdateOnEnd)); return; } @@ -593,35 +597,35 @@ stack_publish_stopped_with_no_frame() /* Show or print the frame info. If this is the tui, it will be shown in the source display */ void -print_frame_info(fi, level, source, args) +print_frame_info (fi, level, source, args) struct frame_info *fi; register int level; int source; int args; { if (!tui_version) - print_frame_info_base(fi, level, source, args); + print_frame_info_base (fi, level, source, args); else - { - if (fi && (frame_in_dummy(fi) || fi->signal_handler_caller)) - print_frame_info_base(fi, level, source, args); - else - { - TUIDO(((TuiOpaqueFuncPtr)tui_vShowFrameInfo, fi)); - } - } + { + if (fi && (frame_in_dummy (fi) || fi->signal_handler_caller)) + print_frame_info_base (fi, level, source, args); + else + { + TUIDO (((TuiOpaqueFuncPtr) tui_vShowFrameInfo, fi)); + } + } } /* Show the frame info. If this is the tui, it will be shown in the source display otherwise, nothing is done */ void -show_stack_frame(fi) +show_stack_frame (fi) struct frame_info *fi; { - TUIDO(((TuiOpaqueFuncPtr)tui_vShowFrameInfo, fi)); + TUIDO (((TuiOpaqueFuncPtr) tui_vShowFrameInfo, fi)); } - + /* Read a frame specification in whatever the appropriate format is. Call error() if the specification is in any way invalid (i.e. this function never returns NULL). */ @@ -633,22 +637,23 @@ parse_frame_specification (frame_exp) int numargs = 0; #define MAXARGS 4 CORE_ADDR args[MAXARGS]; - + if (frame_exp) { char *addr_string, *p; struct cleanup *tmp_cleanup; - while (*frame_exp == ' ') frame_exp++; + while (*frame_exp == ' ') + frame_exp++; while (*frame_exp) { if (numargs > MAXARGS) error ("Too many args in frame specification"); /* Parse an argument. */ - for (p = frame_exp; *p && *p != ' '; p++) + for (p = frame_exp; *p && *p != ' '; p++) ; - addr_string = savestring(frame_exp, p - frame_exp); + addr_string = savestring (frame_exp, p - frame_exp); { tmp_cleanup = make_cleanup (free, addr_string); @@ -657,7 +662,8 @@ parse_frame_specification (frame_exp) } /* Skip spaces, move to possible next arg. */ - while (*p == ' ') p++; + while (*p == ' ') + p++; frame_exp = p; } } @@ -673,7 +679,7 @@ parse_frame_specification (frame_exp) { int level = args[0]; struct frame_info *fid = - find_relative_frame (get_current_frame (), &level); + find_relative_frame (get_current_frame (), &level); struct frame_info *tfid; if (level == 0) @@ -708,17 +714,17 @@ parse_frame_specification (frame_exp) while ((tfid = get_prev_frame (fid)) && (tfid->frame == args[0])) fid = tfid; - + /* We couldn't identify the frame as an existing frame, but perhaps we can create one with a single argument. */ } - default: + default: #ifdef SETUP_ARBITRARY_FRAME return SETUP_ARBITRARY_FRAME (numargs, args); #else /* Usual case. Do it here rather than have everyone supply - a SETUP_ARBITRARY_FRAME that does this. */ + a SETUP_ARBITRARY_FRAME that does this. */ if (numargs == 1) return create_new_frame (args[0], 0); error ("Too many args in frame specification"); @@ -767,7 +773,7 @@ frame_info (addr_exp, from_tty) && !fi->next->signal_handler_caller && !frame_in_dummy (fi->next)); func = get_frame_function (fi); - s = find_pc_symtab(fi->pc); + s = find_pc_symtab (fi->pc); if (func) { /* I'd like to use SYMBOL_SOURCE_NAME() here, to display @@ -783,19 +789,19 @@ frame_info (addr_exp, from_tty) * ("demangled==NULL" case below) here, while we still * have our hands on the function symbol.) */ - char * demangled; - funname = SYMBOL_NAME (func); - funlang = SYMBOL_LANGUAGE (func); - if (funlang == language_cplus) - { - demangled = cplus_demangle (funname, DMGL_ANSI); - /* If the demangler fails, try the demangled name - * from the symbol table. This'll have parameters, - * but that's preferable to diplaying a mangled name. - */ - if (demangled == NULL) - funname = SYMBOL_SOURCE_NAME (func); - } + char *demangled; + funname = SYMBOL_NAME (func); + funlang = SYMBOL_LANGUAGE (func); + if (funlang == language_cplus) + { + demangled = cplus_demangle (funname, DMGL_ANSI); + /* If the demangler fails, try the demangled name + * from the symbol table. This'll have parameters, + * but that's preferable to diplaying a mangled name. + */ + if (demangled == NULL) + funname = SYMBOL_SOURCE_NAME (func); + } } else { @@ -913,7 +919,7 @@ frame_info (addr_exp, from_tty) if (fi->saved_regs != NULL) { /* The sp is special; what's returned isn't the save address, but - actually the value of the previous frame's sp. */ + actually the value of the previous frame's sp. */ printf_filtered (" Previous frame's sp is "); print_address_numeric (fi->saved_regs[SP_REGNUM], 1, gdb_stdout); printf_filtered ("\n"); @@ -937,9 +943,9 @@ frame_info (addr_exp, from_tty) else { /* We could get some information about saved registers by - calling get_saved_register on each register. Which info goes - with which frame is necessarily lost, however, and I suspect - that the users don't care whether they get the info. */ + calling get_saved_register on each register. Which info goes + with which frame is necessarily lost, however, and I suspect + that the users don't care whether they get the info. */ puts_filtered ("\n"); } } @@ -1014,7 +1020,7 @@ backtrace_command_1 (count_exp, show_locals, from_tty) QUIT; current = get_prev_frame (current); } - + /* Will stop when CURRENT reaches the top of the stack. TRAILING will be COUNT below it. */ while (current) @@ -1024,7 +1030,7 @@ backtrace_command_1 (count_exp, show_locals, from_tty) current = get_prev_frame (current); trailing_level++; } - + count = -1; } } @@ -1034,12 +1040,12 @@ backtrace_command_1 (count_exp, show_locals, from_tty) if (info_verbose) { struct partial_symtab *ps; - + /* Read in symbols for all of the frames. Need to do this in - a separate pass so that "Reading in symbols for xxx" messages - don't screw up the appearance of the backtrace. Also - if people have strong opinions against reading symbols for - backtrace this may have to be an option. */ + a separate pass so that "Reading in symbols for xxx" messages + don't screw up the appearance of the backtrace. Also + if people have strong opinions against reading symbols for + backtrace this may have to be an option. */ i = count; for (fi = trailing; fi != NULL && i--; @@ -1059,12 +1065,12 @@ backtrace_command_1 (count_exp, show_locals, from_tty) QUIT; /* Don't use print_stack_frame; if an error() occurs it probably - means further attempts to backtrace would fail (on the other - hand, perhaps the code does or could be fixed to make sure - the frame->prev field gets set to NULL in that case). */ + means further attempts to backtrace would fail (on the other + hand, perhaps the code does or could be fixed to make sure + the frame->prev field gets set to NULL in that case). */ print_frame_info_base (fi, trailing_level + i, 0, 1); if (show_locals) - print_frame_local_vars(fi, 1, gdb_stdout); + print_frame_local_vars (fi, 1, gdb_stdout); } /* If we've stopped before the end, mention that. */ @@ -1077,66 +1083,66 @@ backtrace_command (arg, from_tty) char *arg; int from_tty; { - struct cleanup *old_chain = (struct cleanup *)NULL; - char **argv = (char **)NULL; - int argIndicatingFullTrace = (-1), totArgLen = 0, argc = 0; - char *argPtr = arg; + struct cleanup *old_chain = (struct cleanup *) NULL; + char **argv = (char **) NULL; + int argIndicatingFullTrace = (-1), totArgLen = 0, argc = 0; + char *argPtr = arg; - if (arg != (char *)NULL) + if (arg != (char *) NULL) { int i; - argv = buildargv(arg); + argv = buildargv (arg); old_chain = make_cleanup_freeargv (argv); argc = 0; - for (i = 0; (argv[i] != (char *)NULL); i++) - { - int j; - - for (j = 0; (j < strlen(argv[i])); j++) - argv[i][j] = tolower(argv[i][j]); - - if (argIndicatingFullTrace < 0 && subset_compare (argv[i], "full")) - argIndicatingFullTrace = argc; - else - { - argc++; - totArgLen += strlen(argv[i]); - } - } + for (i = 0; (argv[i] != (char *) NULL); i++) + { + int j; + + for (j = 0; (j < strlen (argv[i])); j++) + argv[i][j] = tolower (argv[i][j]); + + if (argIndicatingFullTrace < 0 && subset_compare (argv[i], "full")) + argIndicatingFullTrace = argc; + else + { + argc++; + totArgLen += strlen (argv[i]); + } + } totArgLen += argc; if (argIndicatingFullTrace >= 0) - { - if (totArgLen > 0) - { - argPtr = (char *)xmalloc(totArgLen + 1); - if (!argPtr) - nomem(0); - else - { - memset(argPtr, 0, totArgLen + 1); - for (i = 0; (i < (argc + 1)); i++) - { - if (i != argIndicatingFullTrace) - { - strcat(argPtr, argv[i]); - strcat(argPtr, " "); - } - } - } - } - else - argPtr = (char *)NULL; - } + { + if (totArgLen > 0) + { + argPtr = (char *) xmalloc (totArgLen + 1); + if (!argPtr) + nomem (0); + else + { + memset (argPtr, 0, totArgLen + 1); + for (i = 0; (i < (argc + 1)); i++) + { + if (i != argIndicatingFullTrace) + { + strcat (argPtr, argv[i]); + strcat (argPtr, " "); + } + } + } + } + else + argPtr = (char *) NULL; + } } backtrace_command_1 (argPtr, (argIndicatingFullTrace >= 0), from_tty); if (argIndicatingFullTrace >= 0 && totArgLen > 0) - free(argPtr); + free (argPtr); if (old_chain) - do_cleanups(old_chain); + do_cleanups (old_chain); } static void backtrace_full_command PARAMS ((char *arg, int from_tty)); @@ -1147,8 +1153,8 @@ backtrace_full_command (arg, from_tty) { backtrace_command_1 (arg, 1, from_tty); } - + /* Print the local variables of a block B active in FRAME. Return 1 if any variables were printed; 0 otherwise. */ @@ -1177,7 +1183,7 @@ print_block_frame_locals (b, fi, num_tabs, stream) case LOC_BASEREG: values_printed = 1; for (j = 0; j < num_tabs; j++) - fputs_filtered("\t", stream); + fputs_filtered ("\t", stream); fputs_filtered (SYMBOL_SOURCE_NAME (sym), stream); fputs_filtered (" = ", stream); print_variable_value (sym, fi, stream); @@ -1256,14 +1262,14 @@ print_frame_local_vars (fi, num_tabs, stream) fprintf_filtered (stream, "No symbol table info available.\n"); return; } - + while (block != 0) { if (print_block_frame_locals (block, fi, num_tabs, stream)) values_printed = 1; /* After handling the function's top-level block, stop. - Don't continue to its superblock, the block of - per-file symbols. */ + Don't continue to its superblock, the block of + per-file symbols. */ if (BLOCK_FUNCTION (block)) break; block = BLOCK_SUPERBLOCK (block); @@ -1334,8 +1340,8 @@ print_frame_label_vars (fi, this_level_only, stream) return; /* After handling the function's top-level block, stop. - Don't continue to its superblock, the block of - per-file symbols. */ + Don't continue to its superblock, the block of + per-file symbols. */ if (BLOCK_FUNCTION (block)) break; block = BLOCK_SUPERBLOCK (block); @@ -1363,9 +1369,9 @@ catch_info (ignore, from_tty) char *ignore; int from_tty; { - struct symtab_and_line * sal; + struct symtab_and_line *sal; - /* Check for target support for exception handling */ + /* Check for target support for exception handling */ sal = target_enable_exception_callback (EX_EVENT_CATCH, 1); if (sal) { @@ -1374,16 +1380,16 @@ catch_info (ignore, from_tty) system to find the list of active handlers, etc. */ fprintf_filtered (gdb_stdout, "Info catch not supported with this target/compiler combination.\n"); #if 0 - if (!selected_frame) - error ("No frame selected."); + if (!selected_frame) + error ("No frame selected."); #endif } else { - /* Assume g++ compiled code -- old v 4.16 behaviour */ + /* Assume g++ compiled code -- old v 4.16 behaviour */ if (!selected_frame) - error ("No frame selected."); - + error ("No frame selected."); + print_frame_label_vars (selected_frame, 0, gdb_stdout); } } @@ -1436,7 +1442,7 @@ print_frame_arg_vars (fi, stream) are not combined in symbol-reading. */ sym2 = lookup_symbol (SYMBOL_NAME (sym), - b, VAR_NAMESPACE, (int *)NULL, (struct symtab **)NULL); + b, VAR_NAMESPACE, (int *) NULL, (struct symtab **) NULL); print_variable_value (sym2, fi, stream); fprintf_filtered (stream, "\n"); break; @@ -1469,11 +1475,11 @@ args_plus_locals_info (ignore, from_tty) char *ignore; int from_tty; { - args_info(ignore, from_tty); - locals_info(ignore, from_tty); + args_info (ignore, from_tty); + locals_info (ignore, from_tty); } - + /* Select frame FI, and note that its stack level is LEVEL. LEVEL may be -1 if an actual level number is not known. */ @@ -1492,42 +1498,43 @@ select_frame (fi, level) /* Ensure that symbols for this frame are read in. Also, determine the source language of this frame, and switch to it if desired. */ if (fi) - { - s = find_pc_symtab (fi->pc); - if (s - && s->language != current_language->la_language - && s->language != language_unknown - && language_mode == language_mode_auto) { - set_language(s->language); + { + s = find_pc_symtab (fi->pc); + if (s + && s->language != current_language->la_language + && s->language != language_unknown + && language_mode == language_mode_auto) + { + set_language (s->language); + } + /* elz: this if here fixes the problem with the pc not being displayed + in the tui asm layout, with no debug symbols. The value of s + would be 0 here, and select_source_symtab would abort the + command by calling the 'error' function */ + if (s) + { + TUIDO (((TuiOpaqueFuncPtr) tui_vSelectSourceSymtab, s)); + } } - /* elz: this if here fixes the problem with the pc not being displayed - in the tui asm layout, with no debug symbols. The value of s - would be 0 here, and select_source_symtab would abort the - command by calling the 'error' function*/ - if (s) - { - TUIDO(((TuiOpaqueFuncPtr)tui_vSelectSourceSymtab, s)); - } - } } - + /* Select frame FI, noting that its stack level is LEVEL. Also print the stack frame and show the source if this is the tui version. */ void -select_and_print_frame(fi, level) +select_and_print_frame (fi, level) struct frame_info *fi; int level; { - select_frame(fi, level); + select_frame (fi, level); if (fi) { - print_stack_frame(fi, level, 1); - TUIDO(((TuiOpaqueFuncPtr)tui_vCheckDataValues, fi)); + print_stack_frame (fi, level, 1); + TUIDO (((TuiOpaqueFuncPtr) tui_vCheckDataValues, fi)); } } - + /* Select frame FI, noting that its stack level is LEVEL. Be silent if not the TUI */ #if 0 @@ -1537,9 +1544,9 @@ select_and_maybe_print_frame (fi, level) int level; { if (!tui_version) - select_frame(fi, level); + select_frame (fi, level); else - select_and_print_frame(fi, level); + select_and_print_frame (fi, level); } #endif @@ -1600,13 +1607,14 @@ find_relative_frame (frame, level_offset_ptr) /* Going down is just as simple. */ if (*level_offset_ptr < 0) { - while (*level_offset_ptr < 0) { - frame1 = get_next_frame (frame); - if (!frame1) - break; - frame = frame1; - (*level_offset_ptr)++; - } + while (*level_offset_ptr < 0) + { + frame1 = get_next_frame (frame); + if (!frame1) + break; + frame = frame1; + (*level_offset_ptr)++; + } } return frame; } @@ -1634,12 +1642,13 @@ select_frame_command (level_exp, from_tty) /* Try to figure out what level this frame is. But if there is no current stack, don't error out -- let the user set one. */ frame1 = 0; - if (get_current_frame()) { - for (frame1 = get_prev_frame (0); - frame1 && frame1 != frame; - frame1 = get_prev_frame (frame1)) - level++; - } + if (get_current_frame ()) + { + for (frame1 = get_prev_frame (0); + frame1 && frame1 != frame; + frame1 = get_prev_frame (frame1)) + level++; + } if (!frame1) level = 0; @@ -1668,7 +1677,7 @@ current_frame_command (level_exp, from_tty) int from_tty; { if (target_has_stack == 0 || selected_frame == 0) - error ("No stack."); + error ("No stack."); print_only_stack_frame (selected_frame, selected_frame_level, 1); } @@ -1685,7 +1694,7 @@ up_silently_base (count_exp) if (count_exp) count = parse_and_eval_address (count_exp); count1 = count; - + if (target_has_stack == 0 || selected_frame == 0) error ("No stack."); @@ -1700,7 +1709,7 @@ up_silently_command (count_exp, from_tty) char *count_exp; int from_tty; { - up_silently_base(count_exp); + up_silently_base (count_exp); if (tui_version) print_stack_frame (selected_frame, selected_frame_level, 1); } @@ -1725,9 +1734,9 @@ down_silently_base (count_exp) register struct frame_info *frame; int count = -1, count1; if (count_exp) - count = - parse_and_eval_address (count_exp); + count = -parse_and_eval_address (count_exp); count1 = count; - + if (target_has_stack == 0 || selected_frame == 0) error ("No stack."); @@ -1736,9 +1745,9 @@ down_silently_base (count_exp) { /* We only do this if count_exp is not specified. That way "down" - means to really go down (and let me know if that is - impossible), but "down 9999" can be used to mean go all the way - down without getting an error. */ + means to really go down (and let me know if that is + impossible), but "down 9999" can be used to mean go all the way + down without getting an error. */ error ("Bottom (i.e., innermost) frame selected; you cannot go down."); } @@ -1799,7 +1808,7 @@ return_command (retval_exp, from_tty) return_value = value_cast (return_type, return_value); /* Make sure we have fully evaluated it, since - it might live in the stack frame we're about to pop. */ + it might live in the stack frame we're about to pop. */ if (VALUE_LAZY (return_value)) value_fetch_lazy (return_value); } @@ -1816,9 +1825,8 @@ return_command (retval_exp, from_tty) /* NOTREACHED */ } } - else - if (!query ("Make selected stack frame return now? ")) - error ("Not confirmed."); + else if (!query ("Make selected stack frame return now? ")) + error ("Not confirmed."); } /* Do the real work. Pop until the specified frame is current. We @@ -1826,7 +1834,7 @@ return_command (retval_exp, from_tty) a POP_FRAME. The pc comparison makes this work even if the selected frame shares its fp with another frame. */ - while (selected_frame_addr != (frame = get_current_frame())->frame + while (selected_frame_addr != (frame = get_current_frame ())->frame || selected_frame_pc != frame->pc) POP_FRAME; @@ -1918,10 +1926,10 @@ get_frame_language () { register struct symtab *s; enum language flang; /* The language of the current frame */ - + if (selected_frame) { - s = find_pc_symtab(selected_frame->pc); + s = find_pc_symtab (selected_frame->pc); if (s) flang = s->language; else @@ -1936,7 +1944,7 @@ get_frame_language () void _initialize_stack () { -#if 0 +#if 0 backtrace_limit = 30; #endif @@ -1974,8 +1982,8 @@ a command file or a user-defined command."); if (xdb_commands) { - add_com("L", class_stack, current_frame_command, - "Print the current stack frame.\n"); + add_com ("L", class_stack, current_frame_command, + "Print the current stack frame.\n"); add_com_alias ("V", "frame", class_stack, 1); } add_com ("select-frame", class_stack, select_frame_command, @@ -1992,7 +2000,7 @@ Use of the 'full' qualifier also prints the values of the local variables.\n"); { add_com_alias ("t", "backtrace", class_stack, 0); add_com ("T", class_stack, backtrace_full_command, - "Print backtrace of all stack frames, or innermost COUNT frames \n\ + "Print backtrace of all stack frames, or innermost COUNT frames \n\ and the values of the local variables.\n\ With a negative argument, print outermost -COUNT frames.\n\ Usage: T <count>\n"); @@ -2010,21 +2018,21 @@ Usage: T <count>\n"); add_info ("args", args_info, "Argument variables of current stack frame."); if (xdb_commands) - add_com("l", class_info, args_plus_locals_info, - "Argument and local variables of current stack frame."); + add_com ("l", class_info, args_plus_locals_info, + "Argument and local variables of current stack frame."); if (dbx_commands) - add_com("func", class_stack, func_command, - "Select the stack frame that contains <func>.\nUsage: func <name>\n"); + add_com ("func", class_stack, func_command, + "Select the stack frame that contains <func>.\nUsage: func <name>\n"); add_info ("catch", catch_info, "Exceptions that can be caught in the current stack frame."); #if 0 - add_cmd ("backtrace-limit", class_stack, set_backtrace_limit_command, - "Specify maximum number of frames for \"backtrace\" to print by default.", + add_cmd ("backtrace-limit", class_stack, set_backtrace_limit_command, + "Specify maximum number of frames for \"backtrace\" to print by default.", &setlist); add_info ("backtrace-limit", backtrace_limit_info, - "The maximum number of frames for \"backtrace\" to print by default."); + "The maximum number of frames for \"backtrace\" to print by default."); #endif } |