When switching from gdb 7.10 to the newly released gdb 7.11 on Solaris,
all simulate-thread tests started to timeout, adding about 2 1/2 hours
to bootstrap time. It turned out that this happens as follows: with gdb
7.10, a test is run like this and runs to completion without interaction:
/vol/gcc/bin/amd64/gdb-7.10 -nx -nw -x
/vol/gcc/src/hg/trunk/local/gcc/testsuite/gcc.dg/simulate-thread/simulate-thread.gdb
./atomic-load-int.exe
With gdb 7.11, OTOH, I see
/vol/gcc/bin/amd64/gdb-7.11 -nx -nw -x
/vol/gcc/src/hg/trunk/local/gcc/testsuite/gcc.dg/simulate-thread/simulate-thread.gdb
./atomic-load-int.exe
and the test goes interactive once per page
Thread 2 hit Breakpoint 1, simulate_thread_main ()
at
/vol/gcc/src/hg/trunk/local/gcc/testsuite/gcc.dg/simulate-thread/atomic-load-int.c:97
97for (table_cycle_size = 16; table_cycle_size > 4 ; table_cycle_size--)
---Type to continue, or q to quit---
when run interactively, and hangs the test inside the testsuite.
Strangely, this doesn't happen on x86_64-pc-linux-gnu, and I couldn't
find anything related mentioned in the gdb NEWS file. I didn't dig too
deeply into gdb source code to investigate.
Fortunately, it turns out that the fix is simple: when gdb is invoked
with -batch, both versions behave the same and never go interactive in
this scenario. The -batch option goes way back (at least to gdb 5.2
which I still had lying around), so this seems a safe change.
Tested with the appropriate runtest invocation on i386-pc-solaris2.12
and x86_64-pc-linux-gnu (with GDB_FOR_GCC_TESTING set to either gdb
version) for gcc.dg/simulate-thread on both and gcc.dg/guality on Linux
only.
Ok for mainline, gcc-5 and gcc-4.9 branches (given that it adds hours to
total bootstrap time)?
Rainer
2016-02-29 Rainer Orth
* lib/gcc-gdb-test.exp (gdb-test): Make log message match command.
Invoke gdb with -batch.
* lib/gcc-simulate-thread.exp (simulate-thread): Likewise.
# HG changeset patch
# Parent b8273f68b9015179dc5b11f384d55efd5b4130a8
Invoke gdb with -batch to avoid prompts
diff --git a/gcc/testsuite/lib/gcc-gdb-test.exp b/gcc/testsuite/lib/gcc-gdb-test.exp
--- a/gcc/testsuite/lib/gcc-gdb-test.exp
+++ b/gcc/testsuite/lib/gcc-gdb-test.exp
@@ -73,8 +73,8 @@ proc gdb-test { args } {
puts $fd "quit"
close $fd
-send_log "Spawning: $gdb_name -nx -nw -quiet -x $cmd_file ./$output_file\n"
-set res [remote_spawn target "$gdb_name -nx -nw -quiet -x $cmd_file ./$output_file"]
+send_log "Spawning: $gdb_name -nx -nw -quiet -batch -x $cmd_file ./$output_file\n"
+set res [remote_spawn target "$gdb_name -nx -nw -quiet -batch -x $cmd_file ./$output_file"]
if { $res < 0 || $res == "" } {
unsupported "$testname"
file delete $cmd_file
diff --git a/gcc/testsuite/lib/gcc-simulate-thread.exp b/gcc/testsuite/lib/gcc-simulate-thread.exp
--- a/gcc/testsuite/lib/gcc-simulate-thread.exp
+++ b/gcc/testsuite/lib/gcc-simulate-thread.exp
@@ -49,8 +49,8 @@ proc simulate-thread { args } {
set message "thread simulation test"
-send_log "Spawning: $gdb_name -nx -nw -quiet -x $cmd_file ./$exec_file\n"
-set res [remote_spawn target "$gdb_name -nx -nw -x $cmd_file ./$exec_file"]
+send_log "Spawning: $gdb_name -nx -nw -batch -x $cmd_file ./$exec_file\n"
+set res [remote_spawn target "$gdb_name -nx -nw -batch -x $cmd_file ./$exec_file"]
if { $res < 0 || $res == "" } {
unsupported "$testcase $message"
return
--
-
Rainer Orth, Center for Biotechnology, Bielefeld University