This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Bug-compatibility with Sol* ld.so


On Tue, Sep 24, 2002 at 12:13:34PM -0400, Jakub Jelinek wrote:
> On Tue, Sep 24, 2002 at 12:09:39PM -0400, Daniel Jacobowitz wrote:
> > On Tue, Sep 24, 2002 at 05:58:11PM +0200, Jakub Jelinek wrote:
> > > Hi!
> > > 
> > > Here is the patch I've just commited. It passed make check and
> > > manual inspection with -Bsymbolic seemed ok too.
> > > Had to change glibc which relied on this and will have to change prelink, argh.
> > 
> > How affected is glibc?  I.E. will using the new binutils break existing
> > SPARC GNU/Linux installations?
> 
> Only ld.so is affected (ie. if you build glibc < CVS today with binutils
> >= CVS today, ld.so will die).

That's the only bad case?  Great; then we just need a patch to glibc
before the next time it is rebuilt on Sparc, and everything will work
out.  Thanks, Jakub!


> It relied on the addend being in *r_offset in:
> /* Return the run-time load address of the shared object.  */
> static inline Elf32_Addr
> elf_machine_load_address (void)
> {
>   register Elf32_Addr pc __asm("%o7"), pic __asm("%l7"), got;
> 
>   LOAD_PIC_REG (pic);
> 
>   /* Utilize the fact that a local .got entry will be partially
>      initialized at startup awaiting its RELATIVE fixup.  */
> 
>   __asm("sethi %%hi(.Load_address),%1\n"
>         ".Load_address:\n\t"
>         "call 1f\n\t"
>         "or %1,%%lo(.Load_address),%1\n"
>         "1:\tld [%2+%1],%1"
>         : "=r"(pc), "=r"(got) : "r"(pic));
> 
>   return pc - got;
> }
> 
> The patch I posted today to libc-hacker doesn't rely on this and is more
> robust.
> 
> 	Jakub
> 

-- 
Daniel Jacobowitz
MontaVista Software                         Debian GNU/Linux Developer


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]