diff options
Diffstat (limited to 'gdb/progspace.h')
-rw-r--r-- | gdb/progspace.h | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/gdb/progspace.h b/gdb/progspace.h index 5e5d5ed..a761e62 100644 --- a/gdb/progspace.h +++ b/gdb/progspace.h @@ -21,6 +21,7 @@ #ifndef GDB_PROGSPACE_H #define GDB_PROGSPACE_H +#include "solib.h" #include "target.h" #include "gdb_bfd.h" #include "registry.h" @@ -231,6 +232,27 @@ struct program_space is outside all objfiles in this progspace. */ struct objfile *objfile_for_address (CORE_ADDR address); + /* Set this program space's solib provider. + + The solib provider must be unset prior to calling this method. */ + void set_solib_ops (solib_ops_up ops) + { + gdb_assert (m_solib_ops == nullptr); + m_solib_ops = std::move (ops); + }; + + /* Unset and free this program space's solib provider. */ + void unset_solib_ops () + { m_solib_ops = nullptr; } + + /* Unset and return this program space's solib provider. */ + solib_ops_up release_solib_ops () + { return std::move (m_solib_ops); } + + /* Get this program space's solib provider. */ + const struct solib_ops *solib_ops () const + { return m_solib_ops.get (); } + /* Return the list of all the solibs in this program space. */ owning_intrusive_list<solib> &solibs () { return m_solib_list; } @@ -355,6 +377,9 @@ private: /* All known objfiles are kept in a linked list. */ owning_intrusive_list<objfile> m_objfiles_list; + /* solib_ops implementation used to provide solibs in this program space. */ + solib_ops_up m_solib_ops; + /* List of shared objects mapped into this space. Managed by solib.c. */ owning_intrusive_list<solib> m_solib_list; |