Subject: Re: 'prebind' implementation (was Re: HEADS UP: migration to fully dynamic linked "base" system)
To: Jason R Thorpe <thorpej@wasabisystems.com>
From: Bang Jun-Young <junyoung@mogua.com>
List: tech-userlevel
Date: 08/29/2002 00:15:36
On Wed, Aug 28, 2002 at 07:36:14AM -0700, Jason R Thorpe wrote:
> On Wed, Aug 28, 2002 at 09:28:26PM +0900, Bang Jun-Young wrote:
>
> > More thoughts on prebinding:
> >
> > - '.pgot' would be better than '.pplt'. First, '.got' is mapped
> > read-writable but '.plt' read-only, and second, it's much easier to
> > deal with GOT entries than PLT entries. '.plt' is code section so
> > you should know how jmp instruction is encoded for each archtecture.
>
> Err, either way, you should be able to lift the code for the relocations,
> for both PLT and GOT objects, from ld.elf_so ... in fact, I'd think that
> you'd want to share as much code as possible...
>
> Sure, PLT entires are generally lazy-bound, but it would still be a
> performance benefit to pre-bind them, yes?
Yes. Especially, prebinding would be of more benefit to small binaries
like those in /bin and /sbin.
>
> > - Save base addresses of shared objects in some place of the binary,
> > and if they are different than actual base addresses of shared objects
> > mapped in memory, dynamic linker performs additional fixup process by
> > adding/subtracting delta to/from each entry in '.pgot'. This would
> > be simple and not be a time-taking job.
>
> Hm, yah, that sounds like a good idea.
Thanks. ;-)
Jun-Young
--
Bang Jun-Young <junyoung@mogua.com>