Package: gdb
Version: 6.3-5
Severity: normal
Tags: patch
When terminal options include 'tostop' (stop on output from non-foreground
process), which is set when running under Midnight Commander, gdb gets
SIGTTOU and stops when pending breakpoint is resolved.
Here's my session:
(gdb) b localize.cpp:54
No source file named localize.cpp.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 1 (localize.cpp:54) pending.
(gdb) r
Starting program: /home/ghost/Work/llvm/Debug/bin/opt -globalsmodref-aa -load
/home/ghost/Work/Research/Implementation/llvm_feasibility/localize.so -localize
a.bc -o a_l.bc -f
[1]+ Stopped gdb opt
After I "run fg", the output is:
Breakpoint 2 at 0xb7fe482b: file localize.cpp, line 54.
Pending breakpoint "localize.cpp:54" resolved
After I exchange the lines:
target_terminal_inferior ();
re_enable_breakpoints_in_shlibs ();
in infrun.c (line 2121), gdb works as expected. The problem is that
're_enable_breakpoints_in_shlibs' prints the 'Pending breakpoint resolved"
message, while gdb does not own the terminal.
-- System Information:
Debian Release: 3.1
APT prefers testing
APT policy: (620, 'testing'), (600, 'unstable'), (550, 'experimental')
Architecture: i386 (i686)
Kernel: Linux 2.6.11-1-zigzag
Locale: LANG=C, LC_CTYPE=ru_RU.KOI8-R (charmap=KOI8-R)
Versions of packages gdb depends on:
ii libc6 2.3.2.ds1-20 GNU C Library: Shared libraries an
ii libncurses5 5.4-4 Shared libraries for terminal hand
ii libreadline4 4.3-11 GNU readline and history libraries
-- no debconf information
--- infrun.c.orig 2005-04-25 15:22:41.000000000 +0400
+++ infrun.c 2005-04-25 15:22:44.000000000 +0400
@@ -2114,12 +2114,14 @@
to propagate relevant changes (stop, section table
changed, ...) up to other layers. */
SOLIB_ADD (NULL, 0, ¤t_target, auto_solib_add);
- target_terminal_inferior ();
+
/* Try to reenable shared library breakpoints, additional
code segments in shared libraries might be mapped in now. */
re_enable_breakpoints_in_shlibs ();
+ target_terminal_inferior ();
+
/* If requested, stop when the dynamic linker notifies
gdb of events. This allows the user to get control
and place breakpoints in initializer routines for