Index: gdb/solib-svr4.c |
diff --git a/gdb/solib-svr4.c b/gdb/solib-svr4.c |
index efb95cdec4da58f6e3c2bccd140f7ace3e2cf408..e1291973e0abd00debe0d6c5408551b8a0cb2dbf 100644 |
--- a/gdb/solib-svr4.c |
+++ b/gdb/solib-svr4.c |
@@ -1270,6 +1270,14 @@ svr4_current_sos (void) |
int ignore_first; |
struct svr4_library_list library_list; |
+ /* Fall back to manual examination of the target if the packet is not |
+ supported or gdbserver failed to find DT_DEBUG. gdb.server/solib-list.exp |
+ tests a case where gdbserver cannot find the shared libraries list while |
+ GDB itself is able to find it via SYMFILE_OBJFILE. |
+ |
+ Unfortunately statically linked inferiors will also fall back through this |
+ suboptimal code path. */ |
+ |
if (svr4_current_sos_via_xfer_libraries (&library_list)) |
{ |
if (library_list.main_lm) |
@@ -1709,7 +1717,7 @@ enable_break (struct svr4_info *info, int from_tty) |
} |
} |
- if (!current_inferior ()->attach_flag) |
+ if (interp_name != NULL && !current_inferior ()->attach_flag) |
{ |
for (bkpt_namep = bkpt_names; *bkpt_namep != NULL; bkpt_namep++) |
{ |
@@ -2259,13 +2267,13 @@ svr4_solib_create_inferior_hook (int from_tty) |
clear_proceed_status (); |
inf->control.stop_soon = STOP_QUIETLY; |
- tp->suspend.stop_signal = TARGET_SIGNAL_0; |
+ tp->suspend.stop_signal = GDB_SIGNAL_0; |
do |
{ |
target_resume (pid_to_ptid (-1), 0, tp->suspend.stop_signal); |
wait_for_inferior (); |
} |
- while (tp->suspend.stop_signal != TARGET_SIGNAL_TRAP); |
+ while (tp->suspend.stop_signal != GDB_SIGNAL_TRAP); |
inf->control.stop_soon = NO_STOP_QUIETLY; |
#endif /* defined(_SCO_DS) */ |
} |