From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13526 invoked by alias); 1 Mar 2005 23:23:30 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 13478 invoked from network); 1 Mar 2005 23:23:23 -0000 Received: from unknown (HELO e31.co.us.ibm.com) (32.97.110.129) by sourceware.org with SMTP; 1 Mar 2005 23:23:23 -0000 Received: from d03relay04.boulder.ibm.com (d03relay04.boulder.ibm.com [9.17.195.106]) by e31.co.us.ibm.com (8.12.10/8.12.9) with ESMTP id j21NNMua535682 for ; Tue, 1 Mar 2005 18:23:22 -0500 Received: from d03av02.boulder.ibm.com (d03av02.boulder.ibm.com [9.17.195.168]) by d03relay04.boulder.ibm.com (8.12.10/NCO/VER6.6) with ESMTP id j21NNMqw171086 for ; Tue, 1 Mar 2005 16:23:22 -0700 Received: from d03av02.boulder.ibm.com (loopback [127.0.0.1]) by d03av02.boulder.ibm.com (8.12.11/8.12.11) with ESMTP id j21NNMvl018165 for ; Tue, 1 Mar 2005 16:23:22 -0700 Received: from dyn319633.beaverton.ibm.com (DYN319633.beaverton.ibm.com [9.47.22.123]) by d03av02.boulder.ibm.com (8.12.11/8.12.11) with ESMTP id j21NNLNc018147 for ; Tue, 1 Mar 2005 16:23:22 -0700 From: Paul Gilliam Reply-To: pgilliam@us.ibm.com To: gdb-patches@sources.redhat.com Subject: [patch] test for altivec h/w on PowerPC Date: Tue, 01 Mar 2005 23:23:00 -0000 User-Agent: KMail/1.6.2 MIME-Version: 1.0 Content-Disposition: inline Content-Type: Multipart/Mixed; boundary="Boundary-00=_LiPJCZnGguvVv/n" Message-Id: <200503011519.39739.pgilliam@us.ibm.com> X-SW-Source: 2005-03/txt/msg00009.txt.bz2 --Boundary-00=_LiPJCZnGguvVv/n Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline Content-length: 711 testsuite/gdb.arch/altivec-abi.exp and testsuite/gdb.arch/altivec-regs.exp test for relivance by checking if the configuration string ends in 'altivec'. This wasn't working for me and doesn't seem like the right way to do this. So I replaced it by adding a new routine to testsuit/lib/gdb.exp that compiles and runs a tiny little program. If we are on any machine that doesn't have altivec hardware, then either the compile fails or the tiny little program gets an illegal instruction trap when run. This is a modification of a similar routine in the gcc testsuite. (cut-and-paste code re-use) I then changed the two tests mentioned above to use the new routine. Ok to commit? -=# Paul Gilliam #=- --Boundary-00=_LiPJCZnGguvVv/n Content-Type: text/x-diff; charset="us-ascii"; name="my.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="my.patch" Content-length: 2813 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-01 15:00:18.199183888 -0800 @@ -1142,6 +1142,57 @@ 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. + +proc skip_atltivec_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" 0 + 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 build "./$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. --Boundary-00=_LiPJCZnGguvVv/n--