Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Joel Brobecker <brobecker@adacore.com>
To: Keven Boell <keven.boell@intel.com>
Cc: gdb-patches@sourceware.org, sanimir.agovic@intel.com
Subject: Re: [PATCH 01/23] dwarf: add dwarf3 DW_OP_push_object_address opcode
Date: Tue, 10 Jun 2014 09:54:00 -0000	[thread overview]
Message-ID: <20140610095445.GA5259@adacore.com> (raw)
In-Reply-To: <1401861266-6240-2-git-send-email-keven.boell@intel.com>

Hello Keven,

On Wed, Jun 04, 2014 at 07:54:04AM +0200, Keven Boell wrote:
> The opcode pushes the address of the object being evaluated. The semantic is
> equivalent to the implicit push of the base address of a data member location.
> 
> 2014-05-28  Sanimir Agovic  <sanimir.agovic@intel.com>
>             Keven Boell  <keven.boell@intel.com>
> 
> 	* dwarf2expr.c (execute_stack_op) <DW_OP_push_object_address>: New case.
> 	* dwarf2expr.h (struct dwarf_expr_context_funcs)
> 	<DW_OP_push_object_address>: New function pointer get_object_addr.
> 	* dwarf2loc.c (struct dwarf_expr_baton): Add obj_address.
> 	(dwarf_expr_get_obj_addr): New function.
> 	(struct dwarf_expr_context_funcs): Add
> 	dwarf_expr_get_obj_addr to dwarf_expr_ctx_funcs.
> 	(dwarf2_evaluate_loc_desc_full): Initialize baton.obj_address.
> 	(dwarf2_locexpr_baton_eval): Set baton.obj_address to addr.
> 	(needs_get_obj_addr): New function.
> 	(struct dwarf_expr_context_funcs): Add needs_get_obj_addr to
> 	needs_frame_ctx_funcs.

Some comments and questions below...

My main question is relative to the new "addr" field. In many cases,
inferior data is not referenced by address, but via  "struct value"
objects. And such objects are not necessarily addressable (Eg: they
live inside a register, or are broken down into pieces, etc).
I am wondering how things are going to be working in this case,
and in particular, for a code that have a struct value object,
and tries to resolve its type into a static type, how does it
provide an address, knowning that it does not always exist? Perhaps
we can make the assumption for such complex objects that when
a DW_OP_push_object_address is used, the object is always assumed
to be addressable? Whatever the answer is, I think it's worth
documentation clearly what the expectations are.  Also, it's interesting
to note that several callers currently pass 0 as the (unused) address,
but will eventually need to be update to pass the correct info.

> +/* DW_OP_push_object_address has a frame already passed thru.  */
                                                           ^^^^
Sorry to nit-pick on this one, but I'd rather we spelled words
correctly.

>  CORE_ADDR dwarf2_read_addr_index (struct dwarf2_per_cu_data *per_cu,
> diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
> index d58193e..2a0cfe4 100644
> --- a/gdb/gdbtypes.c
> +++ b/gdb/gdbtypes.c
> @@ -1646,7 +1646,7 @@ is_dynamic_type (struct type *type)
>  }
>  
>  static struct type *
> -resolve_dynamic_range (struct type *dyn_range_type)
> +resolve_dynamic_range (struct type *dyn_range_type, CORE_ADDR addr)

I just noticed that this function was missing a short description
(my bad), so I added it. Would you mind amending this patch to
update the description and add the meaning of ADDR?

