Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Simon Marchi <simark@simark.ca>
To: Christian Biesinger <cbiesinger@google.com>, gdb-patches@sourceware.org
Subject: Re: [PATCH] Allow passing a block to lookup_global_symbol_from_objfile
Date: Tue, 23 Jul 2019 00:54:00 -0000	[thread overview]
Message-ID: <ec9f6fdb-c7da-da84-8734-52be0ebe8606@simark.ca> (raw)
In-Reply-To: <20190722210025.92079-1-cbiesinger@google.com>

Hi Christian,

Code-wise, this LGTM, but I think it would need a bit of justification.  On its own
it doesn't change the behavior of GDB and does not appear to be a cleanup, so why is
this change useful?  I suppose it will be necessary for a further patch.  If so,
it's common to post it as a preparatory patch, in the same series as that other patch.
Then in the commit message you can say that "a further patch will need to call
lookup_global_symbol_from_objfile with STATIC_BLOCK", for example, that this
preparatory patch is just to isolate that change, and that on its own does not bring
any intended functional changes.

On 2019-07-22 5:00 p.m., Christian Biesinger via gdb-patches wrote:
> gdb/ChangeLog:
> 
> 2019-07-22  Christian Biesinger  <cbiesinger@google.com>
> 
> 	* compile/compile-object-load.c (compile_object_load): Pass GLOBAL_SCOPE.
> 	* solib-spu.c (spu_lookup_lib_symbol): Pass GLOBAL_SCOPE.
> 	* solib-svr4.c (elf_lookup_lib_symbol): Pass GLOBAL_SCOPE.
> 	* symtab.c (lookup_global_symbol_from_objfile): Add a scope parameter.
> 	* symtab.h: Add a scope parameter to lookup_global_symbol_from_objfile.

The last line should also be

 	* symtab.h (lookup_global_symbol_from_objfile): Add a scope parameter.

or

 	* symtab.c (lookup_global_symbol_from_objfile): Likewise.

> ---
>  gdb/compile/compile-object-load.c | 1 +
>  gdb/solib-spu.c                   | 3 ++-
>  gdb/solib-svr4.c                  | 3 ++-
>  gdb/symtab.c                      | 7 +++++--
>  gdb/symtab.h                      | 2 ++
>  5 files changed, 12 insertions(+), 4 deletions(-)
> 
> diff --git a/gdb/compile/compile-object-load.c b/gdb/compile/compile-object-load.c
> index 4e70205195..3a765a345b 100644
> --- a/gdb/compile/compile-object-load.c
> +++ b/gdb/compile/compile-object-load.c
> @@ -639,6 +639,7 @@ compile_object_load (const compile_file_names &file_names,
>    objfile = objfile_holder.get ();
>  
>    func_sym = lookup_global_symbol_from_objfile (objfile,
> +						GLOBAL_BLOCK,
>  						GCC_FE_WRAPPER_FUNCTION,
>  						VAR_DOMAIN).symbol;
>    if (func_sym == NULL)
> diff --git a/gdb/solib-spu.c b/gdb/solib-spu.c
> index 448e1a64f4..5b97b9bcf6 100644
> --- a/gdb/solib-spu.c
> +++ b/gdb/solib-spu.c
> @@ -392,7 +392,8 @@ spu_lookup_lib_symbol (struct objfile *objfile,
>  		       const domain_enum domain)
>  {
>    if (bfd_get_arch (objfile->obfd) == bfd_arch_spu)
> -    return lookup_global_symbol_from_objfile (objfile, name, domain);
> +    return lookup_global_symbol_from_objfile (objfile, GLOBAL_BLOCK, name,
> +					      domain);
>  
>    if (svr4_so_ops.lookup_lib_global_symbol != NULL)
>      return svr4_so_ops.lookup_lib_global_symbol (objfile, name, domain);
> diff --git a/gdb/solib-svr4.c b/gdb/solib-svr4.c
> index 8cd5b7d8e7..c0c505acaa 100644
> --- a/gdb/solib-svr4.c
> +++ b/gdb/solib-svr4.c
> @@ -3226,7 +3226,8 @@ elf_lookup_lib_symbol (struct objfile *objfile,
>    if (abfd == NULL || scan_dyntag (DT_SYMBOLIC, abfd, NULL, NULL) != 1)
>      return {};
>  
> -  return lookup_global_symbol_from_objfile (objfile, name, domain);
> +  return lookup_global_symbol_from_objfile (objfile, GLOBAL_BLOCK, name,
> +					    domain);
>  }
>  
>  void
> diff --git a/gdb/symtab.c b/gdb/symtab.c
> index 5b8bfc1df7..87a0c8e4da 100644
> --- a/gdb/symtab.c
> +++ b/gdb/symtab.c
> @@ -2224,15 +2224,18 @@ lookup_symbol_in_block (const char *name, symbol_name_match_type match_type,
>  
>  struct block_symbol
>  lookup_global_symbol_from_objfile (struct objfile *main_objfile,
> +				   enum block_enum block_index,
>  				   const char *name,
>  				   const domain_enum domain)
>  {
> +  gdb_assert (block_index == GLOBAL_BLOCK || block_index == STATIC_BLOCK);
> +
>    for (objfile *objfile : main_objfile->separate_debug_objfiles ())
>      {
>        struct block_symbol result
> -        = lookup_symbol_in_objfile (objfile, GLOBAL_BLOCK, name, domain);
> +        = lookup_symbol_in_objfile (objfile, block_index, name, domain);
>  
> -      if (result.symbol != NULL)
> +      if (result.symbol != nullptr)
>  	return result;
>      }
>  
> diff --git a/gdb/symtab.h b/gdb/symtab.h
> index b91454c85c..35f3c6be71 100644
> --- a/gdb/symtab.h
> +++ b/gdb/symtab.h
> @@ -2048,10 +2048,12 @@ extern enum language main_language (void);
>  /* Lookup symbol NAME from DOMAIN in MAIN_OBJFILE's global blocks.
>     This searches MAIN_OBJFILE as well as any associated separate debug info
>     objfiles of MAIN_OBJFILE.
> +   BLOCK_INDEX can be GLOBAL_BLOCK or STATIC_BLOCK.
>     Upon success fixes up the symbol's section if necessary.  */

On top of saying which values it can take, it would be useful to say
(very brefly) how it affects the behavior of the function.

Simon


  reply	other threads:[~2019-07-23  0:54 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-07-22 19:07 Christian Biesinger via gdb-patches
2019-07-22 20:59 ` Andrew Burgess
2019-07-22 21:00   ` Christian Biesinger via gdb-patches
2019-07-23  0:54     ` Simon Marchi [this message]
2019-07-23  1:46       ` [PATCH v2] " Christian Biesinger via gdb-patches
2019-07-24 13:59         ` Tom Tromey
2019-07-25  0:05           ` Christian Biesinger 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=ec9f6fdb-c7da-da84-8734-52be0ebe8606@simark.ca \
    --to=simark@simark.ca \
    --cc=cbiesinger@google.com \
    --cc=gdb-patches@sourceware.org \
    /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