--- /dev/null
+diff -up gdb-6.8/gdb/sparc-tdep.c.BAD gdb-6.8/gdb/sparc-tdep.c
+--- gdb-6.8/gdb/sparc-tdep.c.BAD 2008-05-15 16:12:58.000000000 -0500
++++ gdb-6.8/gdb/sparc-tdep.c 2008-05-15 16:13:41.000000000 -0500
+@@ -1122,6 +1122,7 @@ sparc32_store_return_value (struct type
+ if (sparc_floating_p (type))
+ {
+ /* Floating return values. */
++ len = (len <= 8) ? len : 8;
+ memcpy (buf, valbuf, len);
+ regcache_cooked_write (regcache, SPARC_F0_REGNUM, buf);
+ if (len > 4)