/* Definitions for targets which report shared library events.
- Copyright (C) 2007-2020 Free Software Foundation, Inc.
+ Copyright (C) 2007-2022 Free Software Foundation, Inc.
This file is part of GDB.
#include "target.h"
#include "solib-target.h"
#include <vector>
+#include "inferior.h"
/* Private data for each loaded library. */
struct lm_info_target : public lm_info_base
/* Fetch the list of shared libraries. */
gdb::optional<gdb::char_vector> library_document
- = target_read_stralloc (current_top_target (), TARGET_OBJECT_LIBRARIES,
- NULL);
+ = target_read_stralloc (current_inferior ()->top_target (),
+ TARGET_OBJECT_LIBRARIES, NULL);
if (!library_document)
return NULL;
"info sharedlibrary". Report any consecutive segments
which were relocated as a single unit. */
gdb_assert (li->segment_bases.size () > 0);
- orig_delta = li->segment_bases[0] - data->segment_bases[0];
+ orig_delta = li->segment_bases[0] - data->segments[0].base;
- for (i = 1; i < data->num_segments; i++)
+ for (i = 1; i < data->segments.size (); i++)
{
/* If we have run out of offsets, assume all
remaining segments have the same offset. */
/* If this segment does not have the same offset, do
not include it in the library's range. */
- if (li->segment_bases[i] - data->segment_bases[i]
+ if (li->segment_bases[i] - data->segments[i].base
!= orig_delta)
break;
}
so->addr_low = li->segment_bases[0];
- so->addr_high = (data->segment_bases[i - 1]
- + data->segment_sizes[i - 1]
+ so->addr_high = (data->segments[i - 1].base
+ + data->segments[i - 1].size
+ orig_delta);
gdb_assert (so->addr_low <= so->addr_high);
}
return in_plt_section (pc);
}
-struct target_so_ops solib_target_so_ops;
-
-void _initialize_solib_target ();
-void
-_initialize_solib_target ()
+const struct target_so_ops solib_target_so_ops =
{
- solib_target_so_ops.relocate_section_addresses
- = solib_target_relocate_section_addresses;
- solib_target_so_ops.free_so = solib_target_free_so;
- solib_target_so_ops.clear_solib = solib_target_clear_solib;
- solib_target_so_ops.solib_create_inferior_hook
- = solib_target_solib_create_inferior_hook;
- solib_target_so_ops.current_sos = solib_target_current_sos;
- solib_target_so_ops.open_symbol_file_object
- = solib_target_open_symbol_file_object;
- solib_target_so_ops.in_dynsym_resolve_code
- = solib_target_in_dynsym_resolve_code;
- solib_target_so_ops.bfd_open = solib_bfd_open;
-
- /* Set current_target_so_ops to solib_target_so_ops if not already
- set. */
- if (current_target_so_ops == 0)
- current_target_so_ops = &solib_target_so_ops;
-}
+ solib_target_relocate_section_addresses,
+ solib_target_free_so,
+ nullptr,
+ solib_target_clear_solib,
+ solib_target_solib_create_inferior_hook,
+ solib_target_current_sos,
+ solib_target_open_symbol_file_object,
+ solib_target_in_dynsym_resolve_code,
+ solib_bfd_open,
+};