2013-03-12 Yao Qi <yao@codesourcery.com>
authorHui Zhu <teawater@gmail.com>
Tue, 12 Mar 2013 14:44:56 +0000 (14:44 +0000)
committerHui Zhu <teawater@gmail.com>
Tue, 12 Mar 2013 14:44:56 +0000 (14:44 +0000)
    Hui Zhu  <hui@codesourcery.com>

* dwarf2loc.c (access_memory): Change nbits to nbytes in gdb_assert.
(dwarf2_compile_expr_to_ax): Call access_memory in DW_OP_deref and
DW_OP_deref_size.

gdb/ChangeLog
gdb/dwarf2loc.c

index 6bb26b57266ffc48f67fdf7d616789ba5270b6d8..e7eb57a1a5148c8a7e0762e37a0e02b7b00cfc2d 100644 (file)
@@ -1,3 +1,10 @@
+2013-03-12  Yao Qi  <yao@codesourcery.com>
+           Hui Zhu  <hui@codesourcery.com>
+
+       * dwarf2loc.c (access_memory): Change nbits to nbytes in gdb_assert.
+       (dwarf2_compile_expr_to_ax): Call access_memory in DW_OP_deref and
+       DW_OP_deref_size.
+
 2013-03-12  Paul Hilfinger  <hilfingr@adacore.com>
 
         * ada-lex.l (rules): Only recognize 'thread' as a
index f300df2ac1cdd5dd9d47d066f68cc91f762b6574..f6fa4200a4229e125854dd048be7abfac4fbede1 100644 (file)
@@ -2539,7 +2539,7 @@ access_memory (struct gdbarch *arch, struct agent_expr *expr, ULONGEST nbits)
 {
   ULONGEST nbytes = (nbits + 7) / 8;
 
-  gdb_assert (nbits > 0 && nbits <= sizeof (LONGEST));
+  gdb_assert (nbytes > 0 && nbytes <= sizeof (LONGEST));
 
   if (trace_kludge)
     ax_trace_quick (expr, nbytes);
@@ -2933,26 +2933,10 @@ dwarf2_compile_expr_to_ax (struct agent_expr *expr, struct axs_value *loc,
            else
              size = addr_size;
 
-           switch (size)
-             {
-             case 8:
-               ax_simple (expr, aop_ref8);
-               break;
-             case 16:
-               ax_simple (expr, aop_ref16);
-               break;
-             case 32:
-               ax_simple (expr, aop_ref32);
-               break;
-             case 64:
-               ax_simple (expr, aop_ref64);
-               break;
-             default:
-               /* Note that get_DW_OP_name will never return
-                  NULL here.  */
-               error (_("Unsupported size %d in %s"),
-                      size, get_DW_OP_name (op));
-             }
+           if (size != 1 && size != 2 && size != 4 && size != 8)
+             error (_("Refn doesn't support size %d"),
+                    size * TARGET_CHAR_BIT);
+           access_memory (arch, expr, size * TARGET_CHAR_BIT);
          }
          break;