From: Elena Zannoni <ezannoni@redhat.com>
To: Kevin Buettner <kevinb@redhat.com>
Cc: gdb-patches@sources.redhat.com
Subject: Re: [RFA] dwarf2expr.c: Prepare for eventual DW_OP_piece support
Date: Wed, 07 May 2003 23:01:00 -0000 [thread overview]
Message-ID: <16057.37219.690886.548761@localhost.redhat.com> (raw)
In-Reply-To: <1030507224112.ZM32208@localhost.localdomain>
Kevin Buettner writes:
> Ping!
>
> --- Forwarded mail from Kevin Buettner <kevinb@redhat.com>
>
> Date: Wed, 23 Apr 2003 18:05:36 -0700
> From: Kevin Buettner <kevinb@redhat.com>
> To: gdb-patches@sources.redhat.com
> Subject: [RFA] dwarf2expr.c: Prepare for eventual DW_OP_piece support
>
> The patch below prepares execute_stack_op() for eventual DW_OP_piece
> support.
>
> The relatively obvious part of the patch is the revision of the tests
> which force DW_OP_reg operations to be used alone. These tests have
> been revised to permit a DW_OP_piece operator to follow a DW_OP_reg*
> operator.
>
> The not so obvious part concerns the initialization of ctx->in_reg.
> When a DW_OP_piece case is eventually added, it will need to know
> whether the thing on the stack is a register or some other kind of
> location expression. At the moment, the only indication we have of
> what this thing is is being cleared each time through the loop. Moving
> it out of the loop will allow a DW_OP_piece case to use this information
> for determining how to proceed.
>
> Okay?
>
ok.
elena
> * dwarf2expr.c (execute_stack_op): Move ``ctx->in_reg'' initialization
> out of loop. Allow DW_OP_reg0 ... DW_OP_reg31 and DW_OP_regx to
> be used in conjuction with DW_OP_piece. Revise error message
> accordingly.
>
> Index: dwarf2expr.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/dwarf2expr.c,v
> retrieving revision 1.6
> diff -u -p -r1.6 dwarf2expr.c
> --- dwarf2expr.c 13 Apr 2003 15:53:44 -0000 1.6
> +++ dwarf2expr.c 24 Apr 2003 00:36:43 -0000
> @@ -228,6 +227,8 @@ static void
> execute_stack_op (struct dwarf_expr_context *ctx, unsigned char *op_ptr,
> unsigned char *op_end)
> {
> + ctx->in_reg = 0;
> +
> while (op_ptr < op_end)
> {
> enum dwarf_location_atom op = *op_ptr++;
> @@ -236,8 +237,6 @@ execute_stack_op (struct dwarf_expr_cont
> LONGEST offset;
> int bytes_read;
>
> - ctx->in_reg = 0;
> -
> switch (op)
> {
> case DW_OP_lit0:
> @@ -355,10 +354,9 @@ execute_stack_op (struct dwarf_expr_cont
> case DW_OP_reg29:
> case DW_OP_reg30:
> case DW_OP_reg31:
> - /* NOTE: in the presence of DW_OP_piece this check is incorrect. */
> - if (op_ptr != op_end)
> + if (op_ptr != op_end && *op_ptr != DW_OP_piece)
> error ("DWARF-2 expression error: DW_OP_reg operations must be "
> - "used alone.");
> + "used either alone or in conjuction with DW_OP_piece.");
>
> result = op - DW_OP_reg0;
> ctx->in_reg = 1;
> @@ -367,9 +365,9 @@ execute_stack_op (struct dwarf_expr_cont
>
> case DW_OP_regx:
> op_ptr = read_uleb128 (op_ptr, op_end, ®);
> - if (op_ptr != op_end)
> + if (op_ptr != op_end && *op_ptr != DW_OP_piece)
> error ("DWARF-2 expression error: DW_OP_reg operations must be "
> - "used alone.");
> + "used either alone or in conjuction with DW_OP_piece.");
>
> result = reg;
> ctx->in_reg = 1;
>
>
> --- End of forwarded mail from Kevin Buettner <kevinb@redhat.com>
next prev parent reply other threads:[~2003-05-07 23:01 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-04-24 3:46 Kevin Buettner
2003-04-24 5:54 ` Kevin Buettner
2003-04-24 15:53 ` Daniel Jacobowitz
2003-05-07 22:41 ` Kevin Buettner
2003-05-07 23:01 ` Elena Zannoni [this message]
[not found] ` <ezannoni@redhat.com>
2003-05-14 22:48 ` Kevin Buettner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=16057.37219.690886.548761@localhost.redhat.com \
--to=ezannoni@redhat.com \
--cc=gdb-patches@sources.redhat.com \
--cc=kevinb@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox