This is the mail archive of the
gdb-cvs@sourceware.org
mailing list for the GDB project.
[binutils-gdb] Treat OP_F77_UNDETERMINED_ARGLIST as OP_FUNCALL
- From: Yao Qi <qiyao at sourceware dot org>
- To: gdb-cvs at sourceware dot org
- Date: 6 Feb 2018 17:14:19 -0000
- Subject: [binutils-gdb] Treat OP_F77_UNDETERMINED_ARGLIST as OP_FUNCALL
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=bca65a2394ce11bb4a0b001b8a986961c2e84881
commit bca65a2394ce11bb4a0b001b8a986961c2e84881
Author: Yao Qi <yao.qi@linaro.org>
Date: Tue Feb 6 17:12:12 2018 +0000
Treat OP_F77_UNDETERMINED_ARGLIST as OP_FUNCALL
When I debug some fortran expression parsing, I got
(gdb) set debug expression 1
(gdb) p intvla(5,5,5)
Dump of expression @ 0x205fa80, before conversion to prefix form:
Language fortran, 19 elements, 16 bytes each.
Index Opcode Hex Value String Value
0 OP_VAR_VALUE 40 (...............
1 <unknown 31863232> 31863232 .1..............
....
14 BINOP_REM 5 ................
15 OP_LONG 38 &...............
16 OP_F77_UNDETERMINED_ARGLIST 48 0...............
17 BINOP_MUL 3 ................
18 OP_F77_UNDETERMINED_ARGLIST 48 0...............
Dump of expression @ 0x205fa80, after conversion to prefix form:
Expression: `Invalid expression
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
This patch fixes this problem by handling OP_F77_UNDETERMINED_ARGLIST in
the same way as handling OP_FUNCALL. With this patch applied, the output
looks better,
(gdb) p intvla (5,5,5)
Dump of expression @ 0x2d75590, before conversion to prefix form:
Language fortran, 19 elements, 16 bytes each.
Index Opcode Hex Value String Value
0 OP_VAR_VALUE 40 (...............
....
16 OP_F77_UNDETERMINED_ARGLIST 48 0...............
17 BINOP_MUL 3 ................
18 OP_F77_UNDETERMINED_ARGLIST 48 0...............
Dump of expression @ 0x2d75590, after conversion to prefix form:
Expression: `vla_primitives::intvla (5, 5, 5)'
Language fortran, 19 elements, 16 bytes each.
0 OP_F77_UNDETERMINED_ARGLIST Number of args: 3
3 OP_VAR_VALUE Block @0x297e1c0, symbol @0x297cd50 (intvla)
7 OP_LONG Type @0x2976900 (int), value 5 (0x5)
11 OP_LONG Type @0x2976900 (int), value 5 (0x5)
15 OP_LONG Type @0x2976900 (int), value 5 (0x5)
gdb:
2018-02-06 Yao Qi <yao.qi@linaro.org>
* expprint.c (print_subexp_standard): Handle
OP_F77_UNDETERMINED_ARGLIST.
(dump_subexp_body_standard): Likewise.
Diff:
---
gdb/ChangeLog | 6 ++++++
gdb/expprint.c | 3 ++-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index bc635d6..06b94b2 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+2018-02-06 Yao Qi <yao.qi@linaro.org>
+
+ * expprint.c (print_subexp_standard): Handle
+ OP_F77_UNDETERMINED_ARGLIST.
+ (dump_subexp_body_standard): Likewise.
+
2018-02-05 Alan Hayward <alan.hayward@arm.com>
* target-descriptions.c (tdesc_element_visitor) Add empty
diff --git a/gdb/expprint.c b/gdb/expprint.c
index ac5ae0f..9d1884f 100644
--- a/gdb/expprint.c
+++ b/gdb/expprint.c
@@ -186,6 +186,7 @@ print_subexp_standard (struct expression *exp, int *pos,
return;
case OP_FUNCALL:
+ case OP_F77_UNDETERMINED_ARGLIST:
(*pos) += 2;
nargs = longest_to_int (exp->elts[pc + 1].longconst);
print_subexp (exp, pos, stream, PREC_SUFFIX);
@@ -923,6 +924,7 @@ dump_subexp_body_standard (struct expression *exp,
elt += 2;
break;
case OP_FUNCALL:
+ case OP_F77_UNDETERMINED_ARGLIST:
{
int i, nargs;
@@ -1123,7 +1125,6 @@ dump_subexp_body_standard (struct expression *exp,
default:
case OP_NULL:
case MULTI_SUBSCRIPT:
- case OP_F77_UNDETERMINED_ARGLIST:
case OP_COMPLEX:
case OP_BOOL:
case OP_M2_STRING: