aboutsummaryrefslogtreecommitdiff
path: root/gdb/infrun.c
diff options
context:
space:
mode:
authorJeff Law <law@redhat.com>1996-03-04 21:50:10 +0000
committerJeff Law <law@redhat.com>1996-03-04 21:50:10 +0000
commit11be829fa134e93be9c6f1f41afead451b9c06d6 (patch)
treed19618c2e172d8d84e98db09258b41aade4af9cb /gdb/infrun.c
parent421e2c270e512c5f812197fc2da3215279c8b932 (diff)
downloadgdb-11be829fa134e93be9c6f1f41afead451b9c06d6.zip
gdb-11be829fa134e93be9c6f1f41afead451b9c06d6.tar.gz
gdb-11be829fa134e93be9c6f1f41afead451b9c06d6.tar.bz2
* From Peter Schauer:
* infrun.c (wait_for_inferior): Remove breakpoints and switch terminal settings before calling SOLIB_ADD. * solib.c (enable_break, SVR4 variant): Don't map in symbols for the dynamic linker, the namespace pollution causes real problems.
Diffstat (limited to 'gdb/infrun.c')
-rw-r--r--gdb/infrun.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/gdb/infrun.c b/gdb/infrun.c
index 19ff2d3..623e1da 100644
--- a/gdb/infrun.c
+++ b/gdb/infrun.c
@@ -1042,7 +1042,19 @@ wait_for_inferior ()
/* Check for any newly added shared libraries if we're
supposed to be adding them automatically. */
if (auto_solib_add)
- SOLIB_ADD (NULL, 0, NULL);
+ {
+ /* Remove breakpoints, SOLIB_ADD might adjust breakpoint
+ addresses via breakpoint_re_set. */
+ if (breakpoints_inserted)
+ remove_breakpoints ();
+ breakpoints_inserted = 0;
+
+ /* Switch terminal for any messages produced by
+ breakpoint_re_set. */
+ target_terminal_ours_for_output ();
+ SOLIB_ADD (NULL, 0, NULL);
+ target_terminal_inferior ();
+ }
/* If requested, stop when the dynamic linker notifies
gdb of events. This allows the user to get control
@@ -1658,7 +1670,9 @@ Further execution is probably impossible.\n");
target_terminal_ours ();
- if (stop_bpstat && stop_bpstat->breakpoint_at->type == bp_shlib_event)
+ if (stop_bpstat
+ && stop_bpstat->breakpoint_at
+ && stop_bpstat->breakpoint_at->type == bp_shlib_event)
printf_filtered ("Stopped due to shared library event\n");
/* Look up the hook_stop and run it if it exists. */