Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 08 Feb 2002 14:48:38 -0800
From:      Peter Wemm <peter@wemm.org>
To:        John Polstra <jdp@polstra.com>
Cc:        Andrew Gallatin <gallatin@cs.duke.edu>, freebsd-alpha@FreeBSD.ORG
Subject:   Re: more on recent current alpha rtld/binutils breakage. 
Message-ID:  <20020208224838.2037039F1@overcee.wemm.org>
In-Reply-To: <XFMail.020208121717.jdp@polstra.com> 

next in thread | previous in thread | raw e-mail | index | archive | help
John Polstra wrote:
> On 08-Feb-02 Andrew Gallatin wrote:
> > 
> > So its like the _rtld function hasn't been relocated.
> 
> It's called from rtld-elf/alpha/rtld_start.S, and there's some code
> just before that point which is supposed to relocate the global
> offset table in order to make that possible.  I think that's the
> area where things are going wrong.

The relocation records are different now:

ld-elf.so.1.hosed:     file format elf64-alpha

DYNAMIC RELOCATION RECORDS
OFFSET           TYPE              VALUE 
000000000002bba0 RELATIVE          *ABS*+0x000000000002bb98
000000000002bbb0 RELATIVE          *ABS*+0x000000000002bba8
000000000002bbc0 RELATIVE          *ABS*+0x000000000002bbb8
000000000002bbc8 RELATIVE          *ABS*+0x0000000000007d80
000000000002bbd0 RELATIVE          *ABS*+0x0000000000009d60
000000000002bbd8 RELATIVE          *ABS*+0x0000000000009f20
....
000000000002e080 RELATIVE          *ABS*+0x000000000002d388
000000000002e088 RELATIVE          *ABS*+0x000000000002e158
000000000002d4a8 GLOB_DAT          __syscall
000000000002d4b0 GLOB_DAT          __sysctl
000000000002d4c0 GLOB_DAT          _pthread_mutex_lock
...


versus:

ld-elf.so.1:     file format elf64-alpha

DYNAMIC RELOCATION RECORDS
OFFSET           TYPE              VALUE 
000000000002bcc8 RELATIVE          *ABS*
000000000002bcd8 RELATIVE          *ABS*
000000000002bce8 RELATIVE          *ABS*
000000000002bcf0 RELATIVE          *ABS*
000000000002bcf8 RELATIVE          *ABS*
000000000002bd00 RELATIVE          *ABS*
000000000002bd08 RELATIVE          *ABS*
000000000002bd10 RELATIVE          *ABS*
000000000002bd18 RELATIVE          *ABS*
000000000002bd20 RELATIVE          *ABS*
...
000000000002e0a0 RELATIVE          *ABS*
000000000002e0a8 RELATIVE          *ABS*
000000000002d4d0 GLOB_DAT          __syscall
000000000002d4d8 GLOB_DAT          __sysctl
000000000002d4e8 GLOB_DAT          _pthread_mutex_lock
...

If I had to guess, I'd say that the relocation fixup code around rtld_start.S
does not handle ADDEND type relocations properly, and ld is now emitting
them.


Cheers,
-Peter
--
Peter Wemm - peter@FreeBSD.org; peter@yahoo-inc.com; peter@netplex.com.au
"All of this is for nothing if we don't go to the stars" - JMS/B5


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-alpha" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020208224838.2037039F1>