* arm-wince-tdep.c (ARM_WINCE_JB_PC): Change to 10.
[deliverable/binutils-gdb.git] / gdb / tracepoint.c
index a2a073d0d5fa7b3d30159fc23218fcd3b04d7e17..1931e6c4cff70f307150cd9275512d59bc12681f 100644 (file)
@@ -7,7 +7,7 @@
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
+   the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
@@ -16,9 +16,7 @@
    GNU General Public License for more details.
 
    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., 51 Franklin Street, Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "defs.h"
 #include "symtab.h"
@@ -480,7 +478,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            ");
@@ -490,7 +488,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, "                   ");
@@ -502,7 +500,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
@@ -1162,7 +1160,7 @@ add_register (struct collection_list *collection, unsigned int regno)
 {
   if (info_verbose)
     printf_filtered ("collect register %d\n", regno);
-  if (regno > (8 * sizeof (collection->regs_mask)))
+  if (regno >= (8 * sizeof (collection->regs_mask)))
     error (_("Internal: register number %d too large for tracepoint"),
           regno);
   collection->regs_mask[regno / 8] |= 1 << (regno % 8);
@@ -1489,7 +1487,10 @@ stringify_collection_list (struct collection_list *list, char *string)
   (*str_list)[ndx] = NULL;
 
   if (ndx == 0)
-    return NULL;
+    {
+      free (str_list);
+      return NULL;
+    }
   else
     return *str_list;
 }
@@ -1539,7 +1540,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)
     {
@@ -1601,11 +1603,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 */
This page took 0.024649 seconds and 4 git commands to generate.