aboutsummaryrefslogtreecommitdiff
path: root/gdb/solib-darwin.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/solib-darwin.c')
-rw-r--r--gdb/solib-darwin.c23
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;