--- dyngen.c.ORIG 2006-04-27 09:43:06.062910000 -0400 +++ dyngen.c 2006-04-27 09:48:47.958122000 -0400 @@ -1196,7 +1196,7 @@ } else { #ifdef HOST_SPARC if (sym_name[0] == '.') - snprintf(name, sizeof(name), + snprintf(name, name_size, "(long)(&__dot_%s)", sym_name + 1); else @@ -1451,7 +1451,8 @@ if ((start_insn & ~0x1fff) == 0x9de3a000) { p_start += 0x4; start_offset += 0x4; - if ((int)(start_insn | ~0x1fff) < -128) + // Why -128? op_pavgb_xmm adjust the stack by -0x110 == -272 + if ((int)(start_insn | ~0x1fff) < -272) error("Found bogus save at the start of %s", name); if (end_insn1 != 0x81c7e008 || end_insn2 != 0x81e80000) error("ret; restore; not found at end of %s", name);