* i386-xdep.c, pyr-tdep.c, pyr-xdep.c, remote-vx.c, solib.c,
authorJohn Gilmore <gnu@cygnus>
Thu, 19 Sep 1991 02:40:29 +0000 (02:40 +0000)
committerJohn Gilmore <gnu@cygnus>
Thu, 19 Sep 1991 02:40:29 +0000 (02:40 +0000)
source.c, symfile.c, dbxread.c:  Output hex with local_hex_string for
Modula-2 support.

gdb/pyr-tdep.c
gdb/pyr-xdep.c
gdb/remote-vx.c
gdb/source.c

index 27192a3..f3a3cde 100644 (file)
@@ -1,5 +1,5 @@
-/* Low level interface to ptrace, for GDB when running under Unix.
-   Copyright (C) 1988, 1989 Free Software Foundation, Inc.
+/* Pyramid target-dependent code for GDB.
+   Copyright (C) 1988, 1989, 1991 Free Software Foundation, Inc.
 
 This file is part of GDB.
 
@@ -17,6 +17,9 @@ 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., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
+#include "param.h"
+#include "defs.h"
+
 /*** Prettier register printing. ***/
 
 /* Print registers in the same format as pyramid's dbx, adb, sdb.  */
@@ -74,7 +77,7 @@ pyr_do_registers_info (regnum, fpregs)
        if (val == 0)
          printf_filtered ("0");
        else
-         printf_filtered ("0x%08x  %d", val, val);
+         printf_filtered ("%s  %d", local_hex_string_custom(val,"08"), val);
        printf_filtered("\n");
       }
 }
index 114ea64..85b1c58 100644 (file)
@@ -273,17 +273,17 @@ core_file_command (filename, from_tty)
 
            if (*(int *)buf >= 0)
                    break;
-           printf ("skipping frame %0x\n", last_frame_address);
+           printf ("skipping frame %s\n", local_hex_string (last_frame_address));
            last_frame_offset -= CONTROL_STACK_FRAME_SIZE;
            last_frame_address -= CONTROL_STACK_FRAME_SIZE;
        }
        reg_offset = last_frame_offset;
 
 #if 1 || defined(PYRAMID_CONTROL_FRAME_DEBUGGING)
-       printf ("Control stack pointer = 0x%08x\n",
-               u.u_pcb.pcb_csp);
-       printf ("offset to control stack %d outermost frame %d (%0x)\n",
-             reg_stack_offset, reg_offset, last_frame_address);
+       printf ("Control stack pointer = %s\n",
+               local_hex_string (u.u_pcb.pcb_csp));
+       printf ("offset to control stack %d outermost frame %d (%s)\n",
+             reg_stack_offset, reg_offset, local_hex_string (last_frame_address));
 #endif /* PYRAMID_CONTROL_FRAME_DEBUGGING */
 
 #else /* not PYRAMID_CORE */
@@ -346,8 +346,8 @@ core_file_command (filename, from_tty)
        }
 
 #if 1 || defined(PYRAMID_CONTROL_FRAME_DEBUGGING)
-      printf ("Providing CSP (%0x) as nominal address of current frame.\n",
-             last_frame_address);
+      printf ("Providing CSP (%s) as nominal address of current frame.\n",
+             local_hex_string(last_frame_address));
 #endif PYRAMID_CONTROL_FRAME_DEBUGGING
       /* FIXME: Which of the following is correct? */
 #if 0
index 7b00a68..42090b7 100644 (file)
@@ -18,6 +18,7 @@ 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., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
+#include <stdio.h>
 #include "defs.h"
 #include "param.h"
 #include "frame.h"
@@ -29,7 +30,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #include "symtab.h"
 #include "symfile.h"           /* for struct complaint */
 
-#include <stdio.h>
 #include <string.h>
 #include <errno.h>
 #include <signal.h>
@@ -654,9 +654,9 @@ vx_files_info ()
 void
 vx_run_files_info ()
 {
-  printf ("\tRunning %s VxWorks process 0x%x", 
+  printf ("\tRunning %s VxWorks process %s", 
          vx_running? "child": "attached",
-         inferior_pid);
+         local_hex_string(inferior_pid));
   if (vx_running)
     printf (", function `%s'", vx_running);
   printf(".\n");
@@ -984,7 +984,7 @@ vx_wait (status)
          sleep_ms (200);       /* FIXME Don't kill the network too badly */
        }
       else if (pid != inferior_pid)
