From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id k3cbKwwHYGnbITMAWB0awg (envelope-from ) for ; Thu, 08 Jan 2026 14:35:40 -0500 Received: by simark.ca (Postfix, from userid 112) id 8E3CC1E0B6; Thu, 08 Jan 2026 14:35:40 -0500 (EST) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED autolearn=ham autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 854011E0B3 for ; Thu, 08 Jan 2026 14:35:39 -0500 (EST) Received: from vm01.sourceware.org (localhost [127.0.0.1]) by sourceware.org (Postfix) with ESMTP id 38C0C4BA23E5 for ; Thu, 8 Jan 2026 19:35:33 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 38C0C4BA23E5 Received: from simark.ca (simark.ca [158.69.221.121]) by sourceware.org (Postfix) with ESMTPS id 0C5554BA2E1C for ; Thu, 8 Jan 2026 19:35:10 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0C5554BA2E1C Authentication-Results: sourceware.org; dmarc=fail (p=none dis=none) header.from=efficios.com Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=efficios.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 0C5554BA2E1C Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=158.69.221.121 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1767900910; cv=none; b=dyZMkotDWnG+hnpnLFeaS78iWBpeGRDFCyVSb5pcjYQP4kNpm3BDHwUgyZP2CBVbK50nrxQTbxff2pu9NfgkP/dvMap98WN9HRY2BV0Hu3T4ed4ZO65H5gymIExKMw100yTAMP3xOp+zZML/1biKHMEV3p4A4v6vkEB3+xn8nDc= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1767900910; c=relaxed/simple; bh=49jYTPe0w6E8Z5LnBUZYlQsER4HZIQQlgsKuLBSO/l8=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=Md8DWI904Qo6WT8A7Kzjo1Ehc3AA2A3SQ23e1dwmug3Y70UevOLAfFde07E6NVDQo9TwoSAbELSO+YE8HumVixMzAqvyiGVhaBVfrwcAcIQ9gjvDCsjBXpKbvTH1MEGbxSOgAf5K5Dqcsyjl6qu2Y40RV+BjnrgsWiUK9cnXEE0= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 0C5554BA2E1C Received: by simark.ca (Postfix) id 6EDF31E0C2; Thu, 08 Jan 2026 14:35:09 -0500 (EST) From: Simon Marchi To: gdb-patches@sourceware.org Cc: Simon Marchi Subject: [PATCH 4/8] gdb/xcoffread: remove xcoff_symfile_info::{symtbl, symtbl_num_syms} Date: Thu, 8 Jan 2026 14:33:22 -0500 Message-ID: <20260108193507.553779-5-simon.marchi@efficios.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260108193507.553779-1-simon.marchi@efficios.com> References: <20260108193507.553779-1-simon.marchi@efficios.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org It is not necessary to save the symbol table content and number of symbols in xcoff_symfile_info, because they are only needed for the duration of scan_xcoff_symtab. Move the reading of the symbol table content to scan_xcoff_symtab, and keep everything as local variables. Change-Id: I21e2b95a0b8df2255ba46904083658a4e8cb89f0 --- gdb/xcoffread.c | 62 ++++++++++++++----------------------------------- 1 file changed, 18 insertions(+), 44 deletions(-) diff --git a/gdb/xcoffread.c b/gdb/xcoffread.c index 052bd6b78b28..0f3470cae45d 100644 --- a/gdb/xcoffread.c +++ b/gdb/xcoffread.c @@ -38,12 +38,6 @@ struct xcoff_symfile_info { - /* Pointer to the a.out symbol table. */ - char *symtbl = nullptr; - - /* Number of symbols in symtbl. */ - int symtbl_num_syms = 0; - /* Offset in data section to TOC anchor. */ CORE_ADDR toc_offset = 0; }; @@ -156,22 +150,32 @@ scan_xcoff_symtab (struct objfile *objfile) { CORE_ADDR toc_offset = 0; /* toc offset value in data section. */ - bfd *abfd; asection *bfd_sect = nullptr; int ignored; - unsigned int nsyms; - - char *sraw_symbol; + bfd *abfd = objfile->obfd.get (); + file_ptr symtab_offset = obj_sym_filepos (abfd); struct internal_syment symbol; union internal_auxent main_aux[5]; unsigned int ssymnum; - abfd = objfile->obfd.get (); + /* Seek to symbol table location. */ + if (int ret = bfd_seek (abfd, symtab_offset, SEEK_SET); + ret < 0) + error (_("Error reading symbols from %s: %s"), + objfile_name (objfile), bfd_errmsg (bfd_get_error ())); - sraw_symbol = xcoff_objfile_data_key.get (objfile)->symtbl; - nsyms = xcoff_objfile_data_key.get (objfile)->symtbl_num_syms; + unsigned int num_symbols = bfd_get_symcount (abfd); + size_t size = coff_data (abfd)->local_symesz * num_symbols; + char *symtbl = (char *) obstack_alloc (&objfile->objfile_obstack, size); + + /* Read in symbol table. */ + if (int ret = bfd_read (symtbl, size, abfd); + ret != size) + error (_("reading symbol table: %s"), bfd_errmsg (bfd_get_error ())); + + char *sraw_symbol = symtbl; ssymnum = 0; - while (ssymnum < nsyms) + while (ssymnum < num_symbols) { int sclass; @@ -277,41 +281,11 @@ xcoff_get_toc_offset (struct objfile *objfile) static void xcoff_initial_scan (struct objfile *objfile, symfile_add_flags symfile_flags) { - bfd *abfd; - int val; - int num_symbols; /* # of symbols */ - file_ptr symtab_offset; /* symbol table and */ - struct xcoff_symfile_info *info; - const char *name; - unsigned int size; - - info = xcoff_objfile_data_key.get (objfile); - abfd = objfile->obfd.get (); - name = objfile_name (objfile); - - num_symbols = bfd_get_symcount (abfd); /* # of symbols */ - symtab_offset = obj_sym_filepos (abfd); /* symbol table file offset */ - - /* Read the symbols. We keep them in core because we will want to - access them randomly in read_symbol*. */ - val = bfd_seek (abfd, symtab_offset, SEEK_SET); - if (val < 0) - error (_("Error reading symbols from %s: %s"), - name, bfd_errmsg (bfd_get_error ())); - size = coff_data (abfd)->local_symesz * num_symbols; - info->symtbl = (char *) obstack_alloc (&objfile->objfile_obstack, size); - info->symtbl_num_syms = num_symbols; - - val = bfd_read (info->symtbl, size, abfd); - if (val != size) - error (_("reading symbol table: %s"), bfd_errmsg (bfd_get_error ())); - /* We need to do this to get the TOC information only. STABS format is no longer supported. */ scan_xcoff_symtab (objfile); /* DWARF2 sections. */ - dwarf2_initialize_objfile (objfile, &dwarf2_xcoff_names); } -- 2.52.0