summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoel Brobecker <brobecker@gnat.com>2012-03-14 01:38:29 +0000
committerJoel Brobecker <brobecker@gnat.com>2012-03-14 01:38:29 +0000
commit8b1db1260675f235c66446533c4b224d644ea51f (patch)
tree65af0abdc219f400307000d3c238043d45a8712a
parent820dd2b62a2f176874c5b08c114d89d70ca3880f (diff)
downloadgdb-8b1db1260675f235c66446533c4b224d644ea51f.tar.gz
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.
-rw-r--r--gdb/ChangeLog4
-rw-r--r--gdb/ax-gdb.c3
2 files changed, 7 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 8004bd9f74a..d941d33ac93 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,9 @@
2012-03-13 Joel Brobecker <brobecker@adacore.com>
+ * ax-gdb.c (gen_fetch): Add handling for TYPE_CODE_RANGE types.
+
+2012-03-13 Joel Brobecker <brobecker@adacore.com>
+
* aix-thread.c (supply_fprs): Make more consistent with fill_fprs.
2012-03-13 Chris January <chris.january@allinea.com>
diff --git a/gdb/ax-gdb.c b/gdb/ax-gdb.c
index bd813380fe2..126a4e74d12 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: