mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-03 23:34:02 +08:00
Applied Daniel Jacobowitz's patch for reattaching in the presence of
remote SVR4 shared libraries.
This commit is contained in:
parent
7e0de7bf18
commit
8ad2fcde8d
@ -1,3 +1,10 @@
|
||||
2001-08-29 Kevin Buettner <kevinb@redhat.com>
|
||||
|
||||
From 2001-08-07 Daniel Jacobowitz <drow@mvista.com>:
|
||||
* solib-svr4.c (enable_break): Check the inferior link map
|
||||
before assuming the inferior PC is at the start of the dynamic
|
||||
loader.
|
||||
|
||||
2001-08-28 Andrew Cagney <cagney@toribio.toronto.redhat.com>
|
||||
|
||||
* frame.h (struct frame_info): Fix documentation on fields
|
||||
|
@ -1198,7 +1198,9 @@ enable_break (void)
|
||||
{
|
||||
unsigned int interp_sect_size;
|
||||
char *buf;
|
||||
CORE_ADDR load_addr;
|
||||
CORE_ADDR load_addr = 0;
|
||||
int load_addr_found = 0;
|
||||
struct so_list *inferior_sos;
|
||||
bfd *tmp_bfd = NULL;
|
||||
int tmp_fd = -1;
|
||||
char *tmp_pathname = NULL;
|
||||
@ -1235,10 +1237,30 @@ enable_break (void)
|
||||
goto bkpt_at_symbol;
|
||||
}
|
||||
|
||||
/* We find the dynamic linker's base address by examining the
|
||||
current pc (which point at the entry point for the dynamic
|
||||
linker) and subtracting the offset of the entry point. */
|
||||
load_addr = read_pc () - tmp_bfd->start_address;
|
||||
/* 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)
|
||||
{
|
||||
/* Connected to a running target. Update our shared library table. */
|
||||
solib_add (NULL, 0, NULL);
|
||||
}
|
||||
while (inferior_sos)
|
||||
{
|
||||
if (strcmp (buf, inferior_sos->so_original_name) == 0)
|
||||
{
|
||||
load_addr_found = 1;
|
||||
load_addr = LM_ADDR (inferior_sos);
|
||||
break;
|
||||
}
|
||||
inferior_sos = inferior_sos->next;
|
||||
}
|
||||
|
||||
/* Otherwise we find the dynamic linker's base address by examining
|
||||
the current pc (which should point at the entry point for the
|
||||
dynamic linker) and subtracting the offset of the entry point. */
|
||||
if (!load_addr_found)
|
||||
load_addr = read_pc () - tmp_bfd->start_address;
|
||||
|
||||
/* Record the relocated start and end address of the dynamic linker
|
||||
text and plt section for svr4_in_dynsym_resolve_code. */
|
||||
|
Loading…
Reference in New Issue
Block a user