From patchwork Mon Jul 22 21:00:25 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Terekhov, Mikhail via Gdb-patches" X-Patchwork-Id: 33774 Received: (qmail 3641 invoked by alias); 22 Jul 2019 21:00:43 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 3503 invoked by uid 89); 22 Jul 2019 21:00:35 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-23.7 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_PASS autolearn=ham version=3.3.1 spammy= X-HELO: mail-vs1-f73.google.com Received: from mail-vs1-f73.google.com (HELO mail-vs1-f73.google.com) (209.85.217.73) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 22 Jul 2019 21:00:33 +0000 Received: by mail-vs1-f73.google.com with SMTP id b7so10775856vsr.18 for ; Mon, 22 Jul 2019 14:00:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=UgqGeb+4FkV9vLsZxz3EU+1VNf6terV49mekpb7fFyo=; b=CBz8i+270AaOqZhwTLB+FjVVjgLkTPWEMWyN3n+FXO+kaJvpEA4oZ2DI2vZnLgIh4r zHxWmsIABsCMDDhG+pVHnuhLa2et6chFrMk/r/lRaqW7fnOgTxMxatVj1ReAuQMjSUUV HIMAi4PARqeFrgyJrfXZo6Z1w1DMNAHAPMGxPDkgwGCUGnVXaZVYl3VVKVdQvllkCjNE /D8rU41IYTrn0G9dFyLLh39t6qFlkr/go+OWjaCzmTWDZMhJkwA8IFgp4jVpp+sO1OBg 42HcKOAIx/j2P6yxjZd3QCGWO0kw3oRTM704qf35ELWyQMXkM8UD/zgiDjhvtZqxIhD0 ybbQ== Date: Mon, 22 Jul 2019 16:00:25 -0500 In-Reply-To: <20190722205854.GE23204@embecosm.com> Message-Id: <20190722210025.92079-1-cbiesinger@google.com> Mime-Version: 1.0 References: <20190722205854.GE23204@embecosm.com> Subject: [PATCH] Allow passing a block to lookup_global_symbol_from_objfile X-Patchwork-Original-From: "Christian Biesinger via gdb-patches" From: "Terekhov, Mikhail via Gdb-patches" Reply-To: Christian Biesinger To: gdb-patches@sourceware.org Cc: Christian Biesinger gdb/ChangeLog: 2019-07-22 Christian Biesinger * 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. --- 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. */ extern struct block_symbol lookup_global_symbol_from_objfile (struct objfile *main_objfile, + enum block_enum block_index, const char *name, const domain_enum domain);