Tue Dec 2 14:53:09 1997 Michael Snyder (msnyder@cleaver.cygnus.com)
authorMichael Snyder <msnyder@vmware.com>
Tue, 2 Dec 1997 22:55:04 +0000 (22:55 +0000)
committerMichael Snyder <msnyder@vmware.com>
Tue, 2 Dec 1997 22:55:04 +0000 (22:55 +0000)
        * tracepoint.c: make "tdump" command handle literal memranges.

gdb/ChangeLog
gdb/tracepoint.c

index e5807eca0167300e865be9cae6c1088cce3b1323..f05aa01cc83fd598a9bcc272cd422e2cd0e16183 100644 (file)
@@ -1,3 +1,7 @@
+Tue Dec  2 14:53:09 1997  Michael Snyder  (msnyder@cleaver.cygnus.com)
+
+       * tracepoint.c: make "tdump" command handle literal memranges.
+
 Tue Dec  2 11:34:48 1997  Michael Snyder  (msnyder@cleaver.cygnus.com)
 
        * tracepoint.c: use "lookup_cmd" to parse actions commands
index 2869e9c14c9642ed291d6c429391ea14fe46d4ef..5276fcc7d383da13a2a36ad5e842a9b36dd9829e 100644 (file)
@@ -2306,11 +2306,6 @@ trace_dump_command (args, from_tty)
                  action_exp++;
 
                next_comma = strchr (action_exp, ',');
-               if (next_comma)
-                 {
-                   make_cleanup (replace_comma, next_comma);
-                   *next_comma = '\0';
-                 }
 
                if      (0 == strncasecmp (action_exp, "$reg", 4))
                  registers_info (NULL, from_tty);
@@ -2318,8 +2313,30 @@ trace_dump_command (args, from_tty)
                  locals_info (NULL, from_tty);
                else if (0 == strncasecmp (action_exp, "$arg", 4))
                  args_info (NULL, from_tty);
+               else if (action_exp[0] == '$' && action_exp[1] == '(')
+                 { /* memrange */
+                   long typecode, size;
+                   bfd_signed_vma offset;
+                   char fmt[40];
+
+                   action_exp = parse_and_eval_memrange (action_exp,
+                                                         read_pc (),
+                                                         &typecode, 
+                                                         &offset,
+                                                         &size);
+                   if (typecode != 0 && typecode != -1)
+                     offset += read_register (typecode);
+                   sprintf (fmt, "/%dxb 0x%x", size, offset);
+                   x_command (fmt, from_tty);
+                   next_comma = strchr (action_exp, ',');
+                 }
                else
-                 {
+                 { /* variable */
+                   if (next_comma)
+                     {
+                       make_cleanup (replace_comma, next_comma);
+                       *next_comma = '\0';
+                     }
                    printf_filtered ("%s = ", action_exp);
                    output_command (action_exp, from_tty);
                    printf_filtered ("\n");