* valprint.c (print_longest): Clarify comment about use_local.
authorJim Kingdon <jkingdon@engr.sgi.com>
Wed, 4 May 1994 15:24:41 +0000 (15:24 +0000)
committerJim Kingdon <jkingdon@engr.sgi.com>
Wed, 4 May 1994 15:24:41 +0000 (15:24 +0000)
* printcmd.c, defs.h (print_address_numeric), callers in
symmisc.c, symfile.c, stack.c, source.c, remote.c, infcmd.c,
cp-valprint.c, core.c, ch-valprint.c, c-valprint.c, breakpoint.c,
exec.c: New argument use_local.
* source.c (identify_source_line): Use filtered output.  Use
print_address_numeric.

gdb/ChangeLog
gdb/breakpoint.c
gdb/c-valprint.c
gdb/ch-valprint.c
gdb/core.c
gdb/cp-valprint.c
gdb/printcmd.c
gdb/remote.c
gdb/stack.c

index c5f4be274c12a064f2362634a26f4f81961e7a41..06b1277fd7d8f37060c89c06711886f0bac792bc 100644 (file)
@@ -1,5 +1,13 @@
 Wed May  4 06:56:03 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)
 
+       * valprint.c (print_longest): Clarify comment about use_local.
+       * printcmd.c, defs.h (print_address_numeric), callers in
+       symmisc.c, symfile.c, stack.c, source.c, remote.c, infcmd.c,
+       cp-valprint.c, core.c, ch-valprint.c, c-valprint.c, breakpoint.c,
+       exec.c: New argument use_local.
+       * source.c (identify_source_line): Use filtered output.  Use
+       print_address_numeric. 
+
        * core.c (memory_error), symtab.c (cplusplus_hint, decode_line_1),
        language.c (type_error, range_error): Use filtered output.
        * utils.c (error_begin): Update comment to tell people to use
index b9efd0546b07ba6a23df80aecc3b0e907e590017..3e43ca34b5f74ad4ba84ff7b99a6c19285fcd993 100644 (file)
@@ -1648,7 +1648,7 @@ breakpoint_1 (bnum, allflag)
              printf_filtered ("\n\032\032field 6\n");
 
            printf_filtered ("\tstop only in stack frame at ");
-           print_address_numeric (b->frame, gdb_stdout);
+           print_address_numeric (b->frame, 1, gdb_stdout);
            printf_filtered ("\n");
          }
 
@@ -1760,7 +1760,7 @@ describe_other_breakpoints (pc)
               (others > 1) ? "," : ((others == 1) ? " and" : ""));
          }
       printf_filtered ("also set at pc ");
-      print_address_numeric (pc, gdb_stdout);
+      print_address_numeric (pc, 1, gdb_stdout);
       printf_filtered (".\n");
     }
 }
@@ -2001,7 +2001,7 @@ mention (b)
       break;
     case bp_breakpoint:
       printf_filtered ("Breakpoint %d at ", b->number);
-      print_address_numeric (b->address, gdb_stdout);
+      print_address_numeric (b->address, 1, gdb_stdout);
       if (b->source_file)
        printf_filtered (": file %s, line %d.",
                         b->source_file, b->line_number);
