This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH 1/2] Use gdbarch obstack to allocate types in alloc_type_arch
- From: Patrick Palka <patrick at parcs dot ath dot cx>
- To: Doug Evans <xdje42 at gmail dot com>
- Cc: "gdb-patches at sourceware dot org" <gdb-patches at sourceware dot org>
- Date: Sat, 29 Aug 2015 18:29:44 -0400
- Subject: Re: [PATCH 1/2] Use gdbarch obstack to allocate types in alloc_type_arch
- Authentication-results: sourceware.org; auth=none
- References: <1435631281-31970-1-git-send-email-patrick at parcs dot ath dot cx> <m3mvxadl7b dot fsf at sspiff dot org> <CA+C-WL_vZ0XCCHAimezD2UAE2Tov2QMPKROMBgBaGX_0zemXhA at mail dot gmail dot com> <CAP9bCMRzHPnSajjV0rvOzwBuivnpE=Wn_=xScsEZo846pM-9Ow at mail dot gmail dot com>
On Sat, Aug 29, 2015 at 5:35 PM, Doug Evans <xdje42@gmail.com> wrote:
> On Sat, Aug 29, 2015 at 2:26 PM, Patrick Palka <patrick@parcs.ath.cx> 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.
That makes sense.
>
>> 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)"
Ah, yeah..
>
> 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.
Makes sense.
I reverted this patch, with a revised one incoming.