NetBSD/libexec/ld.elf_so
bjh21 3cc5ae01bc Correct somewhere where, in rev 1.3, two new sentences had been dropped
into the middle of an existing sentence, and put them after it instead.
2002-09-11 23:11:41 +00:00
..
arch Do the _rtld_relocate_nonplt_self() thing here, and nuke the ld script. 2002-09-11 22:28:32 +00:00
debug.c __STDC__ is always defined on NetBSD. 2002-05-26 00:02:06 +00:00
debug.h KNF 1999-03-01 16:40:07 +00:00
headers.c If REL(A)SZ extends into .rel(a).plt, trim rel(a)lim. This is actually due to 2002-09-05 16:58:16 +00:00
ld.elf_so.1 Correct somewhere where, in rev 1.3, two new sentences had been dropped 2002-09-11 23:11:41 +00:00
load.c If /etc/ld.so.conf contains an invalid sysctl name any dynamically 2002-07-18 14:46:11 +00:00
Makefile Turn off DEBUG by default, and compile with -O3. (Tested on Alpha, ARM, 2002-08-31 18:18:14 +00:00
malloc.c MAP_COPY -> MAP_PRIVATE 1999-06-17 21:09:47 +00:00
map_object.c Introduce a new flag, `isdynamic', which is used to remember whether the 2002-09-06 13:20:29 +00:00
paths.c Don't include <uvm/uvm_param.h>. It does not appear to be needed by anything. 2001-05-24 17:41:42 +00:00
README Add support for dynamic linking on HP PA-RISC. 2002-07-10 15:12:33 +00:00
reloc.c Pass down an additional flag to _rtld_relocate_nonplt_objects() which 2002-09-06 15:17:53 +00:00
rtld.c This is a gratuitous null commit to force rtld.o to be rebuilt. 2002-09-11 20:48:21 +00:00
rtld.h Pass down an additional flag to _rtld_relocate_nonplt_objects() which 2002-09-06 15:17:53 +00:00
rtldenv.h KNF 1999-03-01 16:40:07 +00:00
search.c Adjust a comment after the Great Renaming. 2000-07-27 10:44:39 +00:00
symbol.c Re-poison a lot of consts, now that the mark shite is gone. 2002-09-06 03:12:04 +00:00
sysident.h Don't use multi-line string literals. 2001-06-19 12:07:21 +00:00
xmalloc.c KNF 1999-03-01 16:40:07 +00:00
xprintf.c xerrx() needs to output a trailing newline as well 2002-08-27 10:37:33 +00:00

$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