-       fatal ("Bad pid for debugged task: 0x%x\n", pid);
+       fatal ("Bad pid for debugged task: %s\n", local_hex_string(pid));
     } while (pid == 0);
 
   /* FIXME, eventually do more then SIGTRAP on everything...  */
@@ -1178,7 +1178,7 @@ vx_attach (args, from_tty)
     error ("Invalid process-id -- give a single number in decimal or 0xhex");
 
   if (from_tty)
-      printf ("Attaching pid 0x%x.\n", pid);
+      printf ("Attaching pid %s.\n", local_hex_string(pid));
 
   bzero ((char *)&ptrace_in,  sizeof (ptrace_in));
   bzero ((char *)&ptrace_out, sizeof (ptrace_out));
@@ -1244,7 +1244,7 @@ vx_detach (args, from_tty)
     error ("Argument given to VxWorks \"detach\".");
 
   if (from_tty)
-      printf ("Detaching pid 0x%x.\n", inferior_pid);
+      printf ("Detaching pid %s.\n", local_hex_string(inferior_pid));
 
   if (args)            /* FIXME, should be possible to leave suspended */
     signal = atoi (args);
@@ -1281,7 +1281,7 @@ vx_kill (args, from_tty)
     error ("Argument given to VxWorks \"kill\".");
 
   if (from_tty)
-      printf ("Killing pid 0x%x.\n", inferior_pid);
+      printf ("Killing pid %s.\n", local_hex_string(inferior_pid));
 
   bzero ((char *)&ptrace_in,  sizeof (ptrace_in));
   bzero ((char *)&ptrace_out, sizeof (ptrace_out));
index d087641..369788f 100644 (file)
@@ -21,6 +21,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #include "defs.h"
 #include "symtab.h"
 #include "param.h"
+#include "language.h"
 #include "command.h"
 #include "gdbcmd.h"
 #include "frame.h"
@@ -36,7 +37,10 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #include "gdbcore.h"
 #include "regex.h"
 
-extern char *strstr();
+/* If we use this declaration, it breaks because of fucking ANSI "const" stuff
+   on some systems.  We just have to not declare it at all, have it default
+   to int, and possibly botch on a few systems.  Thanks, ANSIholes... */
+/* extern char *strstr(); */
 
 extern void set_next_address ();
 
@@ -53,6 +57,14 @@ struct symtab *current_source_symtab;
 
 int current_source_line;
 
+/* Default number of lines to print with commands like "list".
+   This is based on guessing how many long (i.e. more than chars_per_line
+   characters) lines there will be.  To be completely correct, "list"
+   and friends should be rewritten to count characters and see where
+   things are wrapping, but that would be a fair amount of work.  */
+
+unsigned lines_to_list = 10;
+
 /* Line number of last line printed.  Default for various commands.
    current_source_line is usually, but not always, the same as this.  */
 
@@ -95,7 +107,7 @@ select_source_symtab (s)
       sal = sals.sals[0];
       free (sals.sals);
       current_source_symtab = sal.symtab;
-      current_source_line = max (sal.line - (lines_to_list () - 1), 1);
+      current_source_line = max (sal.line - (lines_to_list - 1), 1);
       if (current_source_symtab)
         return;
     }
@@ -364,13 +376,7 @@ source_info ()
   if (s->nlines)
     printf ("Contains %d lines\n", s->nlines);
 
-  switch (s->language) {
-  case language_c:
-    printf("Written in the C language.\n");
-  /* Add more cases here when -Wswitch complains... */
-  case language_unknown:
-    break;
-  }
+  printf("Source language %s.\n", language_str (s->language));
 }
 
 
@@ -503,7 +509,9 @@ open_source_file (s)
     {
       /* Replace a path entry of  $cdir  with the compilation directory name */
 #define        cdir_len        5
-      p = strstr (source_path, "$cdir");
+      /* We cast strstr's result in case an ANSIhole has made it const,
+        which produces a "required warning" when assigned to a nonconst. */
+      p = (char *)strstr (source_path, "$cdir");
       if (p && (p == path || p[-1] == ':')
            && (p[cdir_len] == ':' || p[cdir_len] == '\0')) {
        int len;
@@ -788,7 +796,7 @@ list_command (arg, from_tty)
       if (current_source_symtab == 0)
        error ("No default source file yet.  Do \"help list\".");
       print_source_lines (current_source_symtab, current_source_line,
-                         current_source_line + lines_to_list (), 0);
+                         current_source_line + lines_to_list, 0);
       return;
     }
 
