diff options
Diffstat (limited to 'gdb/solib-svr4.c')
-rw-r--r-- | gdb/solib-svr4.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/gdb/solib-svr4.c b/gdb/solib-svr4.c index 702e6f6..c6dfe2e 100644 --- a/gdb/solib-svr4.c +++ b/gdb/solib-svr4.c @@ -986,6 +986,7 @@ enable_break (void) char *buf; CORE_ADDR load_addr = 0; int load_addr_found = 0; + int loader_found_in_list = 0; struct so_list *so; bfd *tmp_bfd = NULL; struct target_ops *tmp_bfd_target; @@ -1038,6 +1039,7 @@ enable_break (void) if (strcmp (buf, so->so_original_name) == 0) { load_addr_found = 1; + loader_found_in_list = 1; load_addr = LM_ADDR_CHECK (so, tmp_bfd); break; } @@ -1058,9 +1060,11 @@ enable_break (void) fallback method because it has actually been working well in most cases. */ if (!load_addr_found) + load_addr = (read_pc () + - exec_entry_point (tmp_bfd, tmp_bfd_target)); + + if (!loader_found_in_list) { - load_addr = (read_pc () - - exec_entry_point (tmp_bfd, tmp_bfd_target)); debug_loader_name = xstrdup (buf); debug_loader_offset_p = 1; debug_loader_offset = load_addr; |