Manage objfiles with shared_ptr
authorTom Tromey <tom@tromey.com>
Sun, 3 Nov 2019 21:47:55 +0000 (14:47 -0700)
committerTom Tromey <tom@tromey.com>
Thu, 12 Dec 2019 22:50:56 +0000 (15:50 -0700)
commit7d7167ce1b93f8bb151daa2572314987eaeb9e3c
tree6380ce122f3651660f3df3ac30be6b01daf743be
parent343cc95202fce70383551053f2efab09c5e02366
Manage objfiles with shared_ptr

This changes objfiles to be managed using a shared_ptr.  shared_ptr is
chosen because it enables the use of objfiles in background threads.

The simplest way to do this was to introduce a new iterator that will
return the underlying objfile, rather than a shared_ptr.  (I also
tried changing the rest of gdb to use shared_ptr, but this was quite
large; and to using intrusive reference counting, but this also was
tricky.)

gdb/ChangeLog
2019-12-12  Tom Tromey  <tom@tromey.com>

* progspace.h (objfile_list): New typedef.
(class unwrapping_objfile_iterator)
(struct unwrapping_objfile_range): Newl
(struct program_space) <objfiles_range>: Change type.
<objfiles>: Change return type.
<add_objfile>: Change type of "objfile" parameter.
<objfiles_list>: Now a list of shared_ptr.
* progspace.c (program_space::add_objfile): Change type of
"objfile".  Update.
(program_space::remove_objfile): Update.
* objfiles.h (struct objfile) <~objfile>: Make public.
* objfiles.c (objfile::make): Update.
(objfile::unlink): Don't call delete.

Change-Id: I6fb7fbf06efb7cb7474c525908365863eae27eb3
gdb/ChangeLog
gdb/objfiles.c
gdb/objfiles.h
gdb/progspace.c
gdb/progspace.h