Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Zoran Zaric via Gdb-patches <gdb-patches@sourceware.org>
To: Tom Tromey <tom@tromey.com>,
	Zoran Zaric via Gdb-patches <gdb-patches@sourceware.org>
Subject: Re: [PATCH 15/30] Add as_lval argument to expression evaluator
Date: Tue, 9 Feb 2021 15:25:02 +0000	[thread overview]
Message-ID: <eef01691-8411-3600-3a2c-8481b9773b15@amd.com> (raw)
In-Reply-To: <87mtwedypn.fsf@tromey.com>


> 
> Zoran> There are cases where the result of the expression evaluation is
> Zoran> expected to be in a form of a value and not location description.
> 
> Zoran> One place that has this requirement is dwarf_entry_parameter_to_value
> Zoran> function, but more are expected in the future. Until now, this
> Zoran> requirement was fulfilled by extending the evaluated expression with
> Zoran> a DW_OP_stack_value operation at the end.
> 
> Zoran> New implementation, introduces a new evaluation argument instead.
> 
> I like this idea.
> While reading this, though, I was wondering if the new parameter ought
> to be given to the dwarf_expr_context constructor, rather than passed to
> the evaluation method.
> 
> Tom
> 

Thank you Tom.

Originally, I had an idea to have one persistent evaluator object per 
architecture that could be called to evaluate a given expression at any 
time.

In this scenario the as_lval information needs to be an evaluation call 
argument because it could change from evaluation to evaluation.

People didn't seem to like the idea of persistent evaluator so I guess 
many more arguments (if not all) could be just moved to the constructor.

In the later patches, the whole dwarf_expr_context class is hidden in 
the expr.c file and we end up with just one dwarf2_eval_exp function 
(which can be renamed to dwarf2_evaluate) that internally creates the 
evaluator object and calls the evaluation.

In that sense, we can move most of the evaluation arguments to be a 
constructor arguments and just leave the expression stream and result 
types as evaluation method arguments.

If people really feel that there is no need for multiple calls to the 
same evaluator object in the future, I will be happy to change it in the 
next patch series.

Zoran

  reply	other threads:[~2021-02-09 15:25 UTC|newest]

