Handle OP_STRING in dump_subexp_body_standard
For some reason, OP_STRING is not handled in dump_subexp_body_standard. This makes the output of "set debug expression 1" very bad when a string is involved. Example: (gdb) set debug expression 1 (gdb) print "hello" ... (random garbage, possibly segfault) This commit handles OP_STRING and skips the appropriate number of exp elements. The line corresponding to the string now looks like: 0 OP_STRING Language-specific string type: 0 gdb/ChangeLog: 2014-07-15 Simon Marchi <simon.marchi@ericsson.com> * expprint.c (dump_subexp_body_standard): Handle OP_STRING.
This commit is contained in:
parent
ce9e3fe795
commit
2d40be181f
2 changed files with 22 additions and 1 deletions
|
@ -1,3 +1,7 @@
|
|||
2014-07-15 Simon Marchi <simon.marchi@ericsson.com>
|
||||
|
||||
* expprint.c (dump_subexp_body_standard): Handle OP_STRING.
|
||||
|
||||
2014-07-14 Edjunior Barbosa Machado <emachado@linux.vnet.ibm.com>
|
||||
|
||||
* ppc-linux-nat.c (ppc_linux_can_use_hw_breakpoint): Report no hardware
|
||||
|
|
|
@ -1011,12 +1011,29 @@ dump_subexp_body_standard (struct expression *exp,
|
|||
elt = dump_subexp (exp, stream, elt);
|
||||
}
|
||||
break;
|
||||
case OP_STRING:
|
||||
{
|
||||
LONGEST len = exp->elts[elt].longconst;
|
||||
LONGEST type = exp->elts[elt + 1].longconst;
|
||||
|
||||
fprintf_filtered (stream, "Language-specific string type: %s",
|
||||
plongest (type));
|
||||
|
||||
/* Skip length. */
|
||||
elt += 1;
|
||||
|
||||
/* Skip string content. */
|
||||
elt += BYTES_TO_EXP_ELEM (len);
|
||||
|
||||
/* Skip length and ending OP_STRING. */
|
||||
elt += 2;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
case OP_NULL:
|
||||
case MULTI_SUBSCRIPT:
|
||||
case OP_F77_UNDETERMINED_ARGLIST:
|
||||
case OP_COMPLEX:
|
||||
case OP_STRING:
|
||||
case OP_BOOL:
|
||||
case OP_M2_STRING:
|
||||
case OP_THIS:
|
||||
|
|
Loading…
Reference in a new issue