http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49833

--- Comment #1 from H.J. Lu <hjl.tools at gmail dot com> 2011-07-25 13:59:10 
UTC ---
X32 dynamic linker is miscompiled:

Program received signal SIGSEGV, Segmentation fault.
0x00114821 in elf_machine_rela_relative (reloc_addr_arg=<optimized out>, 
    l_addr=1114112, reloc=<optimized out>)
    at ../sysdeps/x86_64/dl-machine.h:483
483      *reloc_addr = l_addr + reloc->r_addend;
(gdb) disass 0x00114808, 0x0011482c 
Dump of assembler code from 0x114808 to 0x11482c:
   0x00114808 <_dl_start+968>:    lea    (%rsi,%rdx,1),%edx
   0x0011480b <_dl_start+971>:    mov    -0xc(%rdx),%edx
   0x0011480e <_dl_start+974>:    add    %r13d,%edx
   0x00114811 <_dl_start+977>:    cmpb   $0x8,0x4(%rax)
   0x00114815 <_dl_start+981>:    jne    0x114901 <_dl_start+1217>
   0x0011481b <_dl_start+987>:    mov    0x8(%rax),%ecx
   0x0011481e <_dl_start+990>:    add    %r13d,%ecx
=> 0x00114821 <_dl_start+993>:    mov    %ecx,(%rdx)
   0x00114823 <_dl_start+995>:    lea    0xc(%rax),%edx
   0x00114826 <_dl_start+998>:    cmp    %edx,%ebx
   0x00114828 <_dl_start+1000>:    mov    %edx,%eax
   0x0011482a <_dl_start+1002>:    ja     0x114808 <_dl_start+968>
End of assembler dump.
(gdb) p/x $rdx
$1 = 0x111724
(gdb) 

Working one:

The program being debugged has been started already.
Start it from the beginning? (y or n) y

Starting program: /export/build/gnu/glibc-x32/build-x86_64-linux/sunrpc/rpcgen 

Breakpoint 1, elf_machine_rela_relative (reloc_addr_arg=<optimized out>, 
    l_addr=1114112, reloc=<optimized out>)
    at ../sysdeps/x86_64/dl-machine.h:483
483      *reloc_addr = l_addr + reloc->r_addend;
(gdb) disass 0x00114768, 0x00114789
Dump of assembler code from 0x114768 to 0x114789:
   0x00114768 <_dl_start+968>:    add    %esi,%edx
   0x0011476a <_dl_start+970>:    mov    -0xc(%rdx),%edx
   0x0011476d <_dl_start+973>:    add    %r13d,%edx
   0x00114770 <_dl_start+976>:    cmpb   $0x8,0x4(%rax)
   0x00114774 <_dl_start+980>:    jne    0x114859 <_dl_start+1209>
=> 0x0011477a <_dl_start+986>:    mov    0x8(%rax),%ecx
   0x0011477d <_dl_start+989>:    add    %r13d,%ecx
   0x00114780 <_dl_start+992>:    mov    %ecx,(%rdx)
   0x00114782 <_dl_start+994>:    lea    0xc(%rax),%edx
   0x00114785 <_dl_start+997>:    cmp    %edx,%ebx
   0x00114787 <_dl_start+999>:    mov    %edx,%eax
End of assembler dump.
(gdb) p/x $rdx
$3 = 0x32ed40
(gdb)

Reply via email to