bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: ld.so.1 broken with gcc 3.3.1 on GNU/Hurd


From: Alfred M. Szmidt
Subject: Re: ld.so.1 broken with gcc 3.3.1 on GNU/Hurd
Date: Mon, 1 Dec 2003 10:31:18 +0100 (MET)

[Sorry for the late reply, busy with school.]

   The PC value suggests some botch relocation or something.  Compare
   the last several instructions in your gdb disassembly there with
   what objdump -rd shows you on ld.so, and on the rtld.os file that
   went into making it.

Alright, here is s the output from objdump on rtld.os, ld.so.1, and
the last few lines from the gdb disassembly.  Not that this it makes
much sense to me...

objdump -rd ld.so.1:

 00001560 <dl_main>:
[...snip...]
     299a:      8b 83 bc 00 00 00       mov    0xbc(%ebx),%eax
     29a0:      8b 00                   mov    (%eax),%eax
     29a2:      89 45 e8                mov    %eax,0xffffffe8(%ebp)
     29a5:      8d 45 e8                lea    0xffffffe8(%ebp),%eax
     29a8:      50                      push   %eax
     29a9:      8d 8b 18 ba fe ff       lea    0xfffeba18(%ebx),%ecx
     29af:      8d 55 e4                lea    0xffffffe4(%ebp),%edx
     29b2:      8d 45 e0                lea    0xffffffe0(%ebp),%eax
     29b5:      e8 fe 6d 00 00          call   97b8 <_dl_catch_error>
     29ba:      8b 45 e4                mov    0xffffffe4(%ebp),%eax
     29bd:      85 c0                   test   %eax,%eax
     29bf:      74 a0                   je     2961 <dl_main+0x1401>
     29c1:      6a 01                   push   $0x1
     29c3:      e8 fc ff ff ff          call   29c4 <dl_main+0x1464>
     29c8:      58                      pop    %eax
     29c9:      eb 96                   jmp    2961 <dl_main+0x1401>
     29cb:      8b 41 18                mov    0x18(%ecx),%eax
     29ce:      89 83 6c f9 ff ff       mov    %eax,0xfffff96c(%ebx)
     29d4:      e9 68 ff ff ff          jmp    2941 <dl_main+0x13e1>
     29d9:      8d 76 00                lea    0x0(%esi),%esi
[end of dl_main]

objdump -rd rtld.os:

 00000570 <dl_main>:
[...snip...]
                        1982: R_386_GOTOFF      .LC22
     1986:      0f b7 97 4c 01 00 00    movzwl 0x14c(%edi),%edx
     198d:      89 47 04                mov    %eax,0x4(%edi)
     1990:      8b 4d 10                mov    0x10(%ebp),%ecx
     1993:      8b 87 48 01 00 00       mov    0x148(%edi),%eax
     1999:      89 55 0c                mov    %edx,0xc(%ebp)
     199c:      89 01                   mov    %eax,(%ecx)
     199e:      e9 6b ec ff ff          jmp    60e <dl_main+0x9e>
     19a3:      c7 45 e4 00 00 00 00    movl   $0x0,0xffffffe4(%ebp)
     19aa:      8b 83 00 00 00 00       mov    0x0(%ebx),%eax
                        19ac: R_386_GOTOFF      _dl_argv_internal
     19b0:      8b 00                   mov    (%eax),%eax
     19b2:      89 45 e8                mov    %eax,0xffffffe8(%ebp)
     19b5:      8d 45 e8                lea    0xffffffe8(%ebp),%eax
     19b8:      50                      push   %eax
     19b9:      8d 8b 8c 04 00 00       lea    0x48c(%ebx),%ecx
                        19bb: R_386_GOTOFF      .text
     19bf:      8d 55 e4                lea    0xffffffe4(%ebp),%edx
     19c2:      8d 45 e0                lea    0xffffffe0(%ebp),%eax
     19c5:      e8 fc ff ff ff          call   19c6 <dl_main+0x1456>
                        19c6: R_386_PLT32       _dl_catch_error_internal
     19ca:      8b 45 e4                mov    0xffffffe4(%ebp),%eax
     19cd:      85 c0                   test   %eax,%eax
     19cf:      74 a0                   je     1971 <dl_main+0x1401>
     19d1:      6a 01                   push   $0x1
     19d3:      e8 fc ff ff ff          call   19d4 <dl_main+0x1464>
                        19d4: R_386_PC32        _exit
     19d8:      58                      pop    %eax
     19d9:      eb 96                   jmp    1971 <dl_main+0x1401>
     19db:      8b 41 18                mov    0x18(%ecx),%eax
     19de:      89 83 d0 03 00 00       mov    %eax,0x3d0(%ebx)
                        19e0: R_386_GOTOFF      _rtld_local
     19e4:      e9 68 ff ff ff          jmp    1951 <dl_main+0x13e1>
     19e9:      8d 76 00                lea    0x0(%esi),%esi
[end of dl_main]

gdb disassembly of ld.so:

 (gdb) disassemble
 Dump of assembler code for function dl_main:
 0x00002560 <dl_main+0>:        push   %ebp
 0x00002561 <dl_main+1>:        mov    %esp,%ebp
 0x00002563 <dl_main+3>:        push   %edi
 0x00002564 <dl_main+4>:        push   %esi
 0x00002565 <dl_main+5>:        push   %ebx
 0x00002566 <dl_main+6>:        call   0x256b <dl_main+11>
[...snip...]
 0x0000399a <dl_main+5178>:     mov    0xbc(%ebx),%eax
 0x000039a0 <dl_main+5184>:     mov    (%eax),%eax
 0x000039a2 <dl_main+5186>:     mov    %eax,0xffffffe8(%ebp)
 0x000039a5 <dl_main+5189>:     lea    0xffffffe8(%ebp),%eax
 0x000039a8 <dl_main+5192>:     push   %eax
 0x000039a9 <dl_main+5193>:     lea    0xfffeba18(%ebx),%ecx
 0x000039af <dl_main+5199>:     lea    0xffffffe4(%ebp),%edx
 0x000039b2 <dl_main+5202>:     lea    0xffffffe0(%ebp),%eax
 0x000039b5 <dl_main+5205>:     call   0xa7b8 <_dl_catch_error>
 0x000039ba <dl_main+5210>:     mov    0xffffffe4(%ebp),%eax
 0x000039bd <dl_main+5213>:     test   %eax,%eax
 0x000039bf <dl_main+5215>:     je     0x3961 <dl_main+5121>
 0x000039c1 <dl_main+5217>:     push   $0x1
 0x000039c3 <dl_main+5219>:     call   0x39c4 <dl_main+5220>
 0x000039c8 <dl_main+5224>:     pop    %eax
 0x000039c9 <dl_main+5225>:     jmp    0x3961 <dl_main+5121>
 0x000039cb <dl_main+5227>:     mov    0x18(%ecx),%eax
 0x000039ce <dl_main+5230>:     mov    %eax,0xfffff96c(%ebx)
 0x000039d4 <dl_main+5236>:     jmp    0x3941 <dl_main+5089>
 End of assembler dump.

Cheerio.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]