aboutsummaryrefslogtreecommitdiff
path: root/gdb/ax-gdb.c
diff options
context:
space:
mode:
authorJoel Brobecker <brobecker@gnat.com>2012-03-14 01:38:30 +0000
committerJoel Brobecker <brobecker@gnat.com>2012-03-14 01:38:30 +0000
commitaf381b8cf9f3fe6026332655ae7d2abb67ecd063 (patch)
tree49ec829fa80c6b955a9c8aab9069222dc8f97a8d /gdb/ax-gdb.c
parenta776f595bf31eff97c92c528f965c08ac0944696 (diff)
downloadgdb-af381b8cf9f3fe6026332655ae7d2abb67ecd063.zip
gdb-af381b8cf9f3fe6026332655ae7d2abb67ecd063.tar.gz
gdb-af381b8cf9f3fe6026332655ae7d2abb67ecd063.tar.bz2
ax-gdb.c: Add handling of TYPE_CODE_RANGE types.
This patch fixes an error that occurs with GDB + GDBserver when trying to insert a breakpoint with a condition that involves a range type. For instance: type INT_T is range 0 .. 1000; INT_VAR : INT_T := 12; And then trying to insert the breakpoint: (gdb) break foo.adb:18 if int_var > 15 Breakpoint 1 at 0x4021eb: file foo.adb, line 18. (gdb) cont Continuing. /[...]/ax-gdb.c:560: internal-error: gen_fetch: bad type code A problem internal to GDB has been detected, further debugging may prove unreliable. Quit this debugging session? (y or n) This patch fixes the problem by adding handling for range types in gen_fetch. gdb/ChangeLog: * ax-gdb.c (gen_fetch): Add handling for TYPE_CODE_RANGE types.
Diffstat (limited to 'gdb/ax-gdb.c')
-rw-r--r--gdb/ax-gdb.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/gdb/ax-gdb.c b/gdb/ax-gdb.c
index bd81338..126a4e7 100644
--- a/gdb/ax-gdb.c
+++ b/gdb/ax-gdb.c
@@ -515,6 +515,9 @@ gen_fetch (struct agent_expr *ax, struct type *type)
ax_trace_quick (ax, TYPE_LENGTH (type));
}
+ if (TYPE_CODE (type) == TYPE_CODE_RANGE)
+ type = TYPE_TARGET_TYPE (type);
+
switch (TYPE_CODE (type))
{
case TYPE_CODE_PTR: