1# Copyright 2011-2015 Free Software Foundation, Inc. 2 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. 7# 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. 12# 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/>. 15 16load_lib dwarf.exp 17 18standard_testfile .S 19set test "clztest" 20 21# This test can only be run on targets which support DWARF-2 and use gas. 22if ![dwarf2_support] { 23 return 0 24} 25 26# This test can only be run on x86-64 targets. 27if {![istarget x86_64-*] || ![is_lp64_target]} { 28 return 0 29} 30 31if { [prepare_for_testing "${test}.exp" "${test}" ${test}.S {nodebug additional_flags=-nostdlib}] } { 32 return -1 33} 34 35if ![runto_main] { 36 return -1 37} 38 39# Initialize tests to be an empty array. 40unset -nocomplain tests 41array set tests {} 42 43proc gdb-test {line var value} { 44 global tests 45 46 lappend tests($line) [list $var $value 0] 47} 48 49proc xfail-gdb-test {line var value} { 50 global tests 51 52 lappend tests($line) [list $var $value 1] 53} 54 55proc scan_gdb_tests {} { 56 global srcdir subdir test 57 58 set file "$srcdir/$subdir/$test.c" 59 60 set fd [open "$file"] 61 while {![eof $fd]} { 62 set line [gets $fd] 63 if {! [regexp "\{ (gdb-test .+) \} \}" $line ignore test_cmd]} { 64 continue 65 } 66 67 eval $test_cmd 68 } 69 close $fd 70} 71 72scan_gdb_tests 73 74foreach line [lsort [array names tests]] { 75 gdb_test "break ${test}.c:$line" "Breakpoint .*" \ 76 "set breakpoint at ${test}.c:$line" 77 gdb_continue_to_breakpoint "continue to ${test}.c:$line" 78 79 foreach testvec $tests($line) { 80 set var [lindex $testvec 0] 81 set value [lindex $testvec 1] 82 set should_xfail [lindex $testvec 2] 83 84 if {$should_xfail} { 85 setup_xfail *-*-* 86 } 87 88 gdb_test "print $var" \ 89 " = $value" \ 90 "check value of $var at ${test}.c:$line" 91 } 92} 93