64 lines
2.3 KiB
Plaintext
64 lines
2.3 KiB
Plaintext
$NetBSD: README,v 1.3 1999/01/11 11:05:29 christos Exp $
|
|
|
|
BUGS/PROBLEMS:
|
|
|
|
* rtld.c around line 147:
|
|
|
|
#iffdef __alpha__
|
|
/* XXX XXX XXX */
|
|
_rtld_objself.pltgot = NULL;
|
|
#endif
|
|
|
|
It's a workaround for a linker bug, and will go away when the linker is
|
|
fixed.
|
|
|
|
* Formerly, _DYNAMIC was _GLOBAL_OFFSET_TABLE_[0], but that isn't true with
|
|
newer snapshots of gas/binutils (at least on the Alpha), which support
|
|
multiple GOTs. That's what the OLD_GOT #ifdefs are about.
|
|
|
|
* The method used to relocate ld.so is shoddy and fragile. Currently it's
|
|
something like:
|
|
|
|
(1) assembly code relocates RELATIVE relocations in the GOT
|
|
(on some ports, all relative relocations; this will probably
|
|
have to be #ifdef'd in reloc.c), assuming that everything
|
|
in the GOT is a RELATIVE relocation.
|
|
|
|
(2) C code relocates the rest of the loader, excluding those
|
|
RELATIVE relocations already done (via an ... iffy heuristic).
|
|
|
|
Something better (like that the glibc ELF ld.so does) should be done
|
|
eventually, where a single set of C code is compiled twice, once for
|
|
normal use, and once to be used to relocate the shared linker. No
|
|
relocations should be processed in assembly language.
|
|
|
|
* On the Alpha, this code Really needs to be checked to be sure that
|
|
it doesn't make calls that could use FP, while doing lazy binding.
|
|
|
|
* R_*_COPY relocations don't really work. On the i386 at least:
|
|
call printf, generates an R_I386_COPY relocation and the
|
|
linker generates a direct call to the bss.rel section.
|
|
The copy relocation is supposed to put a jmp to printf
|
|
there, but code is broken and does not do anything. I.e.
|
|
it does not know the size of the relocation (it is 0) or
|
|
put a jmp table there. For now we can create working binaries
|
|
with -fPIC or -fpic because they don't use R_*_COPY relocations.
|
|
|
|
* On the i386, we cannot relocated the dynamic linker from 0, because
|
|
in pic mode globals use the plt, so it makes it difficult to do things
|
|
before we relocate ourselves. Maybe half-pic will help?
|
|
|
|
TO DO:
|
|
|
|
* Support for other platforms
|
|
|
|
* Support for coexistance of 32-bit and 64-bit ELF on platforms that can
|
|
do that.
|
|
|
|
* KNF
|
|
|
|
* Possible support for ldd (standalone operation) and program loading
|
|
a la the glibc shared loader.
|
|
|
|
* Support for relocating ld.elf_so on mips
|