2003-04-09 Andrew Cagney <cagney@redhat.com>
[deliverable/binutils-gdb.git] / gdb / stack.c
index e167b6e6073e6b4f60062e2b46ccdde0de22f885..2cb9a95dc3dcd45535ffe942fdf0ea466b4566b0 100644 (file)
@@ -39,6 +39,7 @@
 #include "inferior.h"
 #include "annotate.h"
 #include "ui-out.h"
+#include "block.h"
 
 /* Prototypes for exported functions. */
 
@@ -203,6 +204,8 @@ print_frame_info (struct frame_info *fi, int level, int source, int args)
       struct cleanup *uiout_cleanup
        = make_cleanup_ui_out_tuple_begin_end (uiout, "frame");
 
+      annotate_frame_begin (level == -1 ? 0 : level, get_frame_pc (fi));
+
       /* Do this regardless of SOURCE because we don't have any source
          to list for this frame.  */
       if (level >= 0)
@@ -213,10 +216,10 @@ print_frame_info (struct frame_info *fi, int level, int source, int args)
       if (ui_out_is_mi_like_p (uiout))
         {
           annotate_frame_address ();
-          ui_out_field_core_addr (uiout, "addr", fi->pc);
+          ui_out_field_core_addr (uiout, "addr", get_frame_pc (fi));
           annotate_frame_address_end ();
         }
