From patchwork Fri May 26 18:26:00 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Kratochvil X-Patchwork-Id: 20606 Received: (qmail 89278 invoked by alias); 26 May 2017 18:26:03 -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 89206 invoked by uid 89); 26 May 2017 18:26:02 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.9 required=5.0 tests=BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_LAZY_DOMAIN_SECURITY, RP_MATCHES_RCVD, SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=5010 X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 26 May 2017 18:26:00 +0000 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 6BB2D448D6A; Fri, 26 May 2017 18:26:02 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 6BB2D448D6A Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=jan.kratochvil@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 6BB2D448D6A Received: from host1.jankratochvil.net (ovpn-117-182.ams2.redhat.com [10.36.117.182]) by smtp.corp.redhat.com (Postfix) with ESMTP id A8D8117980; Fri, 26 May 2017 18:26:01 +0000 (UTC) Subject: [PATCH 4/6] Code cleanup: dwarf2_initialize_objfile return value From: Jan Kratochvil To: gdb-patches@sourceware.org Cc: Victor Leschuk Date: Fri, 26 May 2017 20:26:00 +0200 Message-ID: <149582316066.15869.7293385780298536452.stgit@host1.jankratochvil.net> In-Reply-To: <149582312757.15869.18345460438195439402.stgit@host1.jankratochvil.net> References: <149582312757.15869.18345460438195439402.stgit@host1.jankratochvil.net> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 Hi, dwarf2_initialize_objfile was returning boolean whether it is psymtabs or .gdb_index while now it needs to return also whether it is .debug_names. Jan gdb/ChangeLog 2017-05-26 Jan Kratochvil * defs.h (elf_sym_fns_lazy_psyms, elf_sym_fns_gdb_index): Move here declarations from elfread.c. (dwarf2_initialize_objfile): Change return value. * elfread.c (elf_sym_fns_lazy_psyms, elf_sym_fns_gdb_index): Move these declarations to defs.h. (elf_symfile_read): Adjust dwarf2_initialize_objfile caller. * symfile.h (dwarf2_initialize_objfile): Change return type. --- gdb/defs.h | 5 +++++ gdb/dwarf2read.c | 8 ++++---- gdb/elfread.c | 11 +++-------- gdb/symfile.h | 2 +- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/gdb/defs.h b/gdb/defs.h index a0b586f..78f98e0 100644 --- a/gdb/defs.h +++ b/gdb/defs.h @@ -724,6 +724,11 @@ extern int (*deprecated_ui_load_progress_hook) (const char *section, extern void initialize_progspace (void); extern void initialize_inferiors (void); +// From elfread.c + +extern const struct sym_fns elf_sym_fns_lazy_psyms; +extern const struct sym_fns elf_sym_fns_gdb_index; + /* * Special block numbers */ enum block_enum diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c index 4f5eb08..e7c3643 100644 --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -4354,7 +4354,7 @@ const struct quick_symbol_functions dwarf2_gdb_index_functions = /* Initialize for reading DWARF for this objfile. Return 0 if this file will use psymtabs, or 1 if using the GNU index. */ -int +const sym_fns & dwarf2_initialize_objfile (struct objfile *objfile) { /* If we're about to read full symbols, don't bother with the @@ -4383,13 +4383,13 @@ dwarf2_initialize_objfile (struct objfile *objfile) /* Return 1 so that gdb sees the "quick" functions. However, these functions will be no-ops because we will have expanded all symtabs. */ - return 1; + return elf_sym_fns_gdb_index; } if (dwarf2_read_index (objfile)) - return 1; + return elf_sym_fns_gdb_index; - return 0; + return elf_sym_fns_lazy_psyms; } diff --git a/gdb/elfread.c b/gdb/elfread.c index fba2026..9ae0432 100644 --- a/gdb/elfread.c +++ b/gdb/elfread.c @@ -50,10 +50,6 @@ extern void _initialize_elfread (void); -/* Forward declarations. */ -extern const struct sym_fns elf_sym_fns_gdb_index; -extern const struct sym_fns elf_sym_fns_lazy_psyms; - /* The struct elfinfo is available only during ELF symbol table and psymtab reading. It is destroyed at the completion of psymtab-reading. It's local to elf_symfile_read. */ @@ -1237,10 +1233,7 @@ elf_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags) information present in OBJFILE. If there is such debug info present never use .gdb_index. */ - if (!objfile_has_partial_symbols (objfile) - && dwarf2_initialize_objfile (objfile)) - objfile_set_sym_fns (objfile, &elf_sym_fns_gdb_index); - else + if (objfile_has_partial_symbols (objfile)) { /* It is ok to do this even if the stabs reader made some partial symbols, because OBJF_PSYMTABS_READ has not been @@ -1248,6 +1241,8 @@ elf_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags) when needed. */ objfile_set_sym_fns (objfile, &elf_sym_fns_lazy_psyms); } + else + objfile_set_sym_fns (objfile, &dwarf2_initialize_objfile (objfile)); } /* If the file has its own symbol tables it has no separate debug info. `.dynsym'/`.symtab' go to MSYMBOLS, `.debug_info' goes to diff --git a/gdb/symfile.h b/gdb/symfile.h index ab536e8..8725796 100644 --- a/gdb/symfile.h +++ b/gdb/symfile.h @@ -625,7 +625,7 @@ extern void dwarf2_get_section_info (struct objfile *, asection **, const gdb_byte **, bfd_size_type *); -extern int dwarf2_initialize_objfile (struct objfile *); +extern const sym_fns &dwarf2_initialize_objfile (struct objfile *); extern void dwarf2_build_psymtabs (struct objfile *); extern void dwarf2_build_frame_info (struct objfile *);