@@ -798,7 +806,7 @@ list_command (arg, from_tty)
       if (current_source_symtab == 0)
        error ("No default source file yet.  Do \"help list\".");
       print_source_lines (current_source_symtab,
-                         max (first_line_listed - lines_to_list (), 1),
+                         max (first_line_listed - lines_to_list, 1),
                          first_line_listed, 0);
       return;
     }
@@ -878,14 +886,16 @@ list_command (arg, from_tty)
   if (*arg == '*')
     {
       if (sal.symtab == 0)
-       error ("No source file for address 0x%x.", sal.pc);
+       error ("No source file for address %s.", local_hex_string(sal.pc));
       sym = find_pc_function (sal.pc);
       if (sym)
-       printf ("0x%x is in %s (%s, line %d).\n",
-               sal.pc, SYMBOL_NAME (sym), sal.symtab->filename, sal.line);
+       printf ("%s is in %s (%s, line %d).\n",
+               local_hex_string(sal.pc), 
+               SYMBOL_NAME (sym), sal.symtab->filename, sal.line);
       else
-       printf ("0x%x is in %s, line %d.\n",
-               sal.pc, sal.symtab->filename, sal.line);
+       printf ("%s is in %s, line %d.\n",
+               local_hex_string(sal.pc), 
+               sal.symtab->filename, sal.line);
     }
 
   /* If line was not specified by just a line number,
@@ -905,18 +915,18 @@ list_command (arg, from_tty)
     error ("No default source file yet.  Do \"help list\".");
   if (dummy_beg)
     print_source_lines (sal_end.symtab,
-                       max (sal_end.line - (lines_to_list () - 1), 1),
+                       max (sal_end.line - (lines_to_list - 1), 1),
                        sal_end.line + 1, 0);
   else if (sal.symtab == 0)
     error ("No default source file yet.  Do \"help list\".");
   else if (no_end)
     print_source_lines (sal.symtab,
-                       max (sal.line - (lines_to_list () / 2), 1),
-                       sal.line + (lines_to_list() / 2), 0);
+                       max (sal.line - (lines_to_list / 2), 1),
+                       sal.line + (lines_to_list / 2), 0);
   else
     print_source_lines (sal.symtab, sal.line,
                        (dummy_end
-                        ? sal.line + lines_to_list ()
+                        ? sal.line + lines_to_list
                         : sal_end.line + 1),
                        0);
 }
@@ -965,11 +975,14 @@ line_info (arg, from_tty)
          && find_line_pc_range (sal.symtab, sal.line, &start_pc, &end_pc))
        {
          if (start_pc == end_pc)
-           printf ("Line %d of \"%s\" is at pc 0x%x but contains no code.\n",
-                   sal.line, sal.symtab->filename, start_pc);
+           printf ("Line %d of \"%s\" is at pc %s but contains no code.\n",
+                   sal.line, sal.symtab->filename, local_hex_string(start_pc));
          else
-           printf ("Line %d of \"%s\" starts at pc 0x%x and ends at 0x%x.\n",
-                   sal.line, sal.symtab->filename, start_pc, end_pc);
+           printf ("Line %d of \"%s\" starts at pc %s",
+                   sal.line, sal.symtab->filename, 
+                   local_hex_string(start_pc));
+           printf (" and ends at %s.\n",
+                   local_hex_string(end_pc));
          /* x/i should display this line's code.  */
          set_next_address (start_pc);
          /* Repeating "info line" should do the following line.  */
@@ -1045,7 +1058,7 @@ forward_search_command (regex, from_tty)
        fclose (stream);
        print_source_lines (current_source_symtab,
                           line, line+1, 0);
-       current_source_line = max (line - lines_to_list () / 2, 1);
+       current_source_line = max (line - lines_to_list / 2, 1);
        return;
       }
     line++;
@@ -1118,7 +1131,7 @@ reverse_search_command (regex, from_tty)
          fclose (stream);
          print_source_lines (current_source_symtab,
                              line, line+1, 0);
-         current_source_line = max (line - lines_to_list () / 2, 1);
+         current_source_line = max (line - lines_to_list / 2, 1);
          return;
        }
       line--;
@@ -1189,5 +1202,11 @@ Lines can be specified in these ways:\n\
   *ADDRESS, to list around the line containing that address.\n\
 With two args if one is empty it stands for ten lines away from the other arg.");
   add_com_alias ("l", "list", class_files, 0);
-}
 
+  add_show_from_set
+    (add_set_cmd ("listsize", class_support, var_uinteger,
+                 (char *)&lines_to_list,
+       "Set number of source lines gdb will list by default.",
+                 &setlist),
+     &showlist);
+}