Thread overview: 75+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-07 19:00 [PATCH 00/30] Allow location description on the DWARF stack Zoran Zaric via Gdb-patches
2020-12-07 19:00 ` [PATCH 01/30] Replace the symbol needs evaluator with a parser Zoran Zaric via Gdb-patches
2021-01-21 21:16   ` Tom Tromey
2021-01-21 21:48     ` Zoran Zaric via Gdb-patches
2021-02-23 14:15     ` Zoran Zaric via Gdb-patches
2020-12-07 19:00 ` [PATCH 02/30] Move frame context info to dwarf_expr_context Zoran Zaric via Gdb-patches
2021-01-21 21:23   ` Tom Tromey
2020-12-07 19:00 ` [PATCH 03/30] Remove get_frame_cfa from dwarf_expr_context Zoran Zaric via Gdb-patches
2021-01-21 21:23   ` Tom Tromey
2020-12-07 19:00 ` [PATCH 04/30] Move compilation unit info to dwarf_expr_context Zoran Zaric via Gdb-patches
2021-01-21 21:28   ` Tom Tromey
2021-02-23 14:21     ` Zoran Zaric via Gdb-patches
2020-12-07 19:00 ` [PATCH 05/30] Move dwarf_call " Zoran Zaric via Gdb-patches
2021-01-21 21:30   ` Tom Tromey
2020-12-07 19:00 ` [PATCH 06/30] Move get_object_address " Zoran Zaric via Gdb-patches
2021-01-21 21:31   ` Tom Tromey
2021-02-23 14:33     ` Zoran Zaric via Gdb-patches
2020-12-07 19:00 ` [PATCH 07/30] Move read_mem " Zoran Zaric via Gdb-patches
2021-01-21 21:34   ` Tom Tromey
2020-12-07 19:00 ` [PATCH 08/30] Move push_dwarf_reg_entry_value to expr.c Zoran Zaric via Gdb-patches
2021-01-21 21:35   ` Tom Tromey
2020-12-07 19:00 ` [PATCH 09/30] Inline get_reg_value method of dwarf_expr_context Zoran Zaric via Gdb-patches
2021-01-21 21:36   ` Tom Tromey
2020-12-07 19:00 ` [PATCH 10/30] Remove empty frame and full evaluators Zoran Zaric via Gdb-patches
2021-01-21 21:37   ` Tom Tromey
2020-12-07 19:00 ` [PATCH 11/30] Merge evaluate_for_locexpr_baton evaluator Zoran Zaric via Gdb-patches
2021-02-08 21:21   ` Tom Tromey
2020-12-07 19:00 ` [PATCH 12/30] Move piece_closure and its support to expr.c Zoran Zaric via Gdb-patches
2021-02-08 21:32   ` Tom Tromey
2021-02-09 14:53     ` Zoran Zaric via Gdb-patches
2020-12-07 19:00 ` [PATCH 13/30] Make DWARF evaluator return a single struct value Zoran Zaric via Gdb-patches
2021-02-08 21:35   ` Tom Tromey
2021-02-09 14:55     ` Zoran Zaric via Gdb-patches
2021-02-09 17:13       ` Tom Tromey
2020-12-07 19:00 ` [PATCH 14/30] Simplify dwarf_expr_context class interface Zoran Zaric via Gdb-patches
2021-02-08 21:38   ` Tom Tromey
2021-02-09 14:56     ` Zoran Zaric via Gdb-patches
2021-02-23 14:38     ` Zoran Zaric via Gdb-patches
2020-12-07 19:00 ` [PATCH 15/30] Add as_lval argument to expression evaluator Zoran Zaric via Gdb-patches
2021-02-08 21:41   ` Tom Tromey
2021-02-09 15:25     ` Zoran Zaric via Gdb-patches [this message]
2021-02-09 20:33       ` Tom Tromey
2020-12-07 19:00 ` [PATCH 16/30] Add new register access interface to expr.c Zoran Zaric via Gdb-patches
2021-02-09 19:37   ` Tom Tromey
2020-12-07 19:00 ` [PATCH 17/30] Add new memory " Zoran Zaric via Gdb-patches
2021-02-09 19:45   ` Tom Tromey
2021-02-23 15:35     ` Zoran Zaric via Gdb-patches
2020-12-07 19:00 ` [PATCH 18/30] Add new classes that model DWARF stack element Zoran Zaric via Gdb-patches
2021-02-08 21:54   ` Tom Tromey
2021-02-09 17:34     ` Zoran Zaric via Gdb-patches
2021-02-09 20:36       ` Tom Tromey
2021-02-09 21:07         ` Tom Tromey
2021-02-09 21:26           ` Zoran Zaric via Gdb-patches
2021-02-23 14:57             ` Zoran Zaric via Gdb-patches
2020-12-07 19:00 ` [PATCH 19/30] Add new location description access interface Zoran Zaric via Gdb-patches
2021-02-08 21:46   ` Tom Tromey
2021-02-09 16:00     ` Zoran Zaric via Gdb-patches
2021-02-09 17:30       ` Zoran Zaric via Gdb-patches
2021-02-23 14:49         ` Zoran Zaric via Gdb-patches
2020-12-07 19:00 ` [PATCH 20/30] Add dwarf_entry factory class to expr.c Zoran Zaric via Gdb-patches
2021-02-09 19:54   ` Tom Tromey
2020-12-07 19:00 ` [PATCH 21/30] Change DWARF stack to use new dwarf_entry classes Zoran Zaric via Gdb-patches
2021-02-09 20:11   ` Tom Tromey
2020-12-07 19:00 ` [PATCH 22/30] Remove dwarf_expr_context from expr.h interface Zoran Zaric via Gdb-patches
2020-12-07 19:00 ` [PATCH 23/30] Rename and update the piece_closure structure Zoran Zaric via Gdb-patches
2020-12-07 19:00 ` [PATCH 24/30] Move read_addr_from_reg function to frame.c Zoran Zaric via Gdb-patches
2020-12-07 19:00 ` [PATCH 25/30] Add frame info check to DW_OP_reg operations Zoran Zaric via Gdb-patches
2020-12-07 19:00 ` [PATCH 26/30] Remove DWARF expression composition check Zoran Zaric via Gdb-patches
2020-12-07 19:00 ` [PATCH 27/30] Add support for any location description in CFI Zoran Zaric via Gdb-patches
2020-12-07 19:00 ` [PATCH 28/30] Add DWARF operations for byte and bit offset Zoran Zaric via Gdb-patches
2020-12-07 19:00 ` [PATCH 29/30] Add support for DW_OP_LLVM_undefined operation Zoran Zaric via Gdb-patches
2020-12-07 19:00 ` [PATCH 30/30] Add support for nested composite locations Zoran Zaric via Gdb-patches
2020-12-08 14:48 ` [PATCH 00/30] Allow location description on the DWARF stack Metzger, Markus T via Gdb-patches
2020-12-08 16:17   ` Simon Marchi via Gdb-patches
2020-12-09  0:30   ` Tye, Tony via Gdb-patches

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=eef01691-8411-3600-3a2c-8481b9773b15@amd.com \
    --to=gdb-patches@sourceware.org \
    --cc=Zoran.Zaric@amd.com \
    --cc=tom@tromey.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