This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]