mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-07-15 05:01:13 +08:00
* solist.h (master_so_list): New function.
* solib.c (master_so_list): Likewise. * solib-svr4.c (enable_break): Iterate over so_list entries obtained from master list instead of entries obtained directly via svr4_current_sos().
This commit is contained in:
@ -1,3 +1,11 @@
|
|||||||
|
2004-03-11 Kevin Buettner <kevinb@redhat.com>
|
||||||
|
|
||||||
|
* solist.h (master_so_list): New function.
|
||||||
|
* solib.c (master_so_list): Likewise.
|
||||||
|
* solib-svr4.c (enable_break): Iterate over so_list entries
|
||||||
|
obtained from master list instead of entries obtained directly
|
||||||
|
via svr4_current_sos().
|
||||||
|
|
||||||
2004-03-10 Ben Elliston <bje@gnu.org>
|
2004-03-10 Ben Elliston <bje@gnu.org>
|
||||||
|
|
||||||
* MAINTAINERS: Update my mail address.
|
* MAINTAINERS: Update my mail address.
|
||||||
|
@ -1004,7 +1004,7 @@ enable_break (void)
|
|||||||
char *buf;
|
char *buf;
|
||||||
CORE_ADDR load_addr = 0;
|
CORE_ADDR load_addr = 0;
|
||||||
int load_addr_found = 0;
|
int load_addr_found = 0;
|
||||||
struct so_list *inferior_sos;
|
struct so_list *so;
|
||||||
bfd *tmp_bfd = NULL;
|
bfd *tmp_bfd = NULL;
|
||||||
struct target_ops *tmp_bfd_target;
|
struct target_ops *tmp_bfd_target;
|
||||||
int tmp_fd = -1;
|
int tmp_fd = -1;
|
||||||
@ -1047,23 +1047,19 @@ enable_break (void)
|
|||||||
target will also close the underlying bfd. */
|
target will also close the underlying bfd. */
|
||||||
tmp_bfd_target = target_bfd_reopen (tmp_bfd);
|
tmp_bfd_target = target_bfd_reopen (tmp_bfd);
|
||||||
|
|
||||||
/* If the entry in _DYNAMIC for the dynamic linker has already
|
/* On a running target, we can get the dynamic linker's base
|
||||||
been filled in, we can read its base address from there. */
|
address from the shared library table. */
|
||||||
inferior_sos = svr4_current_sos ();
|
solib_add (NULL, 0, NULL, auto_solib_add);
|
||||||
if (inferior_sos)
|
so = master_so_list ();
|
||||||
|
while (so)
|
||||||
{
|
{
|
||||||
/* Connected to a running target. Update our shared library table. */
|
if (strcmp (buf, so->so_original_name) == 0)
|
||||||
solib_add (NULL, 0, NULL, auto_solib_add);
|
|
||||||
}
|
|
||||||
while (inferior_sos)
|
|
||||||
{
|
|
||||||
if (strcmp (buf, inferior_sos->so_original_name) == 0)
|
|
||||||
{
|
{
|
||||||
load_addr_found = 1;
|
load_addr_found = 1;
|
||||||
load_addr = LM_ADDR (inferior_sos);
|
load_addr = LM_ADDR (so);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
inferior_sos = inferior_sos->next;
|
so = so->next;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Otherwise we find the dynamic linker's base address by examining
|
/* Otherwise we find the dynamic linker's base address by examining
|
||||||
|
@ -333,6 +333,14 @@ free_so (struct so_list *so)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Return address of first so_list entry in master shared object list. */
|
||||||
|
struct so_list *
|
||||||
|
master_so_list (void)
|
||||||
|
{
|
||||||
|
return so_list_head;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* A small stub to get us past the arg-passing pinhole of catch_errors. */
|
/* A small stub to get us past the arg-passing pinhole of catch_errors. */
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
@ -107,8 +107,12 @@ struct target_so_ops
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* Free the memory associated with a (so_list *). */
|
||||||
void free_so (struct so_list *so);
|
void free_so (struct so_list *so);
|
||||||
|
|
||||||
|
/* Return address of first so_list entry in master shared object list. */
|
||||||
|
struct so_list *master_so_list (void);
|
||||||
|
|
||||||
/* Find solib binary file and open it. */
|
/* Find solib binary file and open it. */
|
||||||
extern int solib_open (char *in_pathname, char **found_pathname);
|
extern int solib_open (char *in_pathname, char **found_pathname);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user