public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
* Re: the dynamic linker bug
       [not found] <9712121305.AA19929@vlsi1.ultra.nyu.edu>
@ 1997-12-12 14:32 ` Ulrich Drepper
  1997-12-12 15:46   ` H.J. Lu
  0 siblings, 1 reply; 5+ messages in thread
From: Ulrich Drepper @ 1997-12-12 14:32 UTC (permalink / raw)
  To: Richard Kenner; +Cc: gcc2, egcs

kenner@vlsi1.ultra.nyu.edu (Richard Kenner) writes:

> I think this fixes it.  Please confirm.
> 
> Fri Dec 12 08:01:44 1997  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
> 
> 	* integrate.c (initialize_for_inline): In DECL_RTL of a PARM_DECL,
> 	look inside a (mem (addressof (mem ...))).

After bootstrapping the compiler and a full rebuilt of the libc it
still fails here.  I'll examine this more closely now.

-- Uli
---------------.      drepper at gnu.org  ,-.   Rubensstrasse 5
Ulrich Drepper  \    ,-------------------'   \  76149 Karlsruhe/Germany
Cygnus Solutions `--' drepper at cygnus.com   `------------------------

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: the dynamic linker bug
  1997-12-12 14:32 ` the dynamic linker bug Ulrich Drepper
@ 1997-12-12 15:46   ` H.J. Lu
  0 siblings, 0 replies; 5+ messages in thread
From: H.J. Lu @ 1997-12-12 15:46 UTC (permalink / raw)
  To: drepper; +Cc: kenner, gcc2, egcs

> 
> kenner@vlsi1.ultra.nyu.edu (Richard Kenner) writes:
> 
> > I think this fixes it.  Please confirm.
> > 
> > Fri Dec 12 08:01:44 1997  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
> > 
> > 	* integrate.c (initialize_for_inline): In DECL_RTL of a PARM_DECL,
> > 	look inside a (mem (addressof (mem ...))).
> 
> After bootstrapping the compiler and a full rebuilt of the libc it
> still fails here.  I'll examine this more closely now.
> 

It is __register_frame.

H.J.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: the dynamic linker bug
       [not found] <19308.881955381@hurl.cygnus.com>
@ 1997-12-12 15:46 ` H.J. Lu
  0 siblings, 0 replies; 5+ messages in thread
From: H.J. Lu @ 1997-12-12 15:46 UTC (permalink / raw)
  To: law; +Cc: drepper, egcs

> 
> 
>   In message <m0xgYTT-0004edC@ocean.lucon.org>you write:
>   > Ulrich, you need my __register_frame patch to egcs 971207 and gcc
>   > 2.8.0. You also need to put those new ones in libc.map. Please
>   > check my previous emails.
> Actually, I tend to agree with Kenner that blah_new is a bad name,
> blah_v2 or something else might make more sense long term just in
> case the interface has to change again.
> 

blah_v2 is ok with me. BTW, Kenner's patch also fixes egcs 971207.
I have built glibc 2.1 with egcs 971207 plus Kenner's patch and my
__register_frame patch.

-- 
H.J. Lu (hjl@gnu.org)

^ permalink raw reply	[flat|nested] 5+ messages in thread

* the dynamic linker bug
@ 1997-12-12  3:55 Ulrich Drepper
  1997-12-12  1:52 ` H.J. Lu
  0 siblings, 1 reply; 5+ messages in thread
From: Ulrich Drepper @ 1997-12-12  3:55 UTC (permalink / raw)
  To: egcs, gcc2; +Cc: drepper

Hi,

I describe here what I found out.  I cannot produce a small test case
but I can compare two assembler outputs and explain the context with
the sources.  All this is on ix86.  At then end of the mail is the
preprocessed source.  You have to run

	gcc /tmp/dl-reloc.i -Wall -c -O3 -g -momit-leaf-frame-pointer -mpentium  -fPIC -fno-common -o dl-reloc.o


I tried to remove the -Wall but this changes the result!!!!!


