NetBSD/libexec/ld.elf_so
cjs 5fd7ce7066 These updates to the build allow building against include files
and libs in the object tree, if you use a separate object tree,
while maintaining backward compatability with other build methods.
See the notes in src/share/mk/bsd.README for full details. Note
that the `make includes' target now only installs the include files
in the build directory (if you use one--otherwise they go in DESTDIR
just like before); `make install' will install include files in
DESTDIR.
1997-05-26 03:55:19 +00:00
..
alpha First cut at an ELF shared loader. Originally from John Polstra's FreeBSD elf 1996-12-16 20:37:55 +00:00
arch/alpha First cut at an ELF shared loader. Originally from John Polstra's FreeBSD elf 1996-12-16 20:37:55 +00:00
Makefile These updates to the build allow building against include files 1997-05-26 03:55:19 +00:00
README First cut at an ELF shared loader. Originally from John Polstra's FreeBSD elf 1996-12-16 20:37:55 +00:00
debug.c First cut at an ELF shared loader. Originally from John Polstra's FreeBSD elf 1996-12-16 20:37:55 +00:00
debug.h First cut at an ELF shared loader. Originally from John Polstra's FreeBSD elf 1996-12-16 20:37:55 +00:00
headers.c First cut at an ELF shared loader. Originally from John Polstra's FreeBSD elf 1996-12-16 20:37:55 +00:00
link.h First cut at an ELF shared loader. Originally from John Polstra's FreeBSD elf 1996-12-16 20:37:55 +00:00
load.c First cut at an ELF shared loader. Originally from John Polstra's FreeBSD elf 1996-12-16 20:37:55 +00:00
malloc.c First cut at an ELF shared loader. Originally from John Polstra's FreeBSD elf 1996-12-16 20:37:55 +00:00
map_object.c Mipsel changes to ELF ldd/ld.so: 1996-12-17 03:42:44 +00:00
paths.c First cut at an ELF shared loader. Originally from John Polstra's FreeBSD elf 1996-12-16 20:37:55 +00:00
reloc.c First cut at an ELF shared loader. Originally from John Polstra's FreeBSD elf 1996-12-16 20:37:55 +00:00
rtld.c make sure that ld.elf_so's path is in the data segment 1997-04-15 07:15:46 +00:00
rtld.h don't include members of Struct_Obj_Entry conditionally. 1997-02-14 22:30:25 +00:00
rtldenv.h First cut at an ELF shared loader. Originally from John Polstra's FreeBSD elf 1996-12-16 20:37:55 +00:00
search.c use 'normal' ELF library lookup rules 1997-02-17 19:32:05 +00:00
symbol.c First cut at an ELF shared loader. Originally from John Polstra's FreeBSD elf 1996-12-16 20:37:55 +00:00
sysident.h put in two identifying notes, which new binutils snapshots will turn 1997-03-21 05:39:42 +00:00
xmalloc.c First cut at an ELF shared loader. Originally from John Polstra's FreeBSD elf 1996-12-16 20:37:55 +00:00
xprintf.c First cut at an ELF shared loader. Originally from John Polstra's FreeBSD elf 1996-12-16 20:37:55 +00:00

README

$NetBSD: README,v 1.1 1996/12/16 20:37:56 cgd 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.


TO DO:

* Support for other platforms (e.g. mips)

* 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.