http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52221
Kai Tietz <ktietz at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2012-02-12 CC| |ktietz at gcc dot gnu.org Ever Confirmed|0 |1 --- Comment #1 from Kai Tietz <ktietz at gcc dot gnu.org> 2012-02-12 17:58:27 UTC --- Yes, I missed to adjust displacement. Following hunk @@ -614,7 +614,7 @@ { unsigned char *__tramp = (unsigned char*)(TRAMP); \ unsigned int __fun = (unsigned int)(FUN); \ unsigned int __ctx = (unsigned int)(CTX); \ - unsigned int __dis = __fun - (__ctx + 22); \ + unsigned int __dis = __fun - (__ctx + 49); \ unsigned short __size = (unsigned short)(SIZE); \ *(unsigned int *) &__tramp[0] = 0x8324048b; /* mov (%esp), %eax */ \ *(unsigned int *) &__tramp[4] = 0x4c890cec; /* sub $12, %esp */ \ fixes it.