The critical part of the code is compiled using the current CVS egcs
version (ok, the CVS version as of yesterday):

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 2d7:   89 45 b0        movl   %eax,0xffffffb0(%ebp)
 2da:   83 bd 50 ff ff  cmpl   $0x0,0xffffff50(%ebp)
 2df:   ff 00 
 2e1:   74 35           je     318 <_dl_relocate_object+0x318>
 2e3:   8b 8d 50 ff ff  movl   0xffffff50(%ebp),%ecx
 2e8:   ff 
 2e9:   83 79 04 00     cmpl   $0x0,0x4(%ecx)
 2ed:   74 29           je     318 <_dl_relocate_object+0x318>
 2ef:   52              pushl  %edx
 2f0:   51              pushl  %ecx
 2f1:   8b 7d c8        movl   0xffffffc8(%ebp),%edi
 2f4:   8b 57 fc        movl   0xfffffffc(%edi),%edx
 2f7:   8b 02           movl   (%edx),%eax
 2f9:   8b 40 04        movl   0x4(%eax),%eax
 2fc:   50              pushl  %eax
 2fd:   8b 42 04        movl   0x4(%edx),%eax
 300:   50              pushl  %eax
 301:   8d 45 e8        leal   0xffffffe8(%ebp),%eax
 304:   50              pushl  %eax
 305:   8b 45 e8        movl   0xffffffe8(%ebp),%eax
 308:   8b 00           movl   (%eax),%eax
 30a:   03 47 f8        addl   0xfffffff8(%edi),%eax
 30d:   50              pushl  %eax
 30e:   e8 fc ff ff ff  call   30f <_dl_relocate_object+0x30f>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Using an older version 2.90.15 I get:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 2d7:   89 45 b0        movl   %eax,0xffffffb0(%ebp)
 2da:   83 bd 50 ff ff  cmpl   $0x0,0xffffff50(%ebp)
 2df:   ff 00 
 2e1:   74 35           je     318 <_dl_relocate_object+0x318>
 2e3:   8b 8d 50 ff ff  movl   0xffffff50(%ebp),%ecx
 2e8:   ff 
 2e9:   83 79 04 00     cmpl   $0x0,0x4(%ecx)
 2ed:   74 29           je     318 <_dl_relocate_object+0x318>
 2ef:   52              pushl  %edx
 2f0:   51              pushl  %ecx
 2f1:   8b 7d c8        movl   0xffffffc8(%ebp),%edi
 2f4:   8b 57 fc        movl   0xfffffffc(%edi),%edx
 2f7:   8b 02           movl   (%edx),%eax
 2f9:   8b 40 04        movl   0x4(%eax),%eax
 2fc:   50              pushl  %eax
 2fd:   8b 42 04        movl   0x4(%edx),%eax
 300:   50              pushl  %eax
 301:   8d 45 e8        leal   0xffffffe8(%ebp),%eax
 304:   50              pushl  %eax
 305:   8b 4d b0        movl   0xffffffb0(%ebp),%ecx
 308:   8b 01           movl   (%ecx),%eax
 30a:   03 47 f8        addl   0xfffffff8(%edi),%eax
 30d:   50              pushl  %eax
 30e:   e8 fc ff ff ff  call   30f <_dl_relocate_object+0x30f>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The critical instruction is at address 305.  You see the difference

wrong:		 305:   8b 45 e8        movl   0xffffffe8(%ebp),%eax

correct:	 305:   8b 4d b0        movl   0xffffffb0(%ebp),%ecx


The other key location is 2d7 where is both pieces of code 0xffffffb0(%ebp)
is initialized.


Looking at the source code you'll see this implements the following
(function elf_machine_rel, a bit reformatted):


      const Elf32_Sym *const refsym = sym;
      Elf32_Addr value = ((  version ) != ((void *)0)
			  && (  version )->hash != 0
    ? _dl_lookup_versioned_symbol (strtab + (* &sym )->st_name,
			           ( &sym ), scope, l->l_name,
                                   (  version ), (  (( reloc->r_info ) & 0xff)  ))
    : _dl_lookup_symbol (strtab + (* &sym )->st_name, ( &sym ), scope,
                         l->l_name, (  (( reloc->r_info ) & 0xff)  ))) ;


The call is too `_dl_lookup_versioned_symbol' ad the parameter we are
dealing with is the first which is computed as

	strtab + (* &sym )->st_name

Please note that the second parameter is `&sym'.

