From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 36806 invoked by alias); 29 Aug 2015 21:35:38 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 36794 invoked by uid 89); 29 Aug 2015 21:35:37 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.1 required=5.0 tests=AWL,BAYES_00,FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-yk0-f173.google.com Received: from mail-yk0-f173.google.com (HELO mail-yk0-f173.google.com) (209.85.160.173) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Sat, 29 Aug 2015 21:35:36 +0000 Received: by ykey204 with SMTP id y204so14673155yke.3 for ; Sat, 29 Aug 2015 14:35:34 -0700 (PDT) MIME-Version: 1.0 X-Received: by 10.170.190.136 with SMTP id h130mr14745207yke.70.1440884134596; Sat, 29 Aug 2015 14:35:34 -0700 (PDT) Received: by 10.13.254.195 with HTTP; Sat, 29 Aug 2015 14:35:34 -0700 (PDT) In-Reply-To: References: <1435631281-31970-1-git-send-email-patrick@parcs.ath.cx> Date: Sat, 29 Aug 2015 21:35:00 -0000 Message-ID: Subject: Re: [PATCH 1/2] Use gdbarch obstack to allocate types in alloc_type_arch From: Doug Evans To: Patrick Palka Cc: "gdb-patches@sourceware.org" Content-Type: text/plain; charset=UTF-8 X-IsSubscribed: yes X-SW-Source: 2015-08/txt/msg00844.txt.bz2 On Sat, Aug 29, 2015 at 2:26 PM, Patrick Palka wrote: >... > Some background for this change: The TYPE_OBJFILE_OWNED macro tells us > who owns a given type, and according to the macro's documentation a > type is always owned either by an objfile or by a gdbarch. Given this > binary encoding of ownership it doesn't seem to make much sense for > _any_ type to be allocated by malloc. All types should be allocated > on an objfile obstack or on a gdbarch obstack. I can imagine types being allocated by malloc and tracked via whatever object "owns" them. All that matters is that when the owner is freed all its owned objects are freed too. Whether those objects are malloc'd or in an obstack is just an implementation detail. I know that that's not how arch-owned types worked prior to your patch. I'm just saying they *could* have worked that way. Moving them to an obstack obviates the need for keeping a copy of the pointer so it can later be freed. > To support allocating a type by malloc, I think the type ownership > scheme should have three possible cases: that a type is owned by an > objfile, or that it's owned by a gdbarch, or that it's owned by the > caller. This new last case could correspond to a type that's > allocated by malloc instead of on an obstack. > > Does this make sense, or maybe I am misunderstanding what "owning" means here? I think you've got it right. There's still, technically, an open issue of "What happens if an arch is freed and there's still a value in the history that uses that type? Would we then have to preserve that type again? (bleah)" I don't have too strong an opinion on what's right here. If someone wants to allow for arches being freed and thus "preserved" types have to be "owned" by something else, ok, but I don't see it as an urgent need. We *could* just say that arches are never freed for now.