index 905c313613a769fa68650bba22f0d441f29faf1a..0eb313370a0448a96d2cdde156679ef9a231875f 100644 (file)
@@ -172,7 +172,7 @@ c_val_print (type, valaddr, address, stream, format, deref_ref, recurse,
 
          if (addressprint && format != 's')
            {
-             print_address_numeric (addr, stream);
+             print_address_numeric (addr, 1, stream);
            }
 
          /* For a pointer to char or unsigned char, also print the string
@@ -255,7 +255,7 @@ c_val_print (type, valaddr, address, stream, format, deref_ref, recurse,
          fprintf_filtered (stream, "@");
          print_address_numeric
            (extract_address (valaddr,
-                             TARGET_PTR_BIT / HOST_CHAR_BIT), stream);
+                             TARGET_PTR_BIT / HOST_CHAR_BIT), 1, stream);
          if (deref_ref)
            fputs_filtered (": ", stream);
         }
index 24e503113614aaa1f417c789557f80f788e9b4f2..68ea1a7aaaaa931717f1668396cd580d75e114f1 100644 (file)
@@ -159,7 +159,7 @@ chill_val_print (type, valaddr, address, stream, format, deref_ref, recurse,
        }
       if (addressprint && format != 's')
        {
-         print_address_numeric (addr, stream);
+         print_address_numeric (addr, 1, stream);
        }
       
       /* For a pointer to char or unsigned char, also print the string
@@ -269,6 +269,7 @@ chill_val_print (type, valaddr, address, stream, format, deref_ref, recurse,
          fprintf_filtered (stream, "LOC(");
          print_address_numeric
            (extract_address (valaddr, TARGET_PTR_BIT / HOST_CHAR_BIT),
+            1,
             stream);
          fprintf_filtered (stream, ")");
          if (deref_ref)
index bd77a91a8f87e877ba092c66b85288b0ef9fc6c7..974e55c1859de6cdf1f8ae1ef42a01e868b2be1e 100644 (file)
@@ -144,7 +144,7 @@ memory_error (status, memaddr)
         was out of bounds. */
       error_begin ();
       printf_filtered ("Cannot access memory at address ");
-      print_address_numeric (memaddr, gdb_stdout);
+      print_address_numeric (memaddr, 1, gdb_stdout);
       printf_filtered (".\n");
       return_to_top_level (RETURN_ERROR);
     }
@@ -152,7 +152,7 @@ memory_error (status, memaddr)
     {
       error_begin ();
       printf_filtered ("Error accessing memory address ");
-      print_address_numeric (memaddr, gdb_stdout);
+      print_address_numeric (memaddr, 1, gdb_stdout);
       printf_filtered (": %s.\n",
                         safe_strerror (status));
       return_to_top_level (RETURN_ERROR);
index 0346c033f034573c1b09afa78852029dfaed323c..c3bb3a4411b1b3473185315c873175da682d4d59 100644 (file)
@@ -411,7 +411,7 @@ cplus_print_value (type, valaddr, stream, format, recurse, pretty, dont_print)
       if (err != 0)
        {
          fprintf_filtered (stream, "<invalid address ");
-         print_address_numeric ((CORE_ADDR) baddr, stream);
+         print_address_numeric ((CORE_ADDR) baddr, 1, stream);
          fprintf_filtered (stream, ">");
        }
       else
index 0052b31f82b2d8f33d87e53a41eb0dbbc030cc16..25c27454087d9596ab1c4bd7e77d6568087825d0 100644 (file)
@@ -613,10 +613,12 @@ print_address_symbolic (addr, stream, do_demangle, leadin)
   fputs_filtered (">", stream);
 }
 
-/* Print address ADDR on STREAM.  */
+/* Print address ADDR on STREAM.  USE_LOCAL means the same thing as for
+   print_longest.  */
 void
-print_address_numeric (addr, stream)
+print_address_numeric (addr, use_local, stream)
      CORE_ADDR addr;
