* 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:
parent
9e07f89d62
commit
f8766ec100
|
@ -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>
|
||||
|
||||
* MAINTAINERS: Update my mail address.
|
||||
|
|
|
@ -1004,7 +1004,7 @@ enable_break (void)
|
|||
char *buf;
|
||||
CORE_ADDR load_addr = 0;
|
||||
int load_addr_found = 0;
|
||||
struct so_list *inferior_sos;
|
||||
struct so_list *so;
|
||||
bfd *tmp_bfd = NULL;
|
||||
struct target_ops *tmp_bfd_target;
|
||||
int tmp_fd = -1;
|
||||
|
@ -1047,23 +1047,19 @@ enable_break (void)
|
|||
target will also close the underlying bfd. */
|
||||
tmp_bfd_target = target_bfd_reopen (tmp_bfd);
|
||||
|
||||
/* If the entry in _DYNAMIC for the dynamic linker has already
|
||||
been filled in, we can read its base address from there. */
|
||||
inferior_sos = svr4_current_sos ();
|
||||
if (inferior_sos)
|
||||
/* On a running target, we can get the dynamic linker's base
|
||||
address from the shared library table. */
|
||||
solib_add (NULL, 0, NULL, auto_solib_add);
|
||||
so = master_so_list ();
|
||||
while (so)
|
||||
{
|
||||
/* Connected to a running target. Update our shared library table. */
|
||||
solib_add (NULL, 0, NULL, auto_solib_add);
|
||||
}
|
||||
while (inferior_sos)
|
||||
{
|
||||
if (strcmp (buf, inferior_sos->so_original_name) == 0)
|
||||
if (strcmp (buf, so->so_original_name) == 0)
|
||||
{
|
||||
load_addr_found = 1;
|
||||
load_addr = LM_ADDR (inferior_sos);
|
||||
load_addr = LM_ADDR (so);
|
||||
break;
|
||||
}
|
||||
inferior_sos = inferior_sos->next;
|
||||
so = so->next;
|
||||
}
|
||||
|
||||
/* 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. */
|
||||
|
||||
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);
|
||||
|
||||
/* 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. */
|
||||
extern int solib_open (char *in_pathname, char **found_pathname);
|
||||
|
||||
|
|
Loading…
Reference in New Issue