-- 
Joel


  parent reply	other threads:[~2014-06-10  9:54 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-06-04  5:54 [PATCH 00/23] Fortran dynamic array support Keven Boell
2014-06-04  5:54 ` [PATCH 06/23] vla: reconstruct value to compute bounds of target type Keven Boell
2014-06-04  5:54 ` [PATCH 03/23] vla: introduce allocated/associated flags Keven Boell
2014-06-04  5:54 ` [PATCH 05/23] vla: make field selection work with vla Keven Boell
2014-06-04  5:54 ` [PATCH 16/23] test: correct ptype of dynamic arrays in Fortran Keven Boell
2014-06-04  5:54 ` [PATCH 07/23] vla: use value constructor instead of raw-buffer manipulation Keven Boell
2014-06-04  5:54 ` [PATCH 14/23] test: evaluate dynamic arrays using Fortran primitives Keven Boell
2014-06-04  5:54 ` [PATCH 10/23] vla: get Fortran dynamic strings working Keven Boell
2014-06-04  5:54 ` [PATCH 12/23] test: basic tests for dynamic array evaluations in Fortran Keven Boell
2014-06-04  5:54 ` [PATCH 11/23] vla: add stride support to fortran arrays Keven Boell
2014-06-04  5:54 ` [PATCH 23/23] test: stride support for dynamic arrays Keven Boell
2014-06-04  5:54 ` [PATCH 04/23] vla: make dynamic fortran arrays functional Keven Boell
2014-06-16 21:02   ` Jan Kratochvil
2014-06-17 13:53     ` Keven Boell
2014-06-17 17:26       ` Jan Kratochvil
2014-06-04  5:54 ` [PATCH 08/23] vla: get dynamic array corner cases to work Keven Boell
2014-06-04  5:54 ` [PATCH 15/23] test: dynamic arrays passed to subroutines Keven Boell
2014-06-04  5:54 ` [PATCH 20/23] test: dynamic string evaluations Keven Boell
2014-06-16 18:41   ` Jan Kratochvil
2014-06-17 13:52     ` Keven Boell
2014-06-04  5:54 ` [PATCH 13/23] test: evaluate Fortran dynamic arrays of types Keven Boell
2014-06-16 20:57   ` Jan Kratochvil
2014-06-04  5:55 ` [PATCH 09/23] vla: changed string length semantic Keven Boell
2014-06-04  5:55 ` [PATCH 21/23] test: basic MI test for the dynamic array support Keven Boell
2014-06-04  5:55 ` [PATCH 02/23] dwarf: add DW_AT_data_location support Keven Boell
2014-06-10 12:10   ` Joel Brobecker
2014-06-11 12:29     ` Keven Boell
2014-06-14 13:21     ` Jan Kratochvil
2014-06-04  5:55 ` [PATCH 17/23] test: evaluating allocation/association status Keven Boell
2014-06-04  5:55 ` [PATCH 01/23] dwarf: add dwarf3 DW_OP_push_object_address opcode Keven Boell
2014-06-05 20:47   ` Tom Tromey
2014-06-11 12:30     ` Keven Boell
2014-06-10  9:54   ` Joel Brobecker [this message]
2014-06-11 12:26     ` Keven Boell
2014-06-11 13:08       ` Joel Brobecker
2014-06-12  7:57         ` Keven Boell
2014-06-12 15:47           ` Joel Brobecker
2014-06-17 13:52             ` Keven Boell
2014-06-21 15:21               ` Joel Brobecker
2014-07-07 15:29                 ` Joel Brobecker
2014-06-04  5:55 ` [PATCH 22/23] test: test sizeof for dynamic fortran arrays Keven Boell
2014-06-04  5:55 ` [PATCH 18/23] test: dynamic arrays passed to functions Keven Boell
2014-06-04  5:55 ` [PATCH 19/23] test: accessing dynamic array history values Keven Boell
2014-06-04  7:10 ` [PATCH 00/23] Fortran dynamic array support Eli Zaretskii
2014-06-04 12:50 ` Joel Brobecker
2014-06-14 18:57 ` Jan Kratochvil
2014-06-14 19:39   ` Jan Kratochvil
2014-06-17 13:54     ` Keven Boell
2014-06-17 17:20       ` Jan Kratochvil

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=20140610095445.GA5259@adacore.com \
    --to=brobecker@adacore.com \
    --cc=gdb-patches@sourceware.org \
    --cc=keven.boell@intel.com \
    --cc=sanimir.agovic@intel.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