Looking further, I realize that my analysis is quite wrong. The "push %eax" is promptly followed by "pop %ebx", so a CFA offset of 12 is correct. D'oh! This is what comes of doing my thinking in public... Still, I have discovered this problem is tune=i386 specific. I'll continue looking. 00a326a8 <java.lang.Throwable.Throwable(java.lang.String)>: a326a8: 56 push %esi a326a9: 53 push %ebx a326aa: 50 push %eax a326ab: e8 00 00 00 00 call a326b0 <java.lang.Throwable.Throwable(java.lang.String)+0x8> a326b0: 5b pop %ebx Andrew.