1# Copyright 2012-2020 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 16if ![is_x86_like_target] { 17 verbose "Skipping x86 SSE stack alignment tests." 18 return 19} 20 21set testfile "i386-sse-stack-align" 22set srcfile ${testfile}.S 23set csrcfile ${testfile}.c 24set executable ${testfile} 25set binfile [standard_output_file ${executable}] 26set opts {} 27 28if [info exists COMPILE] { 29 set srcfile ${csrcfile} 30 lappend opts debug optimize=-O2 additional_flags=-msse 31} 32 33if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable $opts] != "" } { 34 unsupported "failed to compile" 35 return -1 36} 37 38clean_restart $executable 39 40if ![runto_main] then { 41 return -1 42} 43 44set args "" 45foreach i {0 1 2 3 4} { 46 set test "print (int) g$i ($args)" 47 gdb_test_multiple $test $test { 48 -re " = 2\r\n$gdb_prompt $" { 49 pass $test 50 } 51 -re "Program received signal SIGSEGV, Segmentation fault\\..*\r\n$gdb_prompt $" { 52 fail $test 53 } 54 } 55 56 if {$args != ""} { 57 set args "$args, " 58 } 59 set args "$args[expr $i + 1]" 60} 61