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)