Re: [patch] Run tests in gdb.reverse

Yao Qi
2011-11-08T08:15:36Z

[-- Attachment #1: Type: text/plain, Size: 645 bytes --]

On 11/07/2011 10:54 PM, Tom Tromey wrote:
> Yao> +proc support_process_record {} {
> Yao> +
> Yao> + if { [istarget "x86_64-*-linux*"] || [istarget "i\[34567\]86-*-linux*"] } {
>
> It seems to me that both of the new procs should include the old check
> using target_info as well, just in case. This will avoid breaking
> anybody's existing setup.

Right. In new patch, target_info is honored in proc, so users can
disable reverse tests in their own board file (to Joel's comment). Two
procs are renamed from support_FOO to suppors_FOO (as Pedro pointed out).

>
> Ok with that change.

This is what I committed.

--
Yao (é½å°§)

[-- Attachment #2: reverse.patch --]
[-- Type: text/x-patch, Size: 18051 bytes --]

gdb/testsuite/

* gdb.exp (supports_process_record): New.
(supports_reverse): New.
* gdb.reverse/break-precsave.exp: Call support_process_record
to run test conditionally.
* gdb.reverse/consecutive-precsave.exp: Likewise.
* gdb.reverse/i386-precsave.exp: Likewise.
* gdb.reverse/machinestate-precsave.exp: Likewise.
* gdb.reverse/solib-precsave.exp: Likewise.
* gdb.reverse/step-precsave.exp: Likewise.
* gdb.reverse/until-precsave.exp: Likewise.
* gdb.reverse/watch-precsave.exp: Likewise.
* gdb.reverse/break-reverse.exp: Call support_reverse to run
test conditionally.
* gdb.reverse/consecutive-reverse.exp: Likewise.
* gdb.reverse/finish-precsave.exp: Likewise.
* gdb.reverse/finish-reverse-bkpt.exp: Likewise.
* gdb.reverse/finish-reverse.exp: Likewise.
* gdb.reverse/i386-reverse.exp: Likewise.
* gdb.reverse/i386-sse-reverse.exp: Likewise.
* gdb.reverse/machinestate.exp: Likewise.
* gdb.reverse/next-reverse-bkpt-over-sr.exp: Likewise.
* gdb.reverse/sigall-precsave.exp: Likewise.
* gdb.reverse/sigall-reverse.exp: Likewise.
* gdb.reverse/solib-reverse.exp: Likewise.
* gdb.reverse/step-reverse.exp: Likewise.
* gdb.reverse/until-reverse.exp: Likewise.
* gdb.reverse/watch-reverse.exp: Likewise.

diff --git a/gdb/testsuite/gdb.reverse/break-precsave.exp b/gdb/testsuite/gdb.reverse/break-precsave.exp
index c7e492b..dc035c0 100644
--- a/gdb/testsuite/gdb.reverse/break-precsave.exp
+++ b/gdb/testsuite/gdb.reverse/break-precsave.exp
@@ -17,7 +17,7 @@
# with breakpoints in a process record logfile.

# This test suitable only for process record-replay
-if ![target_info exists gdb,use_precord] {
+if ![supports_process_record] {
return
}

@@ -35,7 +35,7 @@ set end_location [gdb_get_line_number "end of main" ]

runto main

-if [target_info exists gdb,use_precord] {
+if [supports_process_record] {
# Activate process record/replay
gdb_test_no_output "record" "Turn on process record"
}
diff --git a/gdb/testsuite/gdb.reverse/break-reverse.exp b/gdb/testsuite/gdb.reverse/break-reverse.exp
index fd77bc5..d76a0e6 100644
--- a/gdb/testsuite/gdb.reverse/break-reverse.exp
+++ b/gdb/testsuite/gdb.reverse/break-reverse.exp
@@ -16,7 +16,7 @@
# This file is part of the GDB testsuite. It tests reverse debugging
# with breakpoints.

-if ![target_info exists gdb,can_reverse] {
+if ![supports_reverse] {
return
}

@@ -34,7 +34,7 @@ set end_location [gdb_get_line_number "end of main" ]

runto main

-if [target_info exists gdb,use_precord] {
+if [supports_process_record] {
# Activate process record/replay
gdb_test_no_output "record" "Turn on process record"
}
diff --git a/gdb/testsuite/gdb.reverse/consecutive-precsave.exp b/gdb/testsuite/gdb.reverse/consecutive-precsave.exp
index 86923f6..68d6f83 100644
--- a/gdb/testsuite/gdb.reverse/consecutive-precsave.exp
+++ b/gdb/testsuite/gdb.reverse/consecutive-precsave.exp
@@ -17,7 +17,7 @@
# consecutive instructions in a process record logfile.

# This test suitable only for process record-replay
-if ![target_info exists gdb,use_precord] {
+if ![supports_process_record] {
return
}

@@ -30,7 +30,7 @@ if { [prepare_for_testing $testfile.exp $testfile $srcfile] } {

runto main

-if [target_info exists gdb,use_precord] {
+if [supports_process_record] {
# Activate process record/replay
gdb_test_no_output "record" "Turn on process record"
}
diff --git a/gdb/testsuite/gdb.reverse/consecutive-reverse.exp b/gdb/testsuite/gdb.reverse/consecutive-reverse.exp
index 967236f..7027729 100644
--- a/gdb/testsuite/gdb.reverse/consecutive-reverse.exp
+++ b/gdb/testsuite/gdb.reverse/consecutive-reverse.exp
@@ -16,7 +16,7 @@
# This file is part of the GDB testsuite. It tests stepping over
# consecutive instructions in reverse.

-if ![target_info exists gdb,can_reverse] {
+if ![supports_reverse] {
return
}

@@ -29,7 +29,7 @@ if { [prepare_for_testing $testfile.exp $testfile $srcfile] } {

runto main

-if [target_info exists gdb,use_precord] {
+if [supports_process_record] {
# Activate process record/replay
gdb_test_no_output "record" "Turn on process record"
}
diff --git a/gdb/testsuite/gdb.reverse/finish-precsave.exp b/gdb/testsuite/gdb.reverse/finish-precsave.exp
index fbf35b6..7ba7b88 100644
--- a/gdb/testsuite/gdb.reverse/finish-precsave.exp
+++ b/gdb/testsuite/gdb.reverse/finish-precsave.exp
@@ -16,7 +16,7 @@
# This file is part of the GDB testsuite. It tests 'finish' with
# reverse debugging.

-if ![target_info exists gdb,can_reverse] {
+if ![supports_reverse] {
return
}

@@ -29,7 +29,7 @@ if { [prepare_for_testing $testfile.exp "$testfile" $srcfile] } {

runto main

-if [target_info exists gdb,use_precord] {
+if [supports_process_record] {
# Activate process record/replay
gdb_test_no_output "record" "Turn on process record"
}
diff --git a/gdb/testsuite/gdb.reverse/finish-reverse-bkpt.exp b/gdb/testsuite/gdb.reverse/finish-reverse-bkpt.exp
index 09f6837..4a8990a 100644
--- a/gdb/testsuite/gdb.reverse/finish-reverse-bkpt.exp
+++ b/gdb/testsuite/gdb.reverse/finish-reverse-bkpt.exp
@@ -19,7 +19,7 @@
# the functions entry would be ignored. Make sure the bug doesn't
# reappear.

-if ![target_info exists gdb,can_reverse] {
+if ![supports_reverse] {
return
}

@@ -35,7 +35,7 @@ if ![runto_main] then {
return 0
}

-if [target_info exists gdb,use_precord] {
+if [supports_process_record] {
# Activate process record/replay
gdb_test_no_output "record" "Turn on process record"
}
diff --git a/gdb/testsuite/gdb.reverse/finish-reverse.exp b/gdb/testsuite/gdb.reverse/finish-reverse.exp
index e6be158..0708b37 100644
--- a/gdb/testsuite/gdb.reverse/finish-reverse.exp
+++ b/gdb/testsuite/gdb.reverse/finish-reverse.exp
@@ -16,7 +16,7 @@
# This file is part of the GDB testsuite. It tests 'finish' with
# reverse debugging.

-if ![target_info exists gdb,can_reverse] {
+if ![supports_reverse] {
return
}

@@ -29,7 +29,7 @@ if { [prepare_for_testing $testfile.exp "$testfile" $srcfile] } {

runto main

-if [target_info exists gdb,use_precord] {
+if [supports_process_record] {
# Activate process record/replay
gdb_test_no_output "record" "Turn on process record"
}
diff --git a/gdb/testsuite/gdb.reverse/i386-precsave.exp b/gdb/testsuite/gdb.reverse/i386-precsave.exp
index 10d8ba3..e82dc90 100644
--- a/gdb/testsuite/gdb.reverse/i386-precsave.exp
+++ b/gdb/testsuite/gdb.reverse/i386-precsave.exp
@@ -20,7 +20,7 @@
#

# This test suitable only for process record-replay
-if ![target_info exists gdb,use_precord] {
+if ![supports_process_record] {
return
}

@@ -57,7 +57,7 @@ gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}
runto main

-if [target_info exists gdb,use_precord] {
+if [supports_process_record] {
# Activate process record/replay
gdb_test_no_output "record" "Turn on process record"
}
diff --git a/gdb/testsuite/gdb.reverse/i386-reverse.exp b/gdb/testsuite/gdb.reverse/i386-reverse.exp
index f9fda5e..0d7e57a 100644
--- a/gdb/testsuite/gdb.reverse/i386-reverse.exp
+++ b/gdb/testsuite/gdb.reverse/i386-reverse.exp
@@ -19,7 +19,7 @@
# This test tests some i386 general instructions for reverse execution.
#

-if ![target_info exists gdb,can_reverse] {
+if ![supports_reverse] {
return
}

@@ -56,7 +56,7 @@ gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}
runto main

-if [target_info exists gdb,use_precord] {
+if [supports_process_record] {
# Activate process record/replay
gdb_test_no_output "record" "Turn on process record"
}
diff --git a/gdb/testsuite/gdb.reverse/i386-sse-reverse.exp b/gdb/testsuite/gdb.reverse/i386-sse-reverse.exp
index 3e76643..2641b3a 100644
--- a/gdb/testsuite/gdb.reverse/i386-sse-reverse.exp
+++ b/gdb/testsuite/gdb.reverse/i386-sse-reverse.exp
@@ -19,7 +19,7 @@
# This test tests some i386 general instructions for reverse execution.
#

-if ![target_info exists gdb,can_reverse] {
+if ![supports_reverse] {
return
}

@@ -57,7 +57,7 @@ gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}
runto main

-if [target_info exists gdb,use_precord] {
+if [supports_process_record] {
# Activate process record/replay
gdb_test_no_output "record" "Turn on process record"
}
diff --git a/gdb/testsuite/gdb.reverse/machinestate-precsave.exp b/gdb/testsuite/gdb.reverse/machinestate-precsave.exp
index a2f2515..adc58da 100644
--- a/gdb/testsuite/gdb.reverse/machinestate-precsave.exp
+++ b/gdb/testsuite/gdb.reverse/machinestate-precsave.exp
@@ -36,7 +36,7 @@
#

# This test suitable only for process record-replay
-if ![target_info exists gdb,use_precord] {
+if ![supports_process_record] {
return
}

@@ -57,7 +57,7 @@ set endmain [gdb_get_line_number " end main " $srcfile]

runto main

-if [target_info exists gdb,use_precord] {
+if [supports_process_record] {
# Activate process record/replay
gdb_test_no_output "record" "Turn on process record"
}
diff --git a/gdb/testsuite/gdb.reverse/machinestate.exp b/gdb/testsuite/gdb.reverse/machinestate.exp
index bc2516e..d51a4a3 100644
--- a/gdb/testsuite/gdb.reverse/machinestate.exp
+++ b/gdb/testsuite/gdb.reverse/machinestate.exp
@@ -35,7 +35,7 @@
# Test forward replay
#

-if ![target_info exists gdb,can_reverse] {
+if ![supports_reverse] {
return
}

@@ -56,7 +56,7 @@ set endmain [gdb_get_line_number " end main " $srcfile]

runto main

-if [target_info exists gdb,use_precord] {
+if [supports_process_record] {
# Activate process record/replay
gdb_test_no_output "record" "Turn on process record"
}
diff --git a/gdb/testsuite/gdb.reverse/next-reverse-bkpt-over-sr.exp b/gdb/testsuite/gdb.reverse/next-reverse-bkpt-over-sr.exp
index 9a95dca..187eb24 100644
--- a/gdb/testsuite/gdb.reverse/next-reverse-bkpt-over-sr.exp
+++ b/gdb/testsuite/gdb.reverse/next-reverse-bkpt-over-sr.exp
@@ -23,7 +23,7 @@
# the same location as the step-resume breakpoint isn't ignored.
#

-if ![target_info exists gdb,can_reverse] {
+if ![supports_reverse] {
return
}

@@ -39,7 +39,7 @@ if ![runto_main] then {
return 0
}

-if [target_info exists gdb,use_precord] {
+if [supports_process_record] {
# Activate process record/replay
gdb_test_no_output "record" "Turn on process record"
}
diff --git a/gdb/testsuite/gdb.reverse/sigall-precsave.exp b/gdb/testsuite/gdb.reverse/sigall-precsave.exp
index 94144d3..a8c4184 100644
--- a/gdb/testsuite/gdb.reverse/sigall-precsave.exp
+++ b/gdb/testsuite/gdb.reverse/sigall-precsave.exp
@@ -18,7 +18,7 @@ if [target_info exists gdb,nosignals] {
return
}

-if ![target_info exists gdb,can_reverse] {
+if ![supports_reverse] {
return
}

@@ -172,7 +172,7 @@ gdb_load $binfile

runto gen_ABRT

-if [target_info exists gdb,use_precord] {
+if [supports_process_record] {
# Activate process record/replay
gdb_test_no_output "record" "Turn on process record"
}
diff --git a/gdb/testsuite/gdb.reverse/sigall-reverse.exp b/gdb/testsuite/gdb.reverse/sigall-reverse.exp
index d152965..f4bd085 100644
--- a/gdb/testsuite/gdb.reverse/sigall-reverse.exp
+++ b/gdb/testsuite/gdb.reverse/sigall-reverse.exp
@@ -18,7 +18,7 @@ if [target_info exists gdb,nosignals] {
return
}

-if ![target_info exists gdb,can_reverse] {
+if ![supports_reverse] {
return
}

@@ -172,7 +172,7 @@ gdb_load $binfile

runto gen_ABRT

-if [target_info exists gdb,use_precord] {
+if [supports_process_record] {
# Activate process record/replay
gdb_test_no_output "record" "Turn on process record"
}
diff --git a/gdb/testsuite/gdb.reverse/solib-precsave.exp b/gdb/testsuite/gdb.reverse/solib-precsave.exp
index be6502f..71b9ce3 100644
--- a/gdb/testsuite/gdb.reverse/solib-precsave.exp
+++ b/gdb/testsuite/gdb.reverse/solib-precsave.exp
@@ -17,7 +17,7 @@
# with shared libraries and a logfile.

# This test suitable only for process record-replay
-if ![target_info exists gdb,use_precord] {
+if ![supports_process_record] {
return
}

@@ -54,7 +54,7 @@ gdb_load ${binfile}

runto main

-if [target_info exists gdb,use_precord] {
+if [supports_process_record] {
# Activate process record/replay
gdb_test_no_output "record" "Turn on process record"
}
diff --git a/gdb/testsuite/gdb.reverse/solib-reverse.exp b/gdb/testsuite/gdb.reverse/solib-reverse.exp
index 1a51605..f57616c 100644
--- a/gdb/testsuite/gdb.reverse/solib-reverse.exp
+++ b/gdb/testsuite/gdb.reverse/solib-reverse.exp
@@ -16,7 +16,7 @@
# This file is part of the GDB testsuite. It tests reverse debugging
# with shared libraries.

-if ![target_info exists gdb,can_reverse] {
+if ![supports_reverse] {
return
}

@@ -53,7 +53,7 @@ gdb_load ${binfile}

runto main

-if [target_info exists gdb,use_precord] {
+if [supports_process_record] {
# Activate process record/replay
gdb_test_no_output "record" "Turn on process record"
}
diff --git a/gdb/testsuite/gdb.reverse/step-precsave.exp b/gdb/testsuite/gdb.reverse/step-precsave.exp
index e861116..da56bff 100644
--- a/gdb/testsuite/gdb.reverse/step-precsave.exp
+++ b/gdb/testsuite/gdb.reverse/step-precsave.exp
@@ -21,7 +21,7 @@
#

# This test suitable only for process record-replay
-if ![target_info exists gdb,use_precord] {
+if ![supports_process_record] {
return
}

@@ -34,7 +34,7 @@ if { [prepare_for_testing $testfile.exp $testfile $srcfile] } {

runto main

-if [target_info exists gdb,use_precord] {
+if [supports_process_record] {
# Activate process record/replay
gdb_test_no_output "record" "Turn on process record"
}
diff --git a/gdb/testsuite/gdb.reverse/step-reverse.exp b/gdb/testsuite/gdb.reverse/step-reverse.exp
index dd3bc70..9720f41 100644
--- a/gdb/testsuite/gdb.reverse/step-reverse.exp
+++ b/gdb/testsuite/gdb.reverse/step-reverse.exp
@@ -20,7 +20,7 @@
# Test step and next in reverse
#

-if ![target_info exists gdb,can_reverse] {
+if ![supports_reverse] {
return
}

@@ -33,7 +33,7 @@ if { [prepare_for_testing $testfile.exp $testfile $srcfile] } {

runto main

-if [target_info exists gdb,use_precord] {
+if [supports_process_record] {
# Activate process record/replay
gdb_test_no_output "record" "Turn on process record"
}
diff --git a/gdb/testsuite/gdb.reverse/until-precsave.exp b/gdb/testsuite/gdb.reverse/until-precsave.exp
index f903d5f..edf1a02 100644
--- a/gdb/testsuite/gdb.reverse/until-precsave.exp
+++ b/gdb/testsuite/gdb.reverse/until-precsave.exp
@@ -17,7 +17,7 @@
# 'advance' in precord logfile.

# This test suitable only for process record-replay
-if ![target_info exists gdb,use_precord] {
+if ![supports_process_record] {
return
}

@@ -38,7 +38,7 @@ set bp_location21 [gdb_get_line_number "set breakpoint 21 here"]

runto main

-if [target_info exists gdb,use_precord] {
+if [supports_process_record] {
# Activate process record/replay
gdb_test_no_output "record" "Turn on process record"
}
diff --git a/gdb/testsuite/gdb.reverse/until-reverse.exp b/gdb/testsuite/gdb.reverse/until-reverse.exp
index 0aeffe8..65adba1 100644
--- a/gdb/testsuite/gdb.reverse/until-reverse.exp
+++ b/gdb/testsuite/gdb.reverse/until-reverse.exp
@@ -16,7 +16,7 @@
# This file is part of the GDB testsuite. It tests 'until' and
# 'advance' in reverse debugging.

-if ![target_info exists gdb,can_reverse] {
+if ![supports_reverse] {
return
}

@@ -37,7 +37,7 @@ set bp_location21 [gdb_get_line_number "set breakpoint 21 here"]

runto main

-if [target_info exists gdb,use_precord] {
+if [supports_process_record] {
# Activate process record/replay
gdb_test_no_output "record" "Turn on process record"
}
diff --git a/gdb/testsuite/gdb.reverse/watch-precsave.exp b/gdb/testsuite/gdb.reverse/watch-precsave.exp
index 1eaefd0..b2f6618 100644
--- a/gdb/testsuite/gdb.reverse/watch-precsave.exp
+++ b/gdb/testsuite/gdb.reverse/watch-precsave.exp
@@ -18,7 +18,7 @@
# debugging with watchpoints.

# This test suitable only for process record-replay
-if ![target_info exists gdb,use_precord] {
+if ![supports_process_record] {
return
}

@@ -32,7 +32,7 @@ if { [prepare_for_testing $testfile.exp $testfile $srcfile] } {

runto main

-if [target_info exists gdb,use_precord] {
+if [supports_process_record] {
# Activate process record/replay
gdb_test_no_output "record" "Turn on process record"
}
diff --git a/gdb/testsuite/gdb.reverse/watch-reverse.exp b/gdb/testsuite/gdb.reverse/watch-reverse.exp
index ba91e9b..70adecf 100644
--- a/gdb/testsuite/gdb.reverse/watch-reverse.exp
+++ b/gdb/testsuite/gdb.reverse/watch-reverse.exp
@@ -18,7 +18,7 @@
# with watchpoints.

-if ![target_info exists gdb,can_reverse] {
+if ![supports_reverse] {
return
}

@@ -32,7 +32,7 @@ if { [prepare_for_testing $testfile.exp $testfile $srcfile] } {

runto main

-if [target_info exists gdb,use_precord] {
+if [supports_process_record] {
# Activate process record/replay
gdb_test_no_output "record" "Turn on process record"
}
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index f1900ef..3f0bffd 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -1546,6 +1546,36 @@ proc can_single_step_to_signal_handler {} {
return 1
}

+# Return 1 if target supports process record, otherwise return 0.
+
+proc supports_process_record {} {
+
+ if [target_info exists gdb,use_precord] {
+ return [target_info gdb,use_precord]
+ }
+
+ if { [istarget "x86_64-*-linux*"] || [istarget "i\[34567\]86-*-linux*"] } {
+ return 1
+ }
+
+ return 0
+}
+
+# Return 1 if target supports reverse debugging, otherwise return 0.
+
+proc supports_reverse {} {
+
+ if [target_info exists gdb,can_reverse] {
+ return [target_info gdb,can_reverse]
+ }
+
+ if { [istarget "x86_64-*-linux*"] || [istarget "i\[34567\]86-*-linux*"] } {
+ return 1
+ }
+
+ return 0
+}
+
# Return 1 if target is ILP32.
# This cannot be decided simply from looking at the target string,
# as it might depend on externally passed compiler options like -m64.