NetBSD/libexec/ld.elf_so
lukem 06de426449 SIMPLEQ rototill:
- implement SIMPLEQ_REMOVE(head, elm, type, field).  whilst it's O(n),
  this mirrors the functionality of SLIST_REMOVE() (the other
  singly-linked list type) and FreeBSD's STAILQ_REMOVE()
- remove the unnecessary elm arg from SIMPLEQ_REMOVE_HEAD().
  this mirrors the functionality of SLIST_REMOVE_HEAD() (the other
  singly-linked list type) and FreeBSD's STAILQ_REMOVE_HEAD()
- remove notes about SIMPLEQ not supporting arbitrary element removal
- use SIMPLEQ_FOREACH() instead of home-grown for loops
- use SIMPLEQ_EMPTY() appropriately
- use SIMPLEQ_*() instead of accessing sqh_first,sqh_last,sqe_next directly
- reorder manual page; be consistent about how the types are listed
- other minor cleanups
2002-06-01 23:50:52 +00:00
..
arch Add .register directives to appease newer gas. 2002-05-06 18:53:30 +00:00
Makefile Don't bomb if the ${DPADD} files are missing -- we want at least one of 2002-03-01 20:15:16 +00:00
README Update README. Still not complete. 2001-12-20 06:49:03 +00:00
debug.c __STDC__ is always defined on NetBSD. 2002-05-26 00:02:06 +00:00
debug.h
headers.c
ld.elf_so.1 Generate <>& symbolically. I'm avoiding .../dist/... directories for now. 2002-02-08 01:21:55 +00:00
load.c SIMPLEQ rototill: 2002-06-01 23:50:52 +00:00
malloc.c
map_object.c SIMPLEQ rototill: 2002-06-01 23:50:52 +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
reloc.c Add support for dynamic linking on the SuperH. From Marcus Comstedt, 2002-02-03 23:34:42 +00:00
rtld.c SIMPLEQ rototill: 2002-06-01 23:50:52 +00:00
rtld.h - Allow RTLD_DEFAULT_LIBRARY_PATH to be overridden. 2001-12-28 05:44:22 +00:00
rtldenv.h
search.c
symbol.c SIMPLEQ rototill: 2002-06-01 23:50:52 +00:00
sysident.h Don't use multi-line string literals. 2001-06-19 12:07:21 +00:00
xmalloc.c
xprintf.c __STDC__ is always defined on NetBSD. 2002-05-26 00:02:06 +00:00

README

$NetBSD: README,v 1.8 2001/12/20 06:49:03 thorpej 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, 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.

	(2) alpha 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