diff options
Diffstat (limited to 'gdb/solib-svr4.c')
-rw-r--r-- | gdb/solib-svr4.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/gdb/solib-svr4.c b/gdb/solib-svr4.c index 3fa8d6f..0cecc2a 100644 --- a/gdb/solib-svr4.c +++ b/gdb/solib-svr4.c @@ -874,15 +874,18 @@ solib_svr4_r_map (struct svr4_info *info) struct link_map_offsets *lmo = svr4_fetch_link_map_offsets (); struct type *ptr_type = builtin_type (target_gdbarch ())->builtin_data_ptr; CORE_ADDR addr = 0; - volatile struct gdb_exception ex; - TRY_CATCH (ex, RETURN_MASK_ERROR) + TRY { addr = read_memory_typed_address (info->debug_base + lmo->r_map_offset, ptr_type); } - if (ex.reason < 0) - exception_print (gdb_stderr, ex); + CATCH (ex, RETURN_MASK_ERROR) + { + exception_print (gdb_stderr, ex); + } + END_CATCH + return addr; } @@ -2267,7 +2270,6 @@ enable_break (struct svr4_info *info, int from_tty) struct so_list *so; bfd *tmp_bfd = NULL; struct target_ops *tmp_bfd_target; - volatile struct gdb_exception ex; sym_addr = 0; @@ -2280,10 +2282,15 @@ enable_break (struct svr4_info *info, int from_tty) be trivial on GNU/Linux). Therefore, we have to try an alternate mechanism to find the dynamic linker's base address. */ - TRY_CATCH (ex, RETURN_MASK_ALL) + TRY { tmp_bfd = solib_bfd_open (interp_name); } + CATCH (ex, RETURN_MASK_ALL) + { + } + END_CATCH + if (tmp_bfd == NULL) goto bkpt_at_symbol; |