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.
This commit is contained in:
Joel Brobecker 2012-03-14 01:38:30 +00:00
parent a776f595bf
commit af381b8cf9
2 changed files with 7 additions and 0 deletions

View File

@ -1,3 +1,7 @@
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.

View File

@ -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: