--- testsuite/gdb.reverse/i386-reverse.c | 16 ++++++++++++++++ testsuite/gdb.reverse/i386-reverse.exp | 27 +++++++++++++++++---------- 2 files changed, 33 insertions(+), 10 deletions(-) --- a/testsuite/gdb.reverse/i386-reverse.c +++ b/testsuite/gdb.reverse/i386-reverse.c @@ -38,9 +38,25 @@ inc_dec_tests (void) asm ("dec %edi"); } /* end inc_dec_tests */ +void +string_insn_tests (void) +{ + register char x asm("ax"); + char *dstp = (char *) 1; + int d0; + int len = 0; + + asm volatile("rep\n" + "stosb" /* %0, %2, %3 */ : + "=D" (dstp), "=c" (d0) : + "0" (dstp), "1" (len), "a" (x) : + "memory"); +} /* end string_insn_tests */ + int main () { inc_dec_tests (); + string_insn_tests (); return 0; /* end of main */ } --- a/testsuite/gdb.reverse/i386-reverse.exp +++ b/testsuite/gdb.reverse/i386-reverse.exp @@ -53,6 +53,7 @@ if { [gdb_compile "${srcdir}/${subdir}/$ set end_of_main [gdb_get_line_number " end of main "] set end_of_inc_dec_tests [gdb_get_line_number " end inc_dec_tests "] +set string_insn_tests [gdb_get_line_number " end string_insn_tests "] # Get things started. @@ -201,21 +202,13 @@ gdb_expect { # gdb_test "step" "end inc_dec_tests .*" "step to end inc_dec_tests 1st time" -gdb_test "break $end_of_main" \ - "Breakpoint $decimal at .* line $end_of_main\." \ - "set breakpoint at end of main" - -gdb_test "continue" \ - " end of main .*" \ - "continue to end of main" - gdb_test "break $end_of_inc_dec_tests" \ "Breakpoint $decimal at .* line $end_of_inc_dec_tests\." \ "set breakpoint at end of inc_dec_tests" -gdb_test "reverse-continue" \ +gdb_test "continue" \ " end inc_dec_tests .*" \ - "reverse to inc_dec_tests" + "continue to inc_dec_tests" # # Now reverse step, and check register values. @@ -285,4 +278,18 @@ gdb_test "info reg eax" "eax *$predec_ea gdb_test "reverse-step" "inc .eax.*" "reverse-step to inc eax" gdb_test "info reg eax" "eax *$preinc_eax\t.*" "eax after reverse-inc" +gdb_test "continue" \ + " end inc_dec_tests .*" \ + "continue to inc_dec_tests" +# +# Test string instruction. +# + +gdb_test "break $string_insn_tests" \ + "Breakpoint $decimal at .* line $string_insn_tests\." \ + "set breakpoint at end of string_insn_tests" + +gdb_test "continue" \ + " end string_insn_tests .*" \ + "continue to inc_dec_tests"