mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-03-13 13:49:00 +08:00
Make gdb expression debugging handle OP_F90_RANGE
print_subexp_standard and dump_subexp_body_standard did not handle OP_F90_RANGE. Attempting to dump an expression using this opcode would fail. This patch adds support for this opcode to these functions. 2016-05-17 Tom Tromey <tom@tromey.com> * expprint.c: Include f-lang.h. (print_subexp_standard, dump_subexp_body_standard): Handle OP_F90_RANGE.
This commit is contained in:
parent
9ab0bb2a67
commit
e4b8a1c839
@ -1,3 +1,9 @@
|
||||
2016-05-17 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* expprint.c: Include f-lang.h.
|
||||
(print_subexp_standard, dump_subexp_body_standard): Handle
|
||||
OP_F90_RANGE.
|
||||
|
||||
2016-05-17 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* Makefile.in (init.c): Search .y files for initialization
|
||||
|
@ -29,6 +29,7 @@
|
||||
#include "block.h"
|
||||
#include "objfiles.h"
|
||||
#include "valprint.h"
|
||||
#include "f-lang.h"
|
||||
|
||||
#include <ctype.h>
|
||||
|
||||
@ -559,6 +560,26 @@ print_subexp_standard (struct expression *exp, int *pos,
|
||||
return;
|
||||
}
|
||||
|
||||
case OP_F90_RANGE:
|
||||
{
|
||||
enum f90_range_type range_type;
|
||||
|
||||
range_type = (enum f90_range_type)
|
||||
longest_to_int (exp->elts[pc + 1].longconst);
|
||||
*pos += 2;
|
||||
|
||||
fputs_filtered ("RANGE(", stream);
|
||||
if (range_type == HIGH_BOUND_DEFAULT
|
||||
|| range_type == NONE_BOUND_DEFAULT)
|
||||
print_subexp (exp, pos, stream, PREC_ABOVE_COMMA);
|
||||
fputs_filtered ("..", stream);
|
||||
if (range_type == LOW_BOUND_DEFAULT
|
||||
|| range_type == NONE_BOUND_DEFAULT)
|
||||
print_subexp (exp, pos, stream, PREC_ABOVE_COMMA);
|
||||
fputs_filtered (")", stream);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Default ops */
|
||||
|
||||
default:
|
||||
@ -1025,6 +1046,42 @@ dump_subexp_body_standard (struct expression *exp,
|
||||
elt += 2;
|
||||
}
|
||||
break;
|
||||
case OP_F90_RANGE:
|
||||
{
|
||||
enum f90_range_type range_type;
|
||||
|
||||
range_type = (enum f90_range_type)
|
||||
longest_to_int (exp->elts[elt].longconst);
|
||||
elt += 2;
|
||||
|
||||
switch (range_type)
|
||||
{
|
||||
case BOTH_BOUND_DEFAULT:
|
||||
fputs_filtered ("Range '..'", stream);
|
||||
break;
|
||||
case LOW_BOUND_DEFAULT:
|
||||
fputs_filtered ("Range '..EXP'", stream);
|
||||
break;
|
||||
case HIGH_BOUND_DEFAULT:
|
||||
fputs_filtered ("Range 'EXP..'", stream);
|
||||
break;
|
||||
case NONE_BOUND_DEFAULT:
|
||||
fputs_filtered ("Range 'EXP..EXP'", stream);
|
||||
break;
|
||||
default:
|
||||
fputs_filtered ("Invalid Range!", stream);
|
||||
break;
|
||||
}
|
||||
|
||||
if (range_type == HIGH_BOUND_DEFAULT
|
||||
|| range_type == NONE_BOUND_DEFAULT)
|
||||
elt = dump_subexp (exp, stream, elt);
|
||||
if (range_type == LOW_BOUND_DEFAULT
|
||||
|| range_type == NONE_BOUND_DEFAULT)
|
||||
elt = dump_subexp (exp, stream, elt);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
case OP_NULL:
|
||||
case MULTI_SUBSCRIPT:
|
||||
|
Loading…
x
Reference in New Issue
Block a user