[gdb/testsuite] Add KFAIL for missing support of reverse-debugging xsave
Commit Message
Hi,
Normally the gdb.reverse/*.exp test-cases pass on my system (apart from the
record/23188 KFAIL for gdb.reverse/step-precsave.exp). But when specifying
GLIBC_TUNABLES=glibc.tune.hwcaps=-XSAVEC_Usable to force glibc to use
_dl_runtime_resolve_xsave instead of _dl_runtime_resolve_xsavec, we run into
1054 FAILs like this:
...
(gdb) PASS: gdb.reverse/sigall-reverse.exp: b gen_HUP
continue^M
Continuing.^M
Process record does not support instruction 0xfae64 at address \
0x7ffff7ded958.^M
Process record: failed to record execution log.^M
^M
Program stopped.^M
0x00007ffff7ded958 in _dl_runtime_resolve_xsave () from \
/lib64/ld-linux-x86-64.so.2^M
(gdb) FAIL: gdb.reverse/sigall-reverse.exp: get signal ABRT
...
The problem is that the xsave instruction is not supported in
reverse-debugging (PR record/25038).
Add KFAILs for this PR.
Tested on x86_64-linux.
OK for trunk?
Thanks,
- Tom
[gdb/testsuite] Add KFAIL for missing support of reverse-debugging xsave
gdb/testsuite/ChangeLog:
2019-09-27 Tom de Vries <tdevries@suse.de>
PR record/25038
* gdb.reverse/sigall-precsave.exp: Add PR record/25038 KFAIL.
* gdb.reverse/sigall-reverse.exp: Same.
* gdb.reverse/solib-precsave.exp: Same.
* gdb.reverse/solib-reverse.exp: Same.
* gdb.reverse/step-precsave.exp: Same.
* gdb.reverse/until-precsave.exp: Same.
* gdb.reverse/until-reverse.exp: Same.
* lib/gdb.exp (gdb_continue_to_breakpoint): Same.
---
gdb/testsuite/gdb.reverse/sigall-precsave.exp | 14 ++++++++++++--
gdb/testsuite/gdb.reverse/sigall-reverse.exp | 11 +++++++++++
gdb/testsuite/gdb.reverse/solib-precsave.exp | 13 ++++++++++++-
gdb/testsuite/gdb.reverse/solib-reverse.exp | 13 ++++++++++++-
gdb/testsuite/gdb.reverse/step-precsave.exp | 4 ++++
gdb/testsuite/gdb.reverse/until-precsave.exp | 13 ++++++++++++-
gdb/testsuite/gdb.reverse/until-reverse.exp | 15 ++++++++++++---
gdb/testsuite/lib/gdb.exp | 4 ++++
8 files changed, 79 insertions(+), 8 deletions(-)
Comments
On 27-09-2019 17:11, Tom de Vries wrote:
> Hi,
>
> Normally the gdb.reverse/*.exp test-cases pass on my system (apart from the
> record/23188 KFAIL for gdb.reverse/step-precsave.exp). But when specifying
> GLIBC_TUNABLES=glibc.tune.hwcaps=-XSAVEC_Usable to force glibc to use
> _dl_runtime_resolve_xsave instead of _dl_runtime_resolve_xsavec, we run into
> 1054 FAILs like this:
> ...
> (gdb) PASS: gdb.reverse/sigall-reverse.exp: b gen_HUP
> continue^M
> Continuing.^M
> Process record does not support instruction 0xfae64 at address \
> 0x7ffff7ded958.^M
> Process record: failed to record execution log.^M
> ^M
> Program stopped.^M
> 0x00007ffff7ded958 in _dl_runtime_resolve_xsave () from \
> /lib64/ld-linux-x86-64.so.2^M
> (gdb) FAIL: gdb.reverse/sigall-reverse.exp: get signal ABRT
> ...
>
> The problem is that the xsave instruction is not supported in
> reverse-debugging (PR record/25038).
>
> Add KFAILs for this PR.
>
> Tested on x86_64-linux.
>
> OK for trunk?
>
Ping.
Thanks,
- Tom
> [gdb/testsuite] Add KFAIL for missing support of reverse-debugging xsave
>
> gdb/testsuite/ChangeLog:
>
> 2019-09-27 Tom de Vries <tdevries@suse.de>
>
> PR record/25038
> * gdb.reverse/sigall-precsave.exp: Add PR record/25038 KFAIL.
> * gdb.reverse/sigall-reverse.exp: Same.
> * gdb.reverse/solib-precsave.exp: Same.
> * gdb.reverse/solib-reverse.exp: Same.
> * gdb.reverse/step-precsave.exp: Same.
> * gdb.reverse/until-precsave.exp: Same.
> * gdb.reverse/until-reverse.exp: Same.
> * lib/gdb.exp (gdb_continue_to_breakpoint): Same.
>
> ---
> gdb/testsuite/gdb.reverse/sigall-precsave.exp | 14 ++++++++++++--
> gdb/testsuite/gdb.reverse/sigall-reverse.exp | 11 +++++++++++
> gdb/testsuite/gdb.reverse/solib-precsave.exp | 13 ++++++++++++-
> gdb/testsuite/gdb.reverse/solib-reverse.exp | 13 ++++++++++++-
> gdb/testsuite/gdb.reverse/step-precsave.exp | 4 ++++
> gdb/testsuite/gdb.reverse/until-precsave.exp | 13 ++++++++++++-
> gdb/testsuite/gdb.reverse/until-reverse.exp | 15 ++++++++++++---
> gdb/testsuite/lib/gdb.exp | 4 ++++
> 8 files changed, 79 insertions(+), 8 deletions(-)
>
> diff --git a/gdb/testsuite/gdb.reverse/sigall-precsave.exp b/gdb/testsuite/gdb.reverse/sigall-precsave.exp
> index 79a1e7282b6..ccdfde407fc 100644
> --- a/gdb/testsuite/gdb.reverse/sigall-precsave.exp
> +++ b/gdb/testsuite/gdb.reverse/sigall-precsave.exp
> @@ -258,14 +258,20 @@ foreach sig $signals {
> }
> }
>
> -gdb_test_multiple "continue" "continue" {
> +set kfail_pattern "Process record does not support instruction 0xfae64 at.*"
> +set test "run to end of main"
> +gdb_test_multiple "continue" $test {
> -re "Breakpoint .* end of main .*$gdb_prompt $" {
> - pass "run to end of main"
> + pass $test
> }
> -re "Breakpoint .* handle_.*$gdb_prompt $" {
> send_gdb "continue\n"
> exp_continue
> }
> + -re "\[\r\n\]*(?:$kfail_pattern)\[\r\n\]+$gdb_prompt $" {
> + kfail "gdb/25038" $test
> + return -1
> + }
> }
>
> delete_breakpoints
> @@ -289,8 +295,12 @@ set sig_supported 1
> set thissig "ABRT"
>
> # test signal handling
> +set record_instruction_kfail 0
> foreach sig [lrange $signals 1 end] {
> test_one_sig $sig
> + if { $record_instruction_kfail } {
> + return -1
> + }
> }
>
> # The last signal (SIGTERM) gets handled slightly differently because
> diff --git a/gdb/testsuite/gdb.reverse/sigall-reverse.exp b/gdb/testsuite/gdb.reverse/sigall-reverse.exp
> index c734fe8e17a..884a00c5dcf 100644
> --- a/gdb/testsuite/gdb.reverse/sigall-reverse.exp
> +++ b/gdb/testsuite/gdb.reverse/sigall-reverse.exp
> @@ -37,6 +37,7 @@ proc test_one_sig {nextsig} {
> global sig_supported
> global gdb_prompt
> global thissig
> + global record_instruction_kfail
>
> set this_sig_supported $sig_supported
> gdb_test "handle SIG$thissig stop print" \
> @@ -51,6 +52,7 @@ proc test_one_sig {nextsig} {
> setup_xfail "i*86-pc-linuxoldld-gnu" "i*86-pc-linuxaout-gnu"
> }
> set testmsg "get signal $thissig"
> + set kfail_pattern "Process record does not support instruction 0xfae64 at.*"
> gdb_test_multiple "continue" $testmsg {
> -re "Program received signal SIG$thissig.*handle_$thissig.*$gdb_prompt $" {
> fail "$testmsg (wrong location)"
> @@ -62,6 +64,11 @@ proc test_one_sig {nextsig} {
> xfail $testmsg
> set need_another_continue 0
> }
> + -re "\[\r\n\]*(?:$kfail_pattern)\[\r\n\]+$gdb_prompt $" {
> + kfail "gdb/25038" "$testmsg"
> + set record_instruction_kfail 1
> + return
> + }
> }
> }
>
> @@ -237,8 +244,12 @@ set sig_supported 1
> set thissig "ABRT"
>
> # test signal handling
> +set record_instruction_kfail 0
> foreach sig [lrange $signals 1 end] {
> test_one_sig $sig
> + if { $record_instruction_kfail } {
> + return -1
> + }
> }
>
> # The last signal (SIGTERM) gets handled slightly differently because
> diff --git a/gdb/testsuite/gdb.reverse/solib-precsave.exp b/gdb/testsuite/gdb.reverse/solib-precsave.exp
> index 574d79816db..a3f874c09b7 100644
> --- a/gdb/testsuite/gdb.reverse/solib-precsave.exp
> +++ b/gdb/testsuite/gdb.reverse/solib-precsave.exp
> @@ -91,7 +91,18 @@ gdb_test "break $end_of_main" \
> "Breakpoint $decimal at .*$srcfile, line $end_of_main\." \
> "breakpoint at end of main"
>
> -gdb_test "continue" "Breakpoint .* end of main .*" "run to end of main"
> +set test "run to end of main"
> +set pass_pattern "Breakpoint .* end of main .*"
> +set kfail_pattern "Process record does not support instruction 0xfae64 at.*"
> +gdb_test_multiple "continue" $test {
> + -re "\[\r\n\]*(?:$pass_pattern)\[\r\n\]+$gdb_prompt $" {
> + pass $test
> + }
> + -re "\[\r\n\]*(?:$kfail_pattern)\[\r\n\]+$gdb_prompt $" {
> + kfail "gdb/25038" $test
> + return -1
> + }
> +}
>
> gdb_test "record save $precsave" \
> "Saved core file $precsave with execution log\." \
> diff --git a/gdb/testsuite/gdb.reverse/solib-reverse.exp b/gdb/testsuite/gdb.reverse/solib-reverse.exp
> index 77c321388b4..53b35239f81 100644
> --- a/gdb/testsuite/gdb.reverse/solib-reverse.exp
> +++ b/gdb/testsuite/gdb.reverse/solib-reverse.exp
> @@ -86,7 +86,18 @@ if [supports_process_record] {
>
> set end_part_one [gdb_get_line_number " end part one" "$srcfile"]
> set end_part_two [gdb_get_line_number " end part two" "$srcfile"]
> -gdb_test "until $end_part_one" " end part one.*" "run until end part one"
> +set test "run until end part one"
> +set pass_pattern " end part one.*"
> +set kfail_pattern "Process record does not support instruction 0xfae64 at.*"
> +gdb_test_multiple "until $end_part_one" $test {
> + -re "\[\r\n\]*(?:$pass_pattern)\[\r\n\]+$gdb_prompt $" {
> + pass $test
> + }
> + -re "\[\r\n\]*(?:$kfail_pattern)\[\r\n\]+$gdb_prompt $" {
> + kfail "gdb/25038" $test
> + return -1
> + }
> +}
>
> gdb_test "reverse-step" " shr1 three .*" "reverse-step third shr1"
> gdb_test "reverse-step" " shr1 two .*" "reverse-step second shr1"
> diff --git a/gdb/testsuite/gdb.reverse/step-precsave.exp b/gdb/testsuite/gdb.reverse/step-precsave.exp
> index 2073b8a1542..72ee279f806 100644
> --- a/gdb/testsuite/gdb.reverse/step-precsave.exp
> +++ b/gdb/testsuite/gdb.reverse/step-precsave.exp
> @@ -49,6 +49,7 @@ with_timeout_factor 20 {
> set test "run to end of main"
> set pass_pattern "Breakpoint .* end of main .*"
> set kfail_pattern "Process record does not support instruction 0xc5 at.*"
> + set kfail2_pattern "Process record does not support instruction 0xfae64 at.*"
> gdb_test_multiple "continue" $test {
> -re "\[\r\n\]*(?:$pass_pattern)\[\r\n\]+$gdb_prompt $" {
> pass $test
> @@ -56,6 +57,9 @@ with_timeout_factor 20 {
> -re "\[\r\n\]*(?:$kfail_pattern)\[\r\n\]+$gdb_prompt $" {
> kfail "record/23188" $test
> }
> + -re "\[\r\n\]*(?:$kfail2_pattern)\[\r\n\]+$gdb_prompt $" {
> + kfail "record/25038" $test
> + }
> }
> }
>
> diff --git a/gdb/testsuite/gdb.reverse/until-precsave.exp b/gdb/testsuite/gdb.reverse/until-precsave.exp
> index baf21ab7ad2..1f09df193fd 100644
> --- a/gdb/testsuite/gdb.reverse/until-precsave.exp
> +++ b/gdb/testsuite/gdb.reverse/until-precsave.exp
> @@ -50,7 +50,18 @@ gdb_test "break $end_of_main" \
>
> # This can take awhile.
> with_timeout_factor 20 {
> - gdb_test "continue" "Breakpoint .* set breakpoint 10a here .*" "run to end of main"
> + set test "run to end of main"
> + set pass_pattern "Breakpoint .* set breakpoint 10a here .*"
> + set kfail_pattern "Process record does not support instruction 0xfae64 at.*"
> + gdb_test_multiple "continue" $test {
> + -re "\[\r\n\]*(?:$pass_pattern)\[\r\n\]+$gdb_prompt $" {
> + pass $test
> + }
> + -re "\[\r\n\]*(?:$kfail_pattern)\[\r\n\]+$gdb_prompt $" {
> + kfail "gdb/25038" $test
> + return -1
> + }
> + }
> }
>
> # So can this, against gdbserver, for example.
> diff --git a/gdb/testsuite/gdb.reverse/until-reverse.exp b/gdb/testsuite/gdb.reverse/until-reverse.exp
> index 2e26de3ce7b..804e07f46ca 100644
> --- a/gdb/testsuite/gdb.reverse/until-reverse.exp
> +++ b/gdb/testsuite/gdb.reverse/until-reverse.exp
> @@ -49,9 +49,18 @@ gdb_test "until $bp_location1" \
>
> # Advance up to factorial, outer invocation
> #
> -gdb_test "advance factorial" \
> - "factorial .value=6..*$srcfile:$bp_location7.*" \
> - "advance to factorial"
> +set test "advance to factorial"
> +set pass_pattern "factorial .value=6..*$srcfile:$bp_location7.*"
> +set kfail_pattern "Process record does not support instruction 0xfae64 at.*"
> +gdb_test_multiple "advance factorial" $test {
> + -re "\[\r\n\]*(?:$pass_pattern)\[\r\n\]+$gdb_prompt $" {
> + pass "$test"
> + }
> + -re "\[\r\n\]*(?:$kfail_pattern)\[\r\n\]+$gdb_prompt $" {
> + kfail "gdb/25038" $test
> + return -1
> + }
> +}
>
> # At this point, 'until' should continue the inferior up to when all the
> # inner invocations of factorial() are completed and we are back at this
> diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
> index 3a1f053cf8a..1fcd0f76a52 100644
> --- a/gdb/testsuite/lib/gdb.exp
> +++ b/gdb/testsuite/lib/gdb.exp
> @@ -633,10 +633,14 @@ proc gdb_continue_to_breakpoint {name {location_pattern .*}} {
> global gdb_prompt
> set full_name "continue to breakpoint: $name"
>
> + set kfail_pattern "Process record does not support instruction 0xfae64 at.*"
> gdb_test_multiple "continue" $full_name {
> -re "(?:Breakpoint|Temporary breakpoint) .* (at|in) $location_pattern\r\n$gdb_prompt $" {
> pass $full_name
> }
> + -re "\[\r\n\]*(?:$kfail_pattern)\[\r\n\]+$gdb_prompt $" {
> + kfail "gdb/25038" $full_name
> + }
> }
> }
>
>
On 2019-09-27 11:11, Tom de Vries wrote:
> Hi,
>
> Normally the gdb.reverse/*.exp test-cases pass on my system (apart from
> the
> record/23188 KFAIL for gdb.reverse/step-precsave.exp). But when
> specifying
> GLIBC_TUNABLES=glibc.tune.hwcaps=-XSAVEC_Usable to force glibc to use
> _dl_runtime_resolve_xsave instead of _dl_runtime_resolve_xsavec, we run
> into
> 1054 FAILs like this:
> ...
> (gdb) PASS: gdb.reverse/sigall-reverse.exp: b gen_HUP
> continue^M
> Continuing.^M
> Process record does not support instruction 0xfae64 at address \
> 0x7ffff7ded958.^M
> Process record: failed to record execution log.^M
> ^M
> Program stopped.^M
> 0x00007ffff7ded958 in _dl_runtime_resolve_xsave () from \
> /lib64/ld-linux-x86-64.so.2^M
> (gdb) FAIL: gdb.reverse/sigall-reverse.exp: get signal ABRT
> ...
>
> The problem is that the xsave instruction is not supported in
> reverse-debugging (PR record/25038).
>
> Add KFAILs for this PR.
>
> Tested on x86_64-linux.
>
> OK for trunk?
Hi Tom,
That looks good to me in general. Just one note here:
> @@ -289,8 +295,12 @@ set sig_supported 1
> set thissig "ABRT"
>
> # test signal handling
> +set record_instruction_kfail 0
> foreach sig [lrange $signals 1 end] {
> test_one_sig $sig
> + if { $record_instruction_kfail } {
> + return -1
> + }
It seems like record_instruction_kfail is never set in this file,
sigall-precsave.exp, I suppose it should?
Simon
On 13-10-2019 01:09, Simon Marchi wrote:
> On 2019-09-27 11:11, Tom de Vries wrote:
>> Hi,
>>
>> Normally the gdb.reverse/*.exp test-cases pass on my system (apart
>> from the
>> record/23188 KFAIL for gdb.reverse/step-precsave.exp). But when
>> specifying
>> GLIBC_TUNABLES=glibc.tune.hwcaps=-XSAVEC_Usable to force glibc to use
>> _dl_runtime_resolve_xsave instead of _dl_runtime_resolve_xsavec, we
>> run into
>> 1054 FAILs like this:
>> ...
>> (gdb) PASS: gdb.reverse/sigall-reverse.exp: b gen_HUP
>> continue^M
>> Continuing.^M
>> Process record does not support instruction 0xfae64 at address \
>> 0x7ffff7ded958.^M
>> Process record: failed to record execution log.^M
>> ^M
>> Program stopped.^M
>> 0x00007ffff7ded958 in _dl_runtime_resolve_xsave () from \
>> /lib64/ld-linux-x86-64.so.2^M
>> (gdb) FAIL: gdb.reverse/sigall-reverse.exp: get signal ABRT
>> ...
>>
>> The problem is that the xsave instruction is not supported in
>> reverse-debugging (PR record/25038).
>>
>> Add KFAILs for this PR.
>>
>> Tested on x86_64-linux.
>>
>> OK for trunk?
>
> Hi Tom,
>
> That looks good to me in general. Just one note here:
>
>> @@ -289,8 +295,12 @@ set sig_supported 1
>> set thissig "ABRT"
>>
>> # test signal handling
>> +set record_instruction_kfail 0
>> foreach sig [lrange $signals 1 end] {
>> test_one_sig $sig
>> + if { $record_instruction_kfail } {
>> + return -1
>> + }
>
> It seems like record_instruction_kfail is never set in this file,
> sigall-precsave.exp, I suppose it should?
Hi,
thanks for the review. It seems that was some dead code, I've removed it
now and committed.
Thanks,
- Tom
@@ -258,14 +258,20 @@ foreach sig $signals {
}
}
-gdb_test_multiple "continue" "continue" {
+set kfail_pattern "Process record does not support instruction 0xfae64 at.*"
+set test "run to end of main"
+gdb_test_multiple "continue" $test {
-re "Breakpoint .* end of main .*$gdb_prompt $" {
- pass "run to end of main"
+ pass $test
}
-re "Breakpoint .* handle_.*$gdb_prompt $" {
send_gdb "continue\n"
exp_continue
}
+ -re "\[\r\n\]*(?:$kfail_pattern)\[\r\n\]+$gdb_prompt $" {
+ kfail "gdb/25038" $test
+ return -1
+ }
}
delete_breakpoints
@@ -289,8 +295,12 @@ set sig_supported 1
set thissig "ABRT"
# test signal handling
+set record_instruction_kfail 0
foreach sig [lrange $signals 1 end] {
test_one_sig $sig
+ if { $record_instruction_kfail } {
+ return -1
+ }
}
# The last signal (SIGTERM) gets handled slightly differently because
@@ -37,6 +37,7 @@ proc test_one_sig {nextsig} {
global sig_supported
global gdb_prompt
global thissig
+ global record_instruction_kfail
set this_sig_supported $sig_supported
gdb_test "handle SIG$thissig stop print" \
@@ -51,6 +52,7 @@ proc test_one_sig {nextsig} {
setup_xfail "i*86-pc-linuxoldld-gnu" "i*86-pc-linuxaout-gnu"
}
set testmsg "get signal $thissig"
+ set kfail_pattern "Process record does not support instruction 0xfae64 at.*"
gdb_test_multiple "continue" $testmsg {
-re "Program received signal SIG$thissig.*handle_$thissig.*$gdb_prompt $" {
fail "$testmsg (wrong location)"
@@ -62,6 +64,11 @@ proc test_one_sig {nextsig} {
xfail $testmsg
set need_another_continue 0
}
+ -re "\[\r\n\]*(?:$kfail_pattern)\[\r\n\]+$gdb_prompt $" {
+ kfail "gdb/25038" "$testmsg"
+ set record_instruction_kfail 1
+ return
+ }
}
}
@@ -237,8 +244,12 @@ set sig_supported 1
set thissig "ABRT"
# test signal handling
+set record_instruction_kfail 0
foreach sig [lrange $signals 1 end] {
test_one_sig $sig
+ if { $record_instruction_kfail } {
+ return -1
+ }
}
# The last signal (SIGTERM) gets handled slightly differently because
@@ -91,7 +91,18 @@ gdb_test "break $end_of_main" \
"Breakpoint $decimal at .*$srcfile, line $end_of_main\." \
"breakpoint at end of main"
-gdb_test "continue" "Breakpoint .* end of main .*" "run to end of main"
+set test "run to end of main"
+set pass_pattern "Breakpoint .* end of main .*"
+set kfail_pattern "Process record does not support instruction 0xfae64 at.*"
+gdb_test_multiple "continue" $test {
+ -re "\[\r\n\]*(?:$pass_pattern)\[\r\n\]+$gdb_prompt $" {
+ pass $test
+ }
+ -re "\[\r\n\]*(?:$kfail_pattern)\[\r\n\]+$gdb_prompt $" {
+ kfail "gdb/25038" $test
+ return -1
+ }
+}
gdb_test "record save $precsave" \
"Saved core file $precsave with execution log\." \
@@ -86,7 +86,18 @@ if [supports_process_record] {
set end_part_one [gdb_get_line_number " end part one" "$srcfile"]
set end_part_two [gdb_get_line_number " end part two" "$srcfile"]
-gdb_test "until $end_part_one" " end part one.*" "run until end part one"
+set test "run until end part one"
+set pass_pattern " end part one.*"
+set kfail_pattern "Process record does not support instruction 0xfae64 at.*"
+gdb_test_multiple "until $end_part_one" $test {
+ -re "\[\r\n\]*(?:$pass_pattern)\[\r\n\]+$gdb_prompt $" {
+ pass $test
+ }
+ -re "\[\r\n\]*(?:$kfail_pattern)\[\r\n\]+$gdb_prompt $" {
+ kfail "gdb/25038" $test
+ return -1
+ }
+}
gdb_test "reverse-step" " shr1 three .*" "reverse-step third shr1"
gdb_test "reverse-step" " shr1 two .*" "reverse-step second shr1"
@@ -49,6 +49,7 @@ with_timeout_factor 20 {
set test "run to end of main"
set pass_pattern "Breakpoint .* end of main .*"
set kfail_pattern "Process record does not support instruction 0xc5 at.*"
+ set kfail2_pattern "Process record does not support instruction 0xfae64 at.*"
gdb_test_multiple "continue" $test {
-re "\[\r\n\]*(?:$pass_pattern)\[\r\n\]+$gdb_prompt $" {
pass $test
@@ -56,6 +57,9 @@ with_timeout_factor 20 {
-re "\[\r\n\]*(?:$kfail_pattern)\[\r\n\]+$gdb_prompt $" {
kfail "record/23188" $test
}
+ -re "\[\r\n\]*(?:$kfail2_pattern)\[\r\n\]+$gdb_prompt $" {
+ kfail "record/25038" $test
+ }
}
}
@@ -50,7 +50,18 @@ gdb_test "break $end_of_main" \
# This can take awhile.
with_timeout_factor 20 {
- gdb_test "continue" "Breakpoint .* set breakpoint 10a here .*" "run to end of main"
+ set test "run to end of main"
+ set pass_pattern "Breakpoint .* set breakpoint 10a here .*"
+ set kfail_pattern "Process record does not support instruction 0xfae64 at.*"
+ gdb_test_multiple "continue" $test {
+ -re "\[\r\n\]*(?:$pass_pattern)\[\r\n\]+$gdb_prompt $" {
+ pass $test
+ }
+ -re "\[\r\n\]*(?:$kfail_pattern)\[\r\n\]+$gdb_prompt $" {
+ kfail "gdb/25038" $test
+ return -1
+ }
+ }
}
# So can this, against gdbserver, for example.
@@ -49,9 +49,18 @@ gdb_test "until $bp_location1" \
# Advance up to factorial, outer invocation
#
-gdb_test "advance factorial" \
- "factorial .value=6..*$srcfile:$bp_location7.*" \
- "advance to factorial"
+set test "advance to factorial"
+set pass_pattern "factorial .value=6..*$srcfile:$bp_location7.*"
+set kfail_pattern "Process record does not support instruction 0xfae64 at.*"
+gdb_test_multiple "advance factorial" $test {
+ -re "\[\r\n\]*(?:$pass_pattern)\[\r\n\]+$gdb_prompt $" {
+ pass "$test"
+ }
+ -re "\[\r\n\]*(?:$kfail_pattern)\[\r\n\]+$gdb_prompt $" {
+ kfail "gdb/25038" $test
+ return -1
+ }
+}
# At this point, 'until' should continue the inferior up to when all the
# inner invocations of factorial() are completed and we are back at this
@@ -633,10 +633,14 @@ proc gdb_continue_to_breakpoint {name {location_pattern .*}} {
global gdb_prompt
set full_name "continue to breakpoint: $name"
+ set kfail_pattern "Process record does not support instruction 0xfae64 at.*"
gdb_test_multiple "continue" $full_name {
-re "(?:Breakpoint|Temporary breakpoint) .* (at|in) $location_pattern\r\n$gdb_prompt $" {
pass $full_name
}
+ -re "\[\r\n\]*(?:$kfail_pattern)\[\r\n\]+$gdb_prompt $" {
+ kfail "gdb/25038" $full_name
+ }
}
}