56 #if !defined(HAVE_LIBEXPAT) 59 solib_target_parse_libraries (
const char *library)
61 static int have_warned;
66 warning (
_(
"Can not parse XML library list; XML support was disabled " 92 _(
"Library list with both segments and sections"));
110 _(
"Library list with both segments and sections"));
134 void *user_data,
const char *body_text)
156 const char *
string = (
const char *)
version->value;
158 if (strcmp (
string,
"1.0") != 0)
160 _(
"Library list has unsupported version \"%s\""),
228 solib_target_parse_libraries (
const char *library)
250 struct so_list *new_solib, *start = NULL, *last = NULL;
258 if (library_document == NULL)
262 library_list = solib_target_parse_libraries (library_document.get ());
264 if (library_list == NULL)
284 last = start = new_solib;
287 last->
next = new_solib;
341 int num_alloc_sections = 0;
343 for (i = 0, sect = so->
abfd->sections;
345 i++, sect = sect->next)
346 if ((bfd_get_section_flags (so->
abfd, sect) & SEC_ALLOC))
347 num_alloc_sections++;
351 Could not relocate shared library \"%s\": wrong number of ALLOC sections"),
360 for (i = 0, sect = so->
abfd->sections;
362 i++, sect = sect->next)
364 if (!(bfd_get_section_flags (so->
abfd, sect) & SEC_ALLOC))
366 if (bfd_section_size (so->
abfd, sect) > 0)
371 high = low + bfd_section_size (so->
abfd, sect) - 1;
373 if (low < so->addr_low)
395 Could not relocate shared library \"%s\": no segments"), so->
so_name);
405 Could not relocate shared library \"%s\": bad offsets"), so->
so_name);
static const struct gdb_xml_attribute library_list_attributes[]
static void solib_target_relocate_section_addresses(struct so_list *so, struct target_section *sec)
static const struct gdb_xml_attribute section_attributes[]
void _initialize_solib_target(void)
static void library_list_start_library(struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, VEC(gdb_xml_value_s) *attributes)
int gdb_bfd_section_index(bfd *abfd, asection *section)
lm_info_target * lm_info_target_p
void warning(const char *fmt,...)
CORE_ADDR * segment_bases
void(* relocate_section_addresses)(struct so_list *so, struct target_section *)
void(* solib_create_inferior_hook)(int from_tty)
struct so_list *(* current_sos)(void)
static void library_list_start_section(struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, VEC(gdb_xml_value_s) *attributes)
#define VEC_safe_push(T, V, O)
static const struct gdb_xml_element library_list_elements[]
#define SO_NAME_MAX_PATH_SIZE
gdb::unique_xmalloc_ptr< char > target_read_stralloc(struct target_ops *ops, enum target_object object, const char *annex)
gdb_bfd_ref_ptr(* bfd_open)(char *pathname)
static const struct gdb_xml_element library_list_children[]
static VEC(lm_info_target_p)
void(* clear_solib)(void)
struct target_so_ops solib_target_so_ops
#define SIZEOF_N_SECTION_OFFSETS(n)
#define VEC_iterate(T, V, I, P)
int(* in_dynsym_resolve_code)(CORE_ADDR pc)
std::unique_ptr< T, xfree_deleter< T > > unique_xmalloc_ptr
int gdb_xml_parse_quick(const char *name, const char *dtd_name, const struct gdb_xml_element *elements, const char *document, void *user_data)
struct target_ops current_target
struct gdb_xml_value * xml_find_attribute(VEC(gdb_xml_value_s) *attributes, const char *name)
static const struct gdb_xml_element library_children[]
static void library_list_start_list(struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, VEC(gdb_xml_value_s) *attributes)
struct symfile_segment_data * get_symfile_segment_data(bfd *abfd)
void * xzalloc(size_t size)
static void library_list_end_library(struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, const char *body_text)
std::vector< CORE_ADDR > section_bases
section_offsets * offsets
char so_original_name[SO_NAME_MAX_PATH_SIZE]
struct cleanup * make_cleanup(make_cleanup_ftype *function, void *arg)
DEF_VEC_P(lm_info_target_p)
char so_name[SO_NAME_MAX_PATH_SIZE]
static void solib_target_free_library_list(void *p)
struct bfd_section * the_bfd_section
void gdb_xml_error(struct gdb_xml_parser *parser, const char *format,...)
static const struct gdb_xml_attribute segment_attributes[]
static void solib_target_free_so(struct so_list *so)
static void solib_target_clear_solib(void)
int(* open_symbol_file_object)(int from_ttyp)
void discard_cleanups(struct cleanup *old_chain)
static int in_plt_section(CORE_ADDR pc)
int gdb_bfd_count_sections(bfd *abfd)
void(* free_so)(struct so_list *so)
struct target_so_ops * current_target_so_ops
static void library_list_start_segment(struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, VEC(gdb_xml_value_s) *attributes)
gdb_xml_attribute_handler gdb_xml_parse_attr_ulongest
unsigned long long ULONGEST
static void solib_target_solib_create_inferior_hook(int from_tty)
static const struct gdb_xml_attribute library_attributes[]
void free_symfile_segment_data(struct symfile_segment_data *data)
gdb_bfd_ref_ptr solib_bfd_open(char *pathname)
std::vector< CORE_ADDR > segment_bases
CORE_ADDR * segment_sizes
int symfile_map_offsets_to_segments(bfd *abfd, const struct symfile_segment_data *data, struct section_offsets *offsets, int num_segment_bases, const CORE_ADDR *segment_bases)
static int solib_target_in_dynsym_resolve_code(CORE_ADDR pc)
static struct so_list * solib_target_current_sos(void)
static int solib_target_open_symbol_file_object(int from_tty)
void do_cleanups(struct cleanup *old_chain)