Back to the assembler code: Obviously at address 30a the value of
`strtab' is added.  The `st_name' element of `Elf32_Sym' is the first,
i.e., the

	movl   (%ecx),%eax

if the dereference of the pointer.  But this means the %ecx (or %eax
in the wrong code, both solutions are equivalent here) has to be the
pointer `sym'.  This value is loaded at address 305.

In the correct case it is loaded from 0xffffffb0(%ebp) which was
initialized at address 2d7.


But in the wrong case %eax is loaded from 0xffffffe8(%ebp).  Please
note that this is the address which was pushed for the second
parameter before.  The error is that at address 2d7 the value at
address 0xffffffb0(%ebp) is initialized, as for the correct version.
But this does not mean anything but that at address 305 uninitialized
memory is read.


So the problem is: why is at address 305 0xffffffe8(%ebp) read and not
0xffffffb0(%ebp)?



-- Uli
---------------.      drepper at gnu.org  ,-.   Rubensstrasse 5
Ulrich Drepper  \    ,-------------------'   \  76149 Karlsruhe/Germany
Cygnus Solutions `--' drepper at cygnus.com   `------------------------

begin 644 dl-reloc.i.gz
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
;19)5B^.417]2A'QI7%L5O^W^'X"XRVV.^P``
`
end

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: the dynamic linker bug
  1997-12-12  3:55 Ulrich Drepper
@ 1997-12-12  1:52 ` H.J. Lu
  0 siblings, 0 replies; 5+ messages in thread
From: H.J. Lu @ 1997-12-12  1:52 UTC (permalink / raw)
  To: drepper; +Cc: egcs, gcc2

