1 # Copyright
2015-2019 Free Software Foundation
, Inc.
2 # This
program is free software
; you can redistribute it and
/or modify
3 # it under the terms of the GNU General Public License as published by
4 # the Free Software Foundation
; either version
3 of the License
, or
5 #
(at your option
) any later version.
7 # This
program is distributed in the hope that it will be useful
,
8 # but WITHOUT
ANY WARRANTY
; without even the implied warranty of
9 # MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the
10 # GNU General Public License
for more details.
12 # You should have received a copy of the GNU General Public License
13 # along with this
program.
If not
, see
<http
://www.gnu.org
/licenses
/>.
15 standard_testfile insn
-reloc.c
16 set executable $testfile
17 set expfile $testfile.exp
19 if { ![support_displaced_stepping
] } {
20 unsupported
"displaced stepping"
24 # Some targets have leading underscores
on assembly symbols.
25 set additional_flags
[gdb_target_symbol_prefix_flags
]
27 if [prepare_for_testing
"failed to prepare" $executable $srcfile \
28 [list debug $additional_flags
]] {
33 fail
"can't run to main"
37 # Read function
name from testcases
[N
].
39 proc read_testcase
{ n
} {
43 gdb_test_multiple
"print testcases\[${n}\]" "read name of test case ${n}" {
44 -re
"\[$\].*= .*<(.*)>.*$gdb_prompt $" {
45 set result $expect_out
(1,string
)
47 -re
"$gdb_prompt $" { }
53 set n_testcases
[get_integer_valueof
"n_testcases" 0]
54 if { $
{n_testcases
} == 0 } {
55 untested
"no instruction relocation to test"
59 #
Set a fast tracepoint
on each set_point$
{i
} symbol. There is one
for
61 for { set i
0 } { $
{i
} < $
{n_testcases
} } { incr i
} {
62 set testcase
[read_testcase $i
]
64 gdb_test
"break *set_point$i" "Breakpoint .*" "breakpoint on ${testcase}"
67 gdb_test
"break pass" ".*" ""
68 gdb_test
"break fail" ".*" ""
70 gdb_test_no_output
"set displaced-stepping on"
72 # Make sure we have hit the pass breakpoint
for each testcase.
73 for { set i
0 } { $
{i
} < $
{n_testcases
} } { incr i
} {
74 set testcase
[read_testcase $i
]
76 with_test_prefix
"${testcase}" {
77 gdb_test
"continue" ".*Breakpoint \[0-9\]+, .*" \
80 gdb_test
"continue" ".*Breakpoint \[0-9\]+, pass \(\).*" \
81 "relocated instruction"