2007-07-03 Markus Deuling <deuling@de.ibm.com>
[deliverable/binutils-gdb.git] / gdb / tracepoint.c
index 8484dafeb67cb1b9a520dc4a3ef33c6fbf15a96b..b9b9f5ee8c6ba2dbc46c9127d434aaee21407e95 100644 (file)
@@ -1,7 +1,7 @@
 /* Tracing functionality for remote targets in custom GDB protocol
 
-   Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free
-   Software Foundation, Inc.
+   Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+   2007 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -68,7 +68,6 @@
 extern void (*deprecated_readline_begin_hook) (char *, ...);
 extern char *(*deprecated_readline_hook) (char *);
 extern void (*deprecated_readline_end_hook) (void);
-extern void x_command (char *, int);
 extern int addressprint;       /* Print machine addresses? */
 
 /* GDB commands implemented in other modules:
@@ -481,7 +480,7 @@ tracepoints_info (char *tpnum_exp, int from_tty)
          printf_filtered ("Num Enb ");
          if (addressprint)
            {
-             if (TARGET_ADDR_BIT <= 32)
+             if (gdbarch_addr_bit (current_gdbarch) <= 32)
                printf_filtered ("Address    ");
              else
                printf_filtered ("Address            ");
@@ -491,7 +490,7 @@ tracepoints_info (char *tpnum_exp, int from_tty)
       strcpy (wrap_indent, "                           ");
       if (addressprint)
        {
-         if (TARGET_ADDR_BIT <= 32)
+         if (gdbarch_addr_bit (current_gdbarch) <= 32)
            strcat (wrap_indent, "           ");
          else
            strcat (wrap_indent, "                   ");
@@ -503,7 +502,7 @@ tracepoints_info (char *tpnum_exp, int from_tty)
        {
          char *tmp;
 
-         if (TARGET_ADDR_BIT <= 32)
+         if (gdbarch_addr_bit (current_gdbarch) <= 32)
            tmp = hex_string_custom (t->address & (CORE_ADDR) 0xffffffff, 
                                     8);
          else
@@ -1540,7 +1539,8 @@ encode_actions (struct tracepoint *t, char ***tdp_actions,
   *tdp_actions = NULL;
   *stepping_actions = NULL;
 
-  TARGET_VIRTUAL_FRAME_POINTER (t->address, &frame_reg, &frame_offset);
+  gdbarch_virtual_frame_pointer (current_gdbarch, 
+                                t->address, &frame_reg, &frame_offset);
 
   for (action = t->actions; action; action = action->next)
     {
@@ -1566,7 +1566,7 @@ encode_actions (struct tracepoint *t, char ***tdp_actions,
 
              if (0 == strncasecmp ("$reg", action_exp, 4))
                {
-                 for (i = 0; i < NUM_REGS; i++)
+                 for (i = 0; i < gdbarch_num_regs (current_gdbarch); i++)
                    add_register (collect, i);
                  action_exp = strchr (action_exp, ',');        /* more? */
                }
@@ -1602,11 +1602,20 @@ encode_actions (struct tracepoint *t, char ***tdp_actions,
                  switch (exp->elts[0].opcode)
                    {
                    case OP_REGISTER:
-                     i = exp->elts[1].longconst;
-                     if (info_verbose)
-                       printf_filtered ("OP_REGISTER: ");
-                     add_register (collect, i);
-                     break;
+                     {
+                       const char *name = &exp->elts[2].string;
+
+                       i = frame_map_name_to_regnum (deprecated_safe_get_selected_frame (),
+                                                     name, strlen (name));
+                       if (i == -1)
+                         internal_error (__FILE__, __LINE__,
+                                         _("Register $%s not available"),
+                                         name);
+                       if (info_verbose)
+                         printf_filtered ("OP_REGISTER: ");
+                       add_register (collect, i);
+                       break;
+                     }
 
                    case UNOP_MEMVAL:
                      /* safe because we know it's a simple expression */
@@ -1970,9 +1979,8 @@ finish_tfind_command (char **msg,
        error (_("Bogus reply from target: %s"), reply);
       }
 
-  flush_cached_frames ();
+  reinit_frame_cache ();
   registers_changed ();
-  select_frame (get_current_frame ());
   set_traceframe_num (target_frameno);
   set_tracepoint_num (target_tracept);
   if (target_frameno == -1)
@@ -2445,7 +2453,8 @@ scope_info (char *args, int from_tty)
              break;
            case LOC_REGISTER:
              printf_filtered ("a local variable in register $%s",
-                              REGISTER_NAME (SYMBOL_VALUE (sym)));
+                              gdbarch_register_name
+                                (current_gdbarch, SYMBOL_VALUE (sym)));
              break;
            case LOC_ARG:
            case LOC_LOCAL_ARG:
@@ -2462,11 +2471,13 @@ scope_info (char *args, int from_tty)
              break;
            case LOC_REGPARM:
              printf_filtered ("an argument in register $%s",
-                              REGISTER_NAME (SYMBOL_VALUE (sym)));
+                              gdbarch_register_name
+                                (current_gdbarch, SYMBOL_VALUE (sym)));
              break;
            case LOC_REGPARM_ADDR:
              printf_filtered ("the address of an argument, in register $%s",
-                              REGISTER_NAME (SYMBOL_VALUE (sym)));
+                              gdbarch_register_name
+                                (current_gdbarch, SYMBOL_VALUE (sym)));
              break;
            case LOC_TYPEDEF:
              printf_filtered ("a typedef.\n");
@@ -2484,12 +2495,14 @@ scope_info (char *args, int from_tty)
            case LOC_BASEREG:
              printf_filtered ("a variable at offset %ld from register $%s",
                               SYMBOL_VALUE (sym),
-                              REGISTER_NAME (SYMBOL_BASEREG (sym)));
+                              gdbarch_register_name
+                                (current_gdbarch, SYMBOL_BASEREG (sym)));
              break;
            case LOC_BASEREG_ARG:
              printf_filtered ("an argument at offset %ld from register $%s",
                               SYMBOL_VALUE (sym),
-                              REGISTER_NAME (SYMBOL_BASEREG (sym)));
+                              gdbarch_register_name
+                                (current_gdbarch, SYMBOL_BASEREG (sym)));
              break;
            case LOC_UNRESOLVED:
              msym = lookup_minimal_symbol (DEPRECATED_SYMBOL_NAME (sym), 
@@ -2581,7 +2594,8 @@ trace_dump_command (char *args, int from_tty)
      to the tracepoint PC.  If not, then the current frame was
      collected during single-stepping.  */
 
-  stepping_frame = (t->address != (read_pc () - DECR_PC_AFTER_BREAK));
+  stepping_frame = (t->address != (read_pc () - gdbarch_decr_pc_after_break
+                                                 (current_gdbarch)));
 
   for (action = t->actions; action; action = action->next)
     {
This page took 0.02943 seconds and 4 git commands to generate.