* linux-nat.c (count_events_callback, select_event_lwp_callback): Only

report events from resumed threads.

	* gdb.threads/schedlock.exp (get_args): Update to work for any
	value of NUM.
	(Top level): Report the number of threads that did not resume.
This commit is contained in:
Daniel Jacobowitz 2008-07-27 21:05:37 +00:00
parent 6387b45f80
commit e09490f18a
4 changed files with 32 additions and 10 deletions

View File

@ -1,3 +1,8 @@
2008-07-27 Daniel Jacobowitz <dan@codesourcery.com>
* linux-nat.c (count_events_callback, select_event_lwp_callback): Only
report events from resumed threads.
2008-07-27 Daniel Jacobowitz <dan@codesourcery.com>
* mips-linux-tdep.c (mips_linux_syscall_next_pc): New function.

View File

@ -2319,8 +2319,8 @@ count_events_callback (struct lwp_info *lp, void *data)
gdb_assert (count != NULL);
/* Count only LWPs that have a SIGTRAP event pending. */
if (lp->status != 0
/* Count only resumed LWPs that have a SIGTRAP event pending. */
if (lp->status != 0 && lp->resumed
&& WIFSTOPPED (lp->status) && WSTOPSIG (lp->status) == SIGTRAP)
(*count)++;
@ -2347,8 +2347,8 @@ select_event_lwp_callback (struct lwp_info *lp, void *data)
gdb_assert (selector != NULL);
/* Select only LWPs that have a SIGTRAP event pending. */
if (lp->status != 0
/* Select only resumed LWPs that have a SIGTRAP event pending. */
if (lp->status != 0 && lp->resumed
&& WIFSTOPPED (lp->status) && WSTOPSIG (lp->status) == SIGTRAP)
if ((*selector)-- == 0)
return 1;

View File

@ -1,3 +1,9 @@
2008-07-27 Daniel Jacobowitz <dan@codesourcery.com>
* gdb.threads/schedlock.exp (get_args): Update to work for any
value of NUM.
(Top level): Report the number of threads that did not resume.
2008-07-27 Daniel Jacobowitz <dan@codesourcery.com>
* gdb.dwarf2/dw2-compressed.S: Also define __start.

View File

@ -45,14 +45,25 @@ if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" executab
proc get_args { } {
global list_count
global gdb_prompt
global NUM
set pattern "(\[0-9\]+)"
for {set i 1} {[expr $i < $NUM]} {incr i} {
append pattern ", (\[0-9\]+)"
}
send_gdb "print args\n"
gdb_expect {
-re "\\\$\[0-9\]+ = {(\[0-9\]+), (\[0-9\]+)}.*$gdb_prompt"
-re "\\\$\[0-9\]+ = {$pattern}.*$gdb_prompt"
{
set list_count [expr $list_count + 1]
pass "listed args ($list_count)"
return [list $expect_out(1,string) $expect_out(2,string)]
set result ""
for {set i 1} {[expr $i <= $NUM]} {incr i} {
lappend result $expect_out($i,string)
}
return $result
}
-re "$gdb_prompt"
{
@ -202,16 +213,16 @@ my_continue "initial"
set cont_args [get_args]
set ok 1
set bad 0
for {set i 0} {[expr $i < $NUM]} {set i [expr $i + 1]} {
if {[lindex $start_args $i] == [lindex $cont_args $i]} {
set ok 0
incr bad
}
}
if { $ok } {
if { $bad == 0 } {
pass "all threads alive"
} else {
fail "all threads alive"
fail "all threads alive ($bad/$NUM did not run)"
}
# We can't change threads, unfortunately, in current GDB. Use