On 3/28/06, Joerg Schilling <schilling at fokus.fraunhofer.de> wrote:
> > How as this handled during the amd64 bringup, btw.?

I was involved in the bringup of amd64 so let me give some insight
in how it was done previously.

The linker work (ld/krtld/ld.so.1) was kinda done in this
order:

1) first pass of the link-editor (ld) - add support for:
    - basic relocations (doreloc.c)
    - enable linking relocatable objects (ld -r)
    - enable static linking of a executable (kernel/unix)

2) kernel & boot loader folks do bunches of work and get unix
    & krtld into memory

3) work on krtld bootstraping code (it has to relocate itself) and then
    flush out krtld functionality

4) kernel folks now do bunches of more work to get to
    user land.

5) Implement basic dynamic linking support in the link-editor (ld)
   - building of shared libraries
   - building of PLT's
   - building of GOT's

6) port the run-time linker (ld.so.1).  This involves both the bootstraping
    portion and the hand-off between kernel & userland.  Work on
    loading & binding of objects, filling in PLT's - GOT's & what not

7) Once all of the above is working - start back filling with the less critical
    functionality:
    - Thread-Local Storage (both ld & ld.so.1)
    - link-auditing, especially PLT tracing which is platform specific

8) start beating on the linker test suite and flush out all of the missing
    functionality.


Anyway - that was kinda my working list when I've done this in
the past.

As a side note the xen for solaris folks have looked in revisiting
how krtld is involved in the initial bootstrap.  Depending on that
progress you can remove krtld from the early dependencies.


_Mike_

>
> I believe that the Sun ld has been ported first.
>
> J?rg
>
> --



--
Michael Walker
mwalker at fins.com

Reply via email to