* 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:
parent
6387b45f80
commit
e09490f18a
|
@ -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.
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue