On Sun, Jun 12, 2011 at 9:33 AM, Jan Hubicka <hubi...@ucw.cz> wrote: >> On Sun, Jun 12, 2011 at 7:54 AM, Jan Hubicka <hubi...@ucw.cz> wrote: >> >> >> >> This also pretty much destroyed C++ for ia32: >> >> >> >> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49378 >> >> http://gcc.gnu.org/ml/gcc-regression/2011-06/msg00159.html >> > >> > Hi, >> > It seems somewhat amazing that we hit kernel sensitive miscompilation here. >> > The problem most probably is the fact that thunks and functions with >> > thunks can become >> > local. This is correct since thunks are represented as direct calls now, >> > but this >> > makes i386 to use local ABI when calling or compiling them. >> > >> >> For x86-64, we use the same ABI for local and global. But RAX seems >> used and uninitialized in thunk. > 000000000006d270 <_ZN12_GLOBAL__N_121system_error_categoryD0Ev>: > 6d270: 48 8d 05 79 d4 27 00 lea 0x27d479(%rip),%rax # > 2ea6f0 <_ZTVN12_GLOBAL__N_121system_error_categoryE+0x10> > 6d277: 53 push %rbx > 6d278: 48 89 fb mov %rdi,%rbx > 6d27b: 48 89 07 mov %rax,(%rdi) > 6d27e: e8 55 a0 fe ff callq 572d8 > <_ZNSt14error_categoryD2Ev@plt> > 6d283: 48 89 df mov %rbx,%rdi > 6d286: 5b pop %rbx > 6d287: e9 2c 9d fe ff jmpq 56fb8 <_ZdlPv@plt> > 6d28c: 90 nop > 6d28d: 90 nop > 6d28e: 90 nop > 6d28f: 90 nop > > I don't see uinitialized RAX here. It is set by the first LEA
You are right. -- H.J.