1 # Copyright
(C
) 2012-2019 Free Software Foundation
, Inc.
3 # This
program is free software
; you can redistribute it and
/or modify
4 # it under the terms of the GNU General Public License as published by
5 # the Free Software Foundation
; either version
3 of the License
, or
6 #
(at your option
) any later version.
8 # This
program is distributed in the hope that it will be useful
,
9 # but WITHOUT
ANY WARRANTY
; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the
11 # GNU General Public License
for more details.
13 # You should have received a copy of the GNU General Public License
14 # along with this
program; if not
, see
<http
://www.gnu.org
/licenses
/>.
16 # Test single
-step
on bbit.
18 if ![istarget
"*octeon*"] {
22 proc current_insn
{} {
27 -re
".*?:\\s+\(.*?\)\\s*$gdb_prompt $" {
28 set insn $expect_out
(1,string
)
40 -re
"$gdb_prompt \$" {
47 proc single_step_until
{ match
} {
50 set insn
[current_insn
]
52 while { $insn
!= "" && [timestamp] - $start < 3*$timeout } {
53 if [regexp $match $insn
] {
59 set insn
[current_insn
]
64 proc test_bbit
{ name taken
} {
65 if {![single_step_until
"bbit"]} {
66 fail
"$name single-step until bbit"
69 pass
"$name single-step until bbit"
70 gdb_test
"si" "" "$name single-step on bbit"
71 if [regexp
"li\\s+\[sv\]0,$taken" [current_insn]] {
72 pass
"$name check insn after bbit"
74 send_log
"expected: li\\s+\[sv\]0,$taken found [current_insn]\n"
75 fail
"$name check insn after bbit"
79 set testfile
"mips-octeon-bbit"
80 set srcfile $
{testfile
}.c
81 set binfile $
{objdir
}/$
{subdir
}/$
{testfile
}
83 if { [gdb_compile
"${srcdir}/${subdir}/${srcfile}" "${binfile}" executable \
84 {debug nowarnings
}] != "" } {
93 gdb_reinitialize_dir $srcdir
/$subdir
99 foreach n
[list
"0_10" "0_36" "1_20" "1_49"] {
100 lappend tests
"bbit_is_taken_$n"
102 foreach func $tests
{
103 gdb_test
"break $func" "Breakpoint.*at.*" "set breakpoint on $func"
106 foreach func $tests
{
107 gdb_test
"continue" "Continuing.*Breakpoint.*$func.*" "hit $func first"
108 test_bbit
"$func branch taken" 1
109 gdb_test
"continue" "Continuing.*Breakpoint.*$func.*" "hit $func second"
110 test_bbit
"$func branch not taken" 0