+     int use_local;
      GDB_FILE *stream;
 {
   /* This assumes a CORE_ADDR can fit in a LONGEST.  Probably a safe
@@ -634,7 +636,7 @@ print_address (addr, stream)
      CORE_ADDR addr;
      GDB_FILE *stream;
 {
-  print_address_numeric (addr, stream);
+  print_address_numeric (addr, 1, stream);
   print_address_symbolic (addr, stream, asm_demangle, " ");
 }
 
@@ -655,7 +657,7 @@ print_address_demangle (addr, stream, do_demangle)
     }
   else if (addressprint)
     {
-      print_address_numeric (addr, stream);
+      print_address_numeric (addr, 1, stream);
       print_address_symbolic (addr, stream, do_demangle, " ");
     }
   else
@@ -983,7 +985,8 @@ address_info (exp, from_tty)
          fprintf_symbol_filtered (gdb_stdout, exp,
                                   current_language->la_language, DMGL_ANSI);
          printf_filtered ("\" is at ");
-         print_address_numeric (SYMBOL_VALUE_ADDRESS (msymbol), gdb_stdout);
+         print_address_numeric (SYMBOL_VALUE_ADDRESS (msymbol), 1,
+                                gdb_stdout);
          printf_filtered (" in a file compiled without debugging.\n");
        }
       else
@@ -1007,7 +1010,7 @@ address_info (exp, from_tty)
 
     case LOC_LABEL:
       printf_filtered ("a label at address ");
-      print_address_numeric (SYMBOL_VALUE_ADDRESS (sym), gdb_stdout);
+      print_address_numeric (SYMBOL_VALUE_ADDRESS (sym), 1, gdb_stdout);
       break;
 
     case LOC_REGISTER:
@@ -1016,7 +1019,7 @@ address_info (exp, from_tty)
 
     case LOC_STATIC:
       printf_filtered ("static storage at address ");
-      print_address_numeric (SYMBOL_VALUE_ADDRESS (sym), gdb_stdout);
+      print_address_numeric (SYMBOL_VALUE_ADDRESS (sym), 1, gdb_stdout);
       break;
 
     case LOC_REGPARM:
@@ -1059,7 +1062,7 @@ address_info (exp, from_tty)
 
     case LOC_BLOCK:
       printf_filtered ("a function at address ");
-      print_address_numeric (BLOCK_START (SYMBOL_BLOCK_VALUE (sym)),
+      print_address_numeric (BLOCK_START (SYMBOL_BLOCK_VALUE (sym)), 1,
                             gdb_stdout);
       break;
 
@@ -2075,9 +2078,9 @@ disassemble_command (arg, from_tty)
   else
     {
       printf_filtered ("from ");
-      print_address_numeric (low, gdb_stdout);
+      print_address_numeric (low, 1, gdb_stdout);
       printf_filtered (" to ");
-      print_address_numeric (high, gdb_stdout);
+      print_address_numeric (high, 1, gdb_stdout);
       printf_filtered (":\n");
     }
 
index 09eb616d95186f62146479f83a0350b1d28d6b15..6da0f21b4864282ebd0b0c87071833f35a0e7b8a 100644 (file)
@@ -824,8 +824,8 @@ remote_write_bytes (memaddr, myaddr, len)
   int i;
   char *p;
 
-  /* FIXME-32x64: Need a version of print_address_numeric which doesn't
-     set use_local (and also puts the result in a buffer like sprintf).  */
+  /* FIXME-32x64: Need a version of print_address_numeric which puts the
+     result in a buffer like sprintf.  */
   sprintf (buf, "M%lx,%x:", (unsigned long) memaddr, len);
 
   /* We send target system values byte by byte, in increasing byte addresses,
@@ -875,8 +875,8 @@ remote_read_bytes (memaddr, myaddr, len)
   if (len > PBUFSIZ / 2 - 1)
     abort ();
 
-  /* FIXME-32x64: Need a version of print_address_numeric which doesn't
-     set use_local (and also puts the result in a buffer like sprintf).  */
+  /* FIXME-32x64: Need a version of print_address_numeric which puts the
+     result in a buffer like sprintf.  */
   sprintf (buf, "m%lx,%x", (unsigned long) memaddr, len);
   putpkt (buf);
   getpkt (buf, 0);
index f85fa1a593bb22b37aad46f8e1d9fd38a9696178..4d84dafda10ac6c50054aa3fdd389feb50298699 100644 (file)
@@ -101,10 +101,13 @@ FRAME selected_frame;
 
 int selected_frame_level;
 
-/* Nonzero means print the full filename and linenumber
-   when a frame is printed, and do so in a format programs can parse.  */
+/* Zero means do things normally; we are interacting directly with the
+   user.  One means print the full filename and linenumber when a
+   frame is printed, and do so in a format emacs18/emacs19.22 can
+   parse.  Two means print similar annotations, but in many more
+   cases and in a slightly different syntax.  */
 
-int frame_file_full_name = 0;
+int annotation_level = 0;
 
 \f
 struct print_stack_frame_args {
@@ -255,9 +258,14 @@ print_frame_info (fi, level, source, args)
          && (SYMBOL_VALUE_ADDRESS (msymbol) 
              > BLOCK_START (SYMBOL_BLOCK_VALUE (func))))
        {
+#if 0
+         /* There is no particular reason to think the line number
+            information is wrong.  Someone might have just put in
+            a label with asm() but left the line numbers alone.  */
          /* In this case we have no way of knowing the source file
             and line number, so don't print them.  */
          sal.symtab = 0;
+#endif
          /* We also don't know anything about the function besides
             its address and name.  */
          func = 0;
@@ -287,7 +295,7 @@ print_frame_info (fi, level, source, args)
       if (addressprint)
        if (fi->pc != sal.pc || !sal.symtab)
          {
-           print_address_numeric (fi->pc, gdb_stdout);
+           print_address_numeric (fi->pc, 1, gdb_stdout);
            printf_filtered (" in ");
          }
       fprintf_symbol_filtered (gdb_stdout, funname ? funname : "??", funlang,
@@ -324,14 +332,14 @@ print_frame_info (fi, level, source, args)
     {
       int done = 0;
       int mid_statement = source < 0 && fi->pc != sal.pc;
-      if (frame_file_full_name)
+      if (annotation_level)
        done = identify_source_line (sal.symtab, sal.line, mid_statement,
                                     fi->pc);
       if (!done)
        {
          if (addressprint && mid_statement)
            {
-             print_address_numeric (fi->pc, gdb_stdout);
+             print_address_numeric (fi->pc, 1, gdb_stdout);
              printf_filtered ("\t");
            }
          print_source_lines (sal.symtab, sal.line, sal.line + 1, 0);
@@ -402,6 +410,22 @@ parse_frame_specification (frame_exp)
          /* find_relative_frame was successful */
          return fid;
 
+       /* If SETUP_ARBITRARY_FRAME is defined, then frame specifications
+          take at least 2 addresses.  It is important to detect this case
+          here so that "frame 100" does not give a confusing error message
+          like "frame specification requires two addresses".  This of course
+          does not solve the "frame 100" problem for machines on which
+          a frame specification can be made with one address.  To solve
+          that, we need a new syntax for a specifying a frame by address.
+          I think the cleanest syntax is $frame(0x45) ($frame(0x23,0x45) for
+          two args, etc.), but people might think that is too much typing,
+          so I guess *0x23,0x45 would be a possible alternative (commas
+          really should be used instead of spaces to delimit; using spaces
+          normally works in an expression).  */
+#ifdef SETUP_ARBITRARY_FRAME
+       error ("No frame %d", args[0]);
+#endif
+
        /* If (s)he specifies the frame with an address, he deserves what
           (s)he gets.  Still, give the highest one that matches.  */
 
@@ -416,9 +440,7 @@ parse_frame_specification (frame_exp)
            fid = tfid;
          
        /* We couldn't identify the frame as an existing frame, but
-          perhaps we can create one with a single argument.
-          Fall through to default case; it's up to SETUP_ARBITRARY_FRAME
-          to complain if it doesn't like a single arg.  */
+          perhaps we can create one with a single argument.  */
       }
 
      default:
@@ -498,18 +520,18 @@ frame_info (addr_exp, from_tty)
   if (!addr_exp && selected_frame_level >= 0)
     {
       printf_filtered ("Stack level %d, frame at ", selected_frame_level);
-      print_address_numeric (FRAME_FP(frame), gdb_stdout);
+      print_address_numeric (FRAME_FP(frame), 1, gdb_stdout);
       printf_filtered (":\n");
     }
   else
     {
       printf_filtered ("Stack frame at ");
-      print_address_numeric (FRAME_FP(frame), gdb_stdout);
+      print_address_numeric (FRAME_FP(frame), 1, gdb_stdout);
       printf_filtered (":\n");
     }
   printf_filtered (" %s = ",
                   reg_names[PC_REGNUM]);
-  print_address_numeric (fi->pc, gdb_stdout);
+  print_address_numeric (fi->pc, 1, gdb_stdout);
 
   wrap_here ("   ");
   if (funname)
@@ -524,7 +546,7 @@ frame_info (addr_exp, from_tty)
   puts_filtered ("; ");
   wrap_here ("    ");
   printf_filtered ("saved %s ", reg_names[PC_REGNUM]);
-  print_address_numeric (FRAME_SAVED_PC (frame), gdb_stdout);
+  print_address_numeric (FRAME_SAVED_PC (frame), 1, gdb_stdout);
   printf_filtered ("\n");
 
   {
@@ -539,7 +561,7 @@ frame_info (addr_exp, from_tty)
   if (calling_frame)
     {
       printf_filtered (" called by frame at ");
-      print_address_numeric (FRAME_FP (calling_frame), gdb_stdout);
+      print_address_numeric (FRAME_FP (calling_frame), 1, gdb_stdout);
     }
   if (fi->next && calling_frame)
     puts_filtered (",");
@@ -547,7 +569,7 @@ frame_info (addr_exp, from_tty)
   if (fi->next)
     {
       printf_filtered (" caller of frame at ");
-      print_address_numeric (fi->next->frame, gdb_stdout);
+      print_address_numeric (fi->next->frame, 1, gdb_stdout);
     }
   if (fi->next || calling_frame)
     puts_filtered ("\n");
@@ -569,7 +591,7 @@ frame_info (addr_exp, from_tty)
     else
       {
        printf_filtered (" Arglist at ");
-       print_address_numeric (arg_list, gdb_stdout);
+       print_address_numeric (arg_list, 1, gdb_stdout);
        printf_filtered (",");
 
        FRAME_NUM_ARGS (numargs, fi);
@@ -594,7 +616,7 @@ frame_info (addr_exp, from_tty)
     else
       {
        printf_filtered (" Locals at ");
-       print_address_numeric (arg_list, gdb_stdout);
+       print_address_numeric (arg_list, 1, gdb_stdout);
        printf_filtered (",");
       }
   }
@@ -604,7 +626,7 @@ frame_info (addr_exp, from_tty)
   /* The sp is special; what's returned isn't the save address, but
      actually the value of the previous frame's sp.  */
   printf_filtered (" Previous frame's sp is ");
-  print_address_numeric (fsr.regs[SP_REGNUM], gdb_stdout);
+  print_address_numeric (fsr.regs[SP_REGNUM], 1, gdb_stdout);
   printf_filtered ("\n");
   count = 0;
   for (i = 0; i < NUM_REGS; i++)
@@ -616,7 +638,7 @@ frame_info (addr_exp, from_tty)
          puts_filtered (",");
        wrap_here (" ");
        printf_filtered (" %s at ", reg_names[i]);
-       print_address_numeric (fsr.regs[i], gdb_stdout);
+       print_address_numeric (fsr.regs[i], 1, gdb_stdout);
        count++;
       }
   if (count)
@@ -826,7 +848,7 @@ print_block_frame_labels (b, have_default, stream)
          if (addressprint)
            {
              fprintf_filtered (stream, " ");
-             print_address_numeric (SYMBOL_VALUE_ADDRESS (sym), stream);
+             print_address_numeric (SYMBOL_VALUE_ADDRESS (sym), 1, stream);
            }
          fprintf_filtered (stream, " in file %s, line %d\n",
                            sal.symtab->filename, sal.line);
@@ -1272,7 +1294,7 @@ return_command (retval_exp, from_tty)
   FRAME_ADDR selected_frame_addr;
   CORE_ADDR selected_frame_pc;
   FRAME frame;
-  value return_value = NULL;
+  value_ptr return_value = NULL;
 
   if (selected_frame == NULL)
     error ("No selected frame.");