-      
+
       if (get_frame_type (fi) == DUMMY_FRAME)
         {
           annotate_function_call ();
@@ -353,12 +356,12 @@ print_frame (struct frame_info *fi,
          /* We also don't know anything about the function besides
             its address and name.  */
          func = 0;
-         funname = SYMBOL_NAME (msymbol);
+         funname = DEPRECATED_SYMBOL_NAME (msymbol);
          funlang = SYMBOL_LANGUAGE (msymbol);
        }
       else
        {
-         /* I'd like to use SYMBOL_SOURCE_NAME() here, to display the
+         /* I'd like to use SYMBOL_PRINT_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
@@ -370,7 +373,7 @@ print_frame (struct frame_info *fi,
             here, while we still have our hands on the function
             symbol.) */
          char *demangled;
-         funname = SYMBOL_NAME (func);
+         funname = DEPRECATED_SYMBOL_NAME (func);
          funlang = SYMBOL_LANGUAGE (func);
          if (funlang == language_cplus)
            {
@@ -379,7 +382,7 @@ print_frame (struct frame_info *fi,
                /* 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);
+               funname = SYMBOL_PRINT_NAME (func);
            }
        }
     }
@@ -388,7 +391,7 @@ print_frame (struct frame_info *fi,
       struct minimal_symbol *msymbol = lookup_minimal_symbol_by_pc (frame_address_in_block (fi));
       if (msymbol != NULL)
        {
-         funname = SYMBOL_NAME (msymbol);
+         funname = DEPRECATED_SYMBOL_NAME (msymbol);
          funlang = SYMBOL_LANGUAGE (msymbol);
        }
     }
@@ -597,16 +600,6 @@ parse_frame_specification (char *frame_exp)
   /* NOTREACHED */
 }
 
-/* FRAME_ARGS_ADDRESS_CORRECT is just like FRAME_ARGS_ADDRESS except
-   that if it is unsure about the answer, it returns 0
-   instead of guessing (this happens on the VAX and i960, for example).
-
-   On most machines, we never have to guess about the args address,
-   so FRAME_ARGS_ADDRESS{,_CORRECT} are the same.  */
-#if !defined (FRAME_ARGS_ADDRESS_CORRECT)
-#define FRAME_ARGS_ADDRESS_CORRECT FRAME_ARGS_ADDRESS
-#endif
-
 /* Print verbosely the selected frame or the frame at address ADDR.
    This means absolutely all information in the frame is printed.  */
 
@@ -636,7 +629,7 @@ frame_info (char *addr_exp, int from_tty)
   s = find_pc_symtab (get_frame_pc (fi));
   if (func)
     {
-      /* I'd like to use SYMBOL_SOURCE_NAME() here, to display
+      /* I'd like to use SYMBOL_PRINT_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
@@ -650,7 +643,7 @@ frame_info (char *addr_exp, int from_tty)
        * have our hands on the function symbol.)
        */
       char *demangled;
-      funname = SYMBOL_NAME (func);
+      funname = DEPRECATED_SYMBOL_NAME (func);
       funlang = SYMBOL_LANGUAGE (func);
       if (funlang == language_cplus)
        {
@@ -660,7 +653,7 @@ frame_info (char *addr_exp, int from_tty)
           * but that's preferable to diplaying a mangled name.
           */
          if (demangled == NULL)
-           funname = SYMBOL_SOURCE_NAME (func);
+           funname = SYMBOL_PRINT_NAME (func);
        }
     }
   else
@@ -668,7 +661,7 @@ frame_info (char *addr_exp, int from_tty)
       register struct minimal_symbol *msymbol = lookup_minimal_symbol_by_pc (get_frame_pc (fi));
       if (msymbol != NULL)
        {
-         funname = SYMBOL_NAME (msymbol);
+         funname = DEPRECATED_SYMBOL_NAME (msymbol);
          funlang = SYMBOL_LANGUAGE (msymbol);
        }
     }
@@ -740,7 +733,7 @@ frame_info (char *addr_exp, int from_tty)
 
   {
     /* Address of the argument list for this frame, or 0.  */
-    CORE_ADDR arg_list = FRAME_ARGS_ADDRESS_CORRECT (fi);
+    CORE_ADDR arg_list = get_frame_args_address (fi);
     /* Number of args for this frame, or -1 if unknown.  */
     int numargs;
 
@@ -767,7 +760,7 @@ frame_info (char *addr_exp, int from_tty)
   }
   {
     /* Address of the local variables for this frame, or 0.  */
-    CORE_ADDR arg_list = FRAME_LOCALS_ADDRESS (fi);
+    CORE_ADDR arg_list = get_frame_locals_address (fi);
 
     if (arg_list == 0)
       printf_filtered (" Locals at unknown address,");
@@ -779,9 +772,9 @@ frame_info (char *addr_exp, int from_tty)
       }
   }
 
-  if (FRAME_INIT_SAVED_REGS_P ()
+  if (DEPRECATED_FRAME_INIT_SAVED_REGS_P ()
       && get_frame_saved_regs (fi) == NULL)
-    FRAME_INIT_SAVED_REGS (fi);
+    DEPRECATED_FRAME_INIT_SAVED_REGS (fi);
   /* Print as much information as possible on the location of all the
      registers.  */
   {
@@ -1080,10 +1073,11 @@ print_block_frame_locals (struct block *b, register struct frame_info *fi,
        case LOC_REGISTER:
        case LOC_STATIC:
        case LOC_BASEREG:
+       case LOC_COMPUTED:
          values_printed = 1;
          for (j = 0; j < num_tabs; j++)
            fputs_filtered ("\t", stream);
-         fputs_filtered (SYMBOL_SOURCE_NAME (sym), stream);
+         fputs_filtered (SYMBOL_PRINT_NAME (sym), stream);
          fputs_filtered (" = ", stream);
          print_variable_value (sym, fi, stream);
          fprintf_filtered (stream, "\n");
@@ -1109,7 +1103,7 @@ print_block_frame_labels (struct block *b, int *have_default,
 
   ALL_BLOCK_SYMBOLS (b, i, sym)
     {
-      if (STREQ (SYMBOL_NAME (sym), "default"))
+      if (STREQ (DEPRECATED_SYMBOL_NAME (sym), "default"))
        {
          if (*have_default)
            continue;
@@ -1120,7 +1114,7 @@ print_block_frame_labels (struct block *b, int *have_default,
          struct symtab_and_line sal;
          sal = find_pc_line (SYMBOL_VALUE_ADDRESS (sym), 0);
          values_printed = 1;
-         fputs_filtered (SYMBOL_SOURCE_NAME (sym), stream);
+         fputs_filtered (SYMBOL_PRINT_NAME (sym), stream);
          if (addressprint)
            {
              fprintf_filtered (stream, " ");
@@ -1306,8 +1300,9 @@ print_frame_arg_vars (register struct frame_info *fi,
        case LOC_REGPARM:
        case LOC_REGPARM_ADDR:
        case LOC_BASEREG_ARG:
+       case LOC_COMPUTED_ARG:
          values_printed = 1;
-         fputs_filtered (SYMBOL_SOURCE_NAME (sym), stream);
+         fputs_filtered (SYMBOL_PRINT_NAME (sym), stream);
          fputs_filtered (" = ", stream);
 
          /* We have to look up the symbol because arguments can have
@@ -1321,7 +1316,7 @@ print_frame_arg_vars (register struct frame_info *fi,
             float).  There are also LOC_ARG/LOC_REGISTER pairs which
             are not combined in symbol-reading.  */
 
-         sym2 = lookup_symbol (SYMBOL_NAME (sym),
+         sym2 = lookup_symbol (DEPRECATED_SYMBOL_NAME (sym),
                   b, VAR_NAMESPACE, (int *) NULL, (struct symtab **) NULL);
          print_variable_value (sym2, fi, stream);
          fprintf_filtered (stream, "\n");
@@ -1619,7 +1614,7 @@ return_command (char *retval_exp, int from_tty)
     {
       if (thisfun != 0)
        {
-         if (!query ("Make %s return now? ", SYMBOL_SOURCE_NAME (thisfun)))
+         if (!query ("Make %s return now? ", SYMBOL_PRINT_NAME (thisfun)))
            {
              error ("Not confirmed.");
              /* NOTREACHED */
@@ -1634,9 +1629,13 @@ return_command (char *retval_exp, int from_tty)
      that.  */
 
   /* Do the real work.  Pop until the specified frame is current.  We
-     use this method because the deprecated_selected_frame is not valid after
-     a POP_FRAME.  The pc comparison makes this work even if the
-     selected frame shares its fp with another frame.  */
+     use this method because the deprecated_selected_frame is not
+     valid after a frame_pop().  The pc comparison makes this work
+     even if the selected frame shares its fp with another frame.  */
+
+  /* FIXME: cagney/32003-03-12: This code should use frame_id_eq().
+     Unfortunatly, that function doesn't yet include the PC in any
+     frame ID comparison.  */
 
   while (selected_frame_addr != get_frame_base (frame = get_current_frame ())
         || selected_frame_pc != get_frame_pc (frame))
This page took 0.029498 seconds and 4 git commands to generate.