This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH] Handle OP_STRING in dump_subexp_body_standard
- From: Simon Marchi <simon dot marchi at ericsson dot com>
- To: GDB Patches <gdb-patches at sourceware dot org>
- Date: Tue, 8 Jul 2014 11:28:32 -0400
- Subject: Re: [PATCH] Handle OP_STRING in dump_subexp_body_standard
- Authentication-results: sourceware.org; auth=none
- References: <1403189133-7667-1-git-send-email-simon dot marchi at ericsson dot com>
On 14-06-19 10:45 AM, Simon Marchi wrote:
> 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-06-19 Simon Marchi <simon.marchi@ericsson.com>
>
> * expprint.c (dump_subexp_body_standard): Handle OP_STRING.
> ---
> gdb/expprint.c | 19 ++++++++++++++++++-
> 1 file changed, 18 insertions(+), 1 deletion(-)
>
> diff --git a/gdb/expprint.c b/gdb/expprint.c
> index 97188ed..60971a5 100644
> --- a/gdb/expprint.c
> +++ b/gdb/expprint.c
> @@ -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].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:
Ping!