Bug 11502 - initial shared library events are bare when debugging a cygwin-built program
Summary: initial shared library events are bare when debugging a cygwin-built program
Status: RESOLVED FIXED
Alias: None
Product: gdb
Classification: Unclassified
Component: gdb (show other bugs)
Version: 7.0
: P2 normal
Target Milestone: 7.1
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-04-15 18:55 UTC by John Cortell
Modified: 2010-04-15 20:34 UTC (History)
1 user (show)

See Also:
Host:
Target:
Build:
Last reconfirmed:


Attachments
gdb/mi log showing that gdb stops for library loads without providing a reason (1.76 KB, text/plain)
2010-04-15 18:56 UTC, John Cortell
Details

Note You need to log in before you can comment on or make changes to this bug.
Description John Cortell 2010-04-15 18:55:49 UTC
(From the perspective of CDT...)

When debugging a Cygwin-built program, and we've told gdb to stop on shared
library events, the invocation (run) of the program produces a series of
stopped events because of library loads. But these events are absolutely bare.
Gdb gives no indication that the target stopped because of a library load.
Typically, such an indication comes in the form of a stream record that
accompanies the stopped event. Again, in this case, we get *nothing*. See the
attached gdb log. This represents all the activity from the beginning of the
session up to reaching main(). Note that getting to main() required hitting the
resume button three times (three library load events). Notice the bare *stopped
message and the lack of any stream records revealing the reason.


Here's what a normal stopped-for-library-load event looks like:


152-exec-continue
152^running
(gdb) 
~"Stopped due to shared library event\n"
Stopped due to shared library event
152*stopped,thread-id="1"

With this information, CDT is able to realize that the stop is because of a
shared library and auto-resume the target. Without the information, the user
just sees the program stopped for no apparent reason.
Comment 1 John Cortell 2010-04-15 18:56:33 UTC
Created attachment 4730 [details]
gdb/mi log showing that gdb stops for library loads without providing a reason
Comment 2 John Cortell 2010-04-15 19:08:29 UTC
BTW, the behavior was observed with both gdb 6.8 from both MinGW and Cygwin.
It's not present in MinGW gdb 7.0, so perhaps this was a 6.8 bug? Since there is
yet no official Cygwin 7.0 gdb, I can't confirm that.
Comment 3 Pedro Alves 2010-04-15 19:36:18 UTC
I think this was the fix:

2009-11-13  Pedro Alves  <pedro@codesourcery.com>

        * infrun.c (handle_inferior_event): Set stop_print_frame on
        TARGET_WAITKIND_LOADED events, if stopping on solib-events.

That's posterior to 7.0, but it's in 7.1.  I don't know how your
mingw gdb doesn't have this problem; maybe it's not really 7.0, but
7.0.50 (a cvs snapshot), or the patch was backported.

BTW, building GDB on Cygwin should be straightforward.  Pop up no irc if
you'd want to try it, and need help.
Comment 4 John Cortell 2010-04-15 19:49:21 UTC
Indeed it is. Specifically, 

   C:\MinGW\bin>gdb -version
   GNU gdb (GDB) 7.0.50.20100202

Thanks!
Comment 5 Pedro Alves 2010-04-15 20:34:10 UTC
You're welcome.  Closing then.