diff options
Diffstat (limited to 'gdb/solib-darwin.c')
-rw-r--r-- | gdb/solib-darwin.c | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/gdb/solib-darwin.c b/gdb/solib-darwin.c index aac8ab2..a6f5504 100644 --- a/gdb/solib-darwin.c +++ b/gdb/solib-darwin.c @@ -37,6 +37,8 @@ struct darwin_solib_ops : public solib_ops { + using solib_ops::solib_ops; + void relocate_section_addresses (solib &so, target_section *) const override; void clear_solib (program_space *pspace) const override; void create_inferior_hook (int from_tty) const override; @@ -47,9 +49,9 @@ struct darwin_solib_ops : public solib_ops /* See solib-darwin.h. */ solib_ops_up -make_darwin_solib_ops () +make_darwin_solib_ops (program_space *pspace) { - return std::make_unique<darwin_solib_ops> (); + return std::make_unique<darwin_solib_ops> (pspace); } struct gdb_dyld_image_info @@ -156,8 +158,12 @@ darwin_load_image_infos (struct darwin_info *info) struct lm_info_darwin final : public lm_info { + explicit lm_info_darwin (CORE_ADDR lm_addr) + : lm_addr (lm_addr) + {} + /* The target location of lm. */ - CORE_ADDR lm_addr = 0; + CORE_ADDR lm_addr; }; /* Lookup the value for a specific symbol. */ @@ -267,15 +273,8 @@ darwin_solib_ops::current_sos () const break; /* Create and fill the new struct solib element. */ - auto &newobj = sos.emplace_back (*this); - - auto li = std::make_unique<lm_info_darwin> (); - - newobj.name = file_path.get (); - newobj.original_name = newobj.name; - li->lm_addr = load_addr; - - newobj.lm_info = std::move (li); + sos.emplace_back (std::make_unique<lm_info_darwin> (load_addr), + file_path.get (), file_path.get (), *this); } return sos; |