Hi,
Some questions about ELF dynamic linking on a mips-based machine:
1. Is there anywhere some sources available (even if not fully operational)?
It would certainly answer to my questions.
If not, then
2. Is the dynamic linker a shared object (as for the x86, m68k,. architectures)
or has it to handle virtual address overlap between itself and the
application ?
3. Supposing that it is a shared object, I wrote a skeleton adapted
from ld.so-1.7.14 to see what's going on.
Since it is a shared object, the first thing it has to do is to
relocate itself. Each entry in its .rel.dyn section refers to the
same symbol, .rodata, and have the R_MIPS_REL32 type. The SYSV
ABI MIPS supplement says that the calculation for this relocation
type is : A - EA + S where A is the addend, EA is either the symbol
st_value plus displacement or the value in the corresponding GOT
entry, depending on the value of the DT_MIPS_GOTSYM tag, and S, in
this case (a local symbol denoting a section), is the original
sh_addr minus the final sh_addr. What do they mean by "original"
sh_addr and "final" sh_addr ?
Thanks,
Robin
P.S.
Ralf, could you add us to the mailing list (our address: advanc@dial.eunet.ch)
|