This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: [patch] test for altivec h/w on PowerPC
On Tuesday 01 March 2005 17:56, Daniel Jacobowitz wrote:
> On Tue, Mar 01, 2005 at 04:32:17PM -0800, Paul Gilliam wrote:
> > Daniel,
> >
> > Thanks a lot for your speedy review!
> >
> > I didn't know Janis wrote it, she didn't say so when she showed it to me.
> > (Her cube is right next to mine: we are in the same group)
>
> She's too modest :-) Or my memory is bad.
I just talked to her. She doesn't think she needs the atribution and it came
from Aldy Hernandez anyway. 8-)
>
> > Ok to commit?
>
> No patch attached? :-)
I CAN'T BELEAVE IT ! FUDGE!
Here it is:
(This time for sure, I hope 8-)
-=# Paul #=-
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 <pgilliam@us.ibm.com>
+
+ * 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 <brobecker@adacore.com>
* 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" 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 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.