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



--- Comment #15 from H.J. Lu <hjl.tools at gmail dot com> 2012-11-01 22:30:16 
UTC ---

All binaries die before main:



Starting program:

/export/build/gnu/glibc-x32-long/build-x86_64-linux/libio/bug-fclose1 



Program received signal SIGSEGV, Segmentation fault.

0xf7dddc8d in elf_get_dynamic_info (temp=0x0, l=0xf7ffdc18)

    at get-dynamic-info.h:61

61             + DT_VERSIONTAGNUM + DT_EXTRANUM + DT_VALNUM] = dyn;

(gdb) disass $pc -19, +30

Dump of assembler code from 0xf7dddc7a to 0xf7dddc98:

   0xf7dddc7a <dl_main+5210>:    mov    %r8d,%esi

   0xf7dddc7d <dl_main+5213>:    sub    %eax,%esi

   0xf7dddc7f <dl_main+5215>:    cmp    $0xa,%esi

   0xf7dddc82 <dl_main+5218>:    ja     0xf7ddd431 <dl_main+3089>

   0xf7dddc88 <dl_main+5224>:    neg    %eax

   0xf7dddc8a <dl_main+5226>:    lea    (%rcx,%rax,4),%eax

=> 0xf7dddc8d <dl_main+5229>:    mov    %edx,-0x40000300(%rax)

   0xf7dddc93 <dl_main+5235>:    jmpq   0xf7ddd431 <dl_main+3089>

End of assembler dump.

(gdb) p/x $rcx

$1 = 0xf7ffdc38

(gdb) p/x $rax

$2 = 0x37ffe064

(gdb) list

56          else if ((d_tag_utype) DT_VALTAGIDX (dyn->d_tag) < DT_VALNUM)

57        info[DT_VALTAGIDX (dyn->d_tag) + DT_NUM + DT_THISPROCNUM

58             + DT_VERSIONTAGNUM + DT_EXTRANUM] = dyn;

59          else if ((d_tag_utype) DT_ADDRTAGIDX (dyn->d_tag) < DT_ADDRNUM)

60        info[DT_ADDRTAGIDX (dyn->d_tag) + DT_NUM + DT_THISPROCNUM

61             + DT_VERSIONTAGNUM + DT_EXTRANUM + DT_VALNUM] = dyn;

62          ++dyn;

63        }

64    

65    #define DL_RO_DYN_TEMP_CNT    8

(gdb) p info

$3 = (Elf32_Dyn **) 0xf7ffdc38

(gdb) bt

#0  0xf7dddc8d in elf_get_dynamic_info (temp=0x0, l=0xf7ffdc18)

    at get-dynamic-info.h:61

#1  dl_main (phdr=<optimized out>, phnum=9, user_entry=<optimized out>, 

    auxv=<optimized out>) at rtld.c:1311

#2  0xf7df12c0 in _dl_sysdep_start (

    start_argptr=start_argptr@entry=0xffffd100, dl_main=<optimized out>)

    at ../elf/dl-sysdep.c:241

#3  0xf7ddfaa8 in _dl_start_final (arg=0xffffd100) at rtld.c:331

#4  _dl_start (arg=<optimized out>) at rtld.c:557

#5  0xf7ddc057 in _start ()

   from /export/build/gnu/glibc-x32-long/build-x86_64-linux/elf/ld.so

#6  0x00000001 in ?? ()

#7  0x00000000 in ?? ()

(gdb)

Reply via email to