From patchwork Thu May 10 22:23:53 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Tromey X-Patchwork-Id: 27225 Received: (qmail 70576 invoked by alias); 10 May 2018 22:25:21 -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 42169 invoked by uid 89); 10 May 2018 22:24:28 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.8 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=UD:release X-HELO: gateway34.websitewelcome.com Received: from gateway34.websitewelcome.com (HELO gateway34.websitewelcome.com) (192.185.149.105) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 10 May 2018 22:24:23 +0000 Received: from cm13.websitewelcome.com (cm13.websitewelcome.com [100.42.49.6]) by gateway34.websitewelcome.com (Postfix) with ESMTP id 5C76925F4799 for ; Thu, 10 May 2018 17:24:08 -0500 (CDT) Received: from box5379.bluehost.com ([162.241.216.53]) by cmsmtp with SMTP id GtyqfLxPQQUwqGtyqf47zx; Thu, 10 May 2018 17:24:08 -0500 X-Authority-Reason: nr=8 Received: from 97-122-176-117.hlrn.qwest.net ([97.122.176.117]:54520 helo=bapiya.Home) by box5379.bluehost.com with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.89_1) (envelope-from ) id 1fGtyq-001ijL-5G; Thu, 10 May 2018 17:24:08 -0500 From: Tom Tromey To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [RFA 11/15] Allocate the address map on the psymtab obstack Date: Thu, 10 May 2018 16:23:53 -0600 Message-Id: <20180510222357.27332-12-tom@tromey.com> In-Reply-To: <20180510222357.27332-1-tom@tromey.com> References: <20180510222357.27332-1-tom@tromey.com> X-BWhitelist: no X-Source-L: No X-Exim-ID: 1fGtyq-001ijL-5G X-Source-Sender: 97-122-176-117.hlrn.qwest.net (bapiya.Home) [97.122.176.117]:54520 X-Source-Auth: tom+tromey.com X-Email-Count: 12 X-Source-Cap: ZWx5bnJvYmk7ZWx5bnJvYmk7Ym94NTM3OS5ibHVlaG9zdC5jb20= X-Local-Domain: yes After this patch, the psymtab address map will now be allocated on the psymtab obstack rather than the objfile obstack. This also changes the psymtab storage object to make the obstack private; this will be used later. 2018-05-10 Tom Tromey * psymtab.h (psymtab_storage::obstack): New method. : Rename from obstack; now private. * psymtab.c (psymtab_storage): Update. * dwarf2read.c (create_addrmap_from_index) (create_addrmap_from_aranges, dwarf2_build_psymtabs_hard): Update. --- gdb/ChangeLog | 9 +++++++++ gdb/dwarf2read.c | 6 +++--- gdb/psymtab.c | 4 ++-- gdb/psymtab.h | 15 +++++++++++---- 4 files changed, 25 insertions(+), 9 deletions(-) diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c index 03cb4e9d1e..034d5f477f 100644 --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -3187,7 +3187,7 @@ create_addrmap_from_index (struct dwarf2_per_objfile *dwarf2_per_objfile, } objfile->partial_symtabs->psymtabs_addrmap - = addrmap_create_fixed (mutable_map, &objfile->objfile_obstack); + = addrmap_create_fixed (mutable_map, objfile->partial_symtabs->obstack ()); } /* Read the address map data from DWARF-5 .debug_aranges, and use it to @@ -3348,7 +3348,7 @@ create_addrmap_from_aranges (struct dwarf2_per_objfile *dwarf2_per_objfile, } objfile->partial_symtabs->psymtabs_addrmap - = addrmap_create_fixed (mutable_map, &objfile->objfile_obstack); + = addrmap_create_fixed (mutable_map, objfile->partial_symtabs->obstack ()); } /* Find a slot in the mapped index INDEX for the object named NAME. @@ -8424,7 +8424,7 @@ dwarf2_build_psymtabs_hard (struct dwarf2_per_objfile *dwarf2_per_objfile) objfile->partial_symtabs->psymtabs_addrmap = addrmap_create_fixed (objfile->partial_symtabs->psymtabs_addrmap, - &objfile->objfile_obstack); + objfile->partial_symtabs->obstack ()); /* At this point we want to keep the address map. */ save_psymtabs_addrmap.release (); diff --git a/gdb/psymtab.c b/gdb/psymtab.c index f50d0576f8..a7bec436e0 100644 --- a/gdb/psymtab.c +++ b/gdb/psymtab.c @@ -68,8 +68,8 @@ static struct compunit_symtab *psymtab_to_symtab (struct objfile *objfile, psymtab_storage::psymtab_storage (struct objfile *objfile) - : obstack (&objfile->objfile_obstack), - psymbol_cache (psymbol_bcache_init ()) + : psymbol_cache (psymbol_bcache_init ()), + m_obstack (&objfile->objfile_obstack) { } diff --git a/gdb/psymtab.h b/gdb/psymtab.h index 58c4bee98a..36dba3245c 100644 --- a/gdb/psymtab.h +++ b/gdb/psymtab.h @@ -55,6 +55,11 @@ public: void discard_psymtab (struct partial_symtab *pst); + struct obstack *obstack () + { + return m_obstack; + } + /* Each objfile points to a linked list of partial symtabs derived from this file, one partial symtab structure for each compilation unit @@ -73,10 +78,6 @@ public: struct partial_symtab *free_psymtabs = nullptr; - /* The obstack where allocations are made. */ - - struct obstack *obstack; - /* A byte cache where we can stash arbitrary "chunks" of bytes that will not change. */ @@ -87,6 +88,12 @@ public: std::vector global_psymbols; std::vector static_psymbols; + +private: + + /* The obstack where allocations are made. */ + + struct obstack *m_obstack; };