> 
> Hi,
> 
> I describe here what I found out.  I cannot produce a small test case
> but I can compare two assembler outputs and explain the context with
> the sources.  All this is on ix86.  At then end of the mail is the
> preprocessed source.  You have to run
> 
> 	gcc /tmp/dl-reloc.i -Wall -c -O3 -g -momit-leaf-frame-pointer -mpentium  -fPIC -fno-common -o dl-reloc.o
> 
> 
> I tried to remove the -Wall but this changes the result!!!!!
> 
> 
> The critical part of the code is compiled using the current CVS egcs
> version (ok, the CVS version as of yesterday):
> 
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>  2d7:   89 45 b0        movl   %eax,0xffffffb0(%ebp)
>  2da:   83 bd 50 ff ff  cmpl   $0x0,0xffffff50(%ebp)
>  2df:   ff 00 
>  2e1:   74 35           je     318 <_dl_relocate_object+0x318>
>  2e3:   8b 8d 50 ff ff  movl   0xffffff50(%ebp),%ecx
>  2e8:   ff 
>  2e9:   83 79 04 00     cmpl   $0x0,0x4(%ecx)
>  2ed:   74 29           je     318 <_dl_relocate_object+0x318>
>  2ef:   52              pushl  %edx
>  2f0:   51              pushl  %ecx
>  2f1:   8b 7d c8        movl   0xffffffc8(%ebp),%edi
>  2f4:   8b 57 fc        movl   0xfffffffc(%edi),%edx
>  2f7:   8b 02           movl   (%edx),%eax
>  2f9:   8b 40 04        movl   0x4(%eax),%eax
>  2fc:   50              pushl  %eax
>  2fd:   8b 42 04        movl   0x4(%edx),%eax
>  300:   50              pushl  %eax
>  301:   8d 45 e8        leal   0xffffffe8(%ebp),%eax
>  304:   50              pushl  %eax
>  305:   8b 45 e8        movl   0xffffffe8(%ebp),%eax
>  308:   8b 00           movl   (%eax),%eax
>  30a:   03 47 f8        addl   0xfffffff8(%edi),%eax
>  30d:   50              pushl  %eax
>  30e:   e8 fc ff ff ff  call   30f <_dl_relocate_object+0x30f>
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 
> Using an older version 2.90.15 I get:
> 
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>  2d7:   89 45 b0        movl   %eax,0xffffffb0(%ebp)
>  2da:   83 bd 50 ff ff  cmpl   $0x0,0xffffff50(%ebp)
>  2df:   ff 00 
>  2e1:   74 35           je     318 <_dl_relocate_object+0x318>
>  2e3:   8b 8d 50 ff ff  movl   0xffffff50(%ebp),%ecx
>  2e8:   ff 
>  2e9:   83 79 04 00     cmpl   $0x0,0x4(%ecx)
>  2ed:   74 29           je     318 <_dl_relocate_object+0x318>
>  2ef:   52              pushl  %edx
>  2f0:   51              pushl  %ecx
>  2f1:   8b 7d c8        movl   0xffffffc8(%ebp),%edi
>  2f4:   8b 57 fc        movl   0xfffffffc(%edi),%edx
>  2f7:   8b 02           movl   (%edx),%eax
>  2f9:   8b 40 04        movl   0x4(%eax),%eax
>  2fc:   50              pushl  %eax
>  2fd:   8b 42 04        movl   0x4(%edx),%eax
>  300:   50              pushl  %eax
>  301:   8d 45 e8        leal   0xffffffe8(%ebp),%eax
>  304:   50              pushl  %eax
>  305:   8b 4d b0        movl   0xffffffb0(%ebp),%ecx
>  308:   8b 01           movl   (%ecx),%eax
>  30a:   03 47 f8        addl   0xfffffff8(%edi),%eax
>  30d:   50              pushl  %eax
>  30e:   e8 fc ff ff ff  call   30f <_dl_relocate_object+0x30f>
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 
> The critical instruction is at address 305.  You see the difference
> 
> wrong:		 305:   8b 45 e8        movl   0xffffffe8(%ebp),%eax
> 
> correct:	 305:   8b 4d b0        movl   0xffffffb0(%ebp),%ecx
> 
> 
> The other key location is 2d7 where is both pieces of code 0xffffffb0(%ebp)
> is initialized.
> 
> 
> Looking at the source code you'll see this implements the following
> (function elf_machine_rel, a bit reformatted):
> 
> 
>       const Elf32_Sym *const refsym = sym;
>       Elf32_Addr value = ((  version ) != ((void *)0)
> 			  && (  version )->hash != 0
>     ? _dl_lookup_versioned_symbol (strtab + (* &sym )->st_name,
> 			           ( &sym ), scope, l->l_name,
>                                    (  version ), (  (( reloc->r_info ) & 0xff)  ))
>     : _dl_lookup_symbol (strtab + (* &sym )->st_name, ( &sym ), scope,
>                          l->l_name, (  (( reloc->r_info ) & 0xff)  ))) ;
> 
> 
> The call is too `_dl_lookup_versioned_symbol' ad the parameter we are
> dealing with is the first which is computed as
> 
> 	strtab + (* &sym )->st_name
> 
> Please note that the second parameter is `&sym'.
> 
> Back to the assembler code: Obviously at address 30a the value of
> `strtab' is added.  The `st_name' element of `Elf32_Sym' is the first,
> i.e., the
> 
> 	movl   (%ecx),%eax
> 
> if the dereference of the pointer.  But this means the %ecx (or %eax
> in the wrong code, both solutions are equivalent here) has to be the
> pointer `sym'.  This value is loaded at address 305.
> 
> In the correct case it is loaded from 0xffffffb0(%ebp) which was
> initialized at address 2d7.
> 
> 
> But in the wrong case %eax is loaded from 0xffffffe8(%ebp).  Please
> note that this is the address which was pushed for the second
> parameter before.  The error is that at address 2d7 the value at
> address 0xffffffb0(%ebp) is initialized, as for the correct version.
> But this does not mean anything but that at address 305 uninitialized
> memory is read.
> 
> 
> So the problem is: why is at address 305 0xffffffe8(%ebp) read and not
> 0xffffffb0(%ebp)?
> 

That is one of 2 bugs. 16(%ebp), which is the third argument of
_dl_relocate_object (), is mixed up with -24(%ebp).


H.J.

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~1997-12-12 15:46 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <9712121305.AA19929@vlsi1.ultra.nyu.edu>
1997-12-12 14:32 ` the dynamic linker bug Ulrich Drepper
1997-12-12 15:46   ` H.J. Lu
     [not found] <19308.881955381@hurl.cygnus.com>
1997-12-12 15:46 ` H.J. Lu
1997-12-12  3:55 Ulrich Drepper
1997-12-12  1:52 ` H.J. Lu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).