$NetBSD: README,v 1.9 2002/07/10 15:12:34 fredette Exp $ BUGS/PROBLEMS: * rtld.c around line 184: #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. * The method used to relocate ld.so is shoddy and fragile. Currently it's something like: alpha, hppa, powerpc: (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. On the hppa, this is actually done in C code. (2) alpha, hppa only: C code relocates the rest of the loader, excluding those RELATIVE relocations already done (via an ... iffy heuristic). arm, i386, m68k, sparc: (1) C code relocates the loader in _rtld_init() carefully so that it does not touch any globals. mips: (1) loads ld.elf_so at 0, so no relocating is necessary. 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. TO DO: * Support for coexistance of 32-bit and 64-bit ELF on platforms that can do that. * Support for relocating ld.elf_so on mips