diff -Naur testsuite.old/ChangeLog testsuite/ChangeLog --- testsuite.old/ChangeLog 2005-03-01 14:56:21.439229400 -0800 +++ testsuite/ChangeLog 2005-03-01 15:59:49.052246512 -0800 @@ -1,3 +1,10 @@ +2004-03-01 Paul Gilliam + + * lib/gdb.exp: added 'skip_altivec_tests', a modification of + Janis Johnson's 'check_vmx_hw_available' from GCC testsuite + * lib/gdb.arch/altivec-abi.exp: use new 'skip_altivec_tests' + * lib/gdb.arch/altivec-regs.exp: Likewise + 2004-02-24 Joel Brobecker * gdb.ada/fixed_points.exp: Create compilation object directory diff -Naur testsuite.old/gdb.arch/altivec-abi.exp testsuite/gdb.arch/altivec-abi.exp --- testsuite.old/gdb.arch/altivec-abi.exp 2005-03-01 14:56:21.484222560 -0800 +++ testsuite/gdb.arch/altivec-abi.exp 2005-03-01 15:01:49.451289288 -0800 @@ -32,7 +32,7 @@ set prms_id 0 set bug_id 0 -if ![istarget "powerpc-*altivec"] then { +if [skip_altivec_tests] { verbose "Skipping altivec abi tests." return } diff -Naur testsuite.old/gdb.arch/altivec-regs.exp testsuite/gdb.arch/altivec-regs.exp --- testsuite.old/gdb.arch/altivec-regs.exp 2005-03-01 14:56:21.485222408 -0800 +++ testsuite/gdb.arch/altivec-regs.exp 2005-03-01 15:02:41.869176744 -0800 @@ -32,7 +32,7 @@ set prms_id 0 set bug_id 0 -if ![istarget "powerpc-*altivec"] then { +if [skip_altivec_tests] then { verbose "Skipping altivec register tests." return } diff -Naur testsuite.old/lib/gdb.exp testsuite/lib/gdb.exp --- testsuite.old/lib/gdb.exp 2005-03-01 14:56:22.127258976 -0800 +++ testsuite/lib/gdb.exp 2005-03-02 10:09:13.241270112 -0800 @@ -1142,6 +1142,59 @@ return 0 } +# Run a test on the target to see if it supports vmx hardware. +# Return 1 if it does not, 0 if it does. + +# This code is based on 'check_vmx_hw_available' from the GCC testsuite. + +proc skip_altivec_tests {} { + global skip_vmx_tests_saved + + if [info exists skip_vmx_tests_saved] { + verbose "check_hw_available: returning saved $skip_vmx_tests_saved" 2 + return $skip_vmx_tests_saved + } + + # Some simulators are known to not support VMX instructions. + if { [istarget powerpc-*-eabi] || [istarget powerpc*-*-eabispe] } { + verbose "check_hw_available returning 0" 2 + return [set $skip_vmx_tests_saved 1] + } + + # Set up, compile, and execute a test program containing VMX + # instructions. Include the current process ID in the file + # names to prevent conflicts with invocations for multiple + # testsuites. + set src vmx[pid].c + set exe vmx[pid].x + + set f [open $src "w"] + puts $f "int main() {" + puts $f "#ifdef __MACH__" + puts $f " asm volatile (\"vor v0,v0,v0\");" + puts $f "#else" + puts $f " asm volatile (\"vor 0,0,0\");" + puts $f "#endif" + puts $f " return 0; }" + close $f + + verbose "skip_altivec_testing compiling testfile $src" 1 + set lines [gdb_compile $src $exe executable {debug additional_flags=-maltivec}] + file delete $src + + if ![string match "" $lines] then { + verbose "check_vmx_hw_availalble testfile compilation failed" 2 + return [set skip_vmx_tests_saved 1] + } + + # No error message, compilation succeeded so now run it. + + set exec_result [remote_exec target "./$exe"] + remote_file build delete "$exe" + + return [set skip_vmx_tests_saved [lindex $exec_result 0]] +} + # Skip all the tests in the file if you are not on an hppa running # hpux target.