Re: [PATCH 07/40] objfile_per_bfd_storage non-POD

Yao Qi
2017-06-27T12:00:57Z

Pedro Alves <palves@redhat.com> writes:

> A following patch will want to add a std::vector to
> objfile_per_bfd_storage. That makes it non-trivially
> constructible/destructible. Since objfile_per_bfd_storage objects are
> allocated on an obstack, we need to call their ctors/dtors manually.
> This is what this patch does. And then since we can now rely on
> ctors/dtors being run, make objfile_per_bfd_storage::storage_obstack
> be an auto_obstack.

It is good trick to class-fy some structures which are allocated on
obstack.

>
> gdb/ChangeLog:
> yyyy-mm-dd Pedro Alves <palves@redhat.com>
>
> * objfiles.c (get_objfile_bfd_data): Call bfd_alloc instead of
> bfd_zalloc. Call objfile_per_bfd_storage's ctor.
> (free_objfile_per_bfd_storage): Call objfile_per_bfd_storage's
> dtor.
> * objfiles.h (objfile_per_bfd_storage): Add ctor. Make
> 'storage_obstack' field an auto_obstack. In-class initialize all
> non-bitfield fields. Make minsyms_read bool.
> * symfile.c (read_symbols): Adjust.

Patch is good to me.

--
Yao (齐尧)