summaryrefslogtreecommitdiff
path: root/gdb/dwarf2loc.c
diff options
context:
space:
mode:
authorHui Zhu <teawater@gmail.com>2013-03-12 14:44:53 +0000
committerHui Zhu <teawater@gmail.com>2013-03-12 14:44:53 +0000
commit252bf8675075ff9aeb334e751c95b4054178de6e (patch)
treea78da28ef377f93d247d1d15c91e0060acfbd293 /gdb/dwarf2loc.c
parent9f8dcb69d91a9850b4db6e17fc3fef53bb2ef850 (diff)
downloadgdb-252bf8675075ff9aeb334e751c95b4054178de6e.tar.gz
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.
Diffstat (limited to 'gdb/dwarf2loc.c')
-rw-r--r--gdb/dwarf2loc.c26
1 files changed, 5 insertions, 21 deletions
diff --git a/gdb/dwarf2loc.c b/gdb/dwarf2loc.c
index f300df2ac1c..f6fa4200a42 100644
--- a/gdb/dwarf2loc.c
+++ b/gdb/dwarf2loc.c
@@ -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;