Subject: ELF integration on a.out platforms
To: None <tech-toolchain@netbsd.org, tech-userlevel@netbsd.org>
From: Christos Zoulas <christos@zoulas.com>
List: tech-userlevel
Date: 02/09/1999 02:56:55
Hi,

Since ELF is now completely working on i386 (including shared libraries,
debugger, kernel, boot blocks, installboot) I'd like to open a discussion
to decide which is the best way to integrate this without major hassles
to the user base.

Currently there are two proposals on how to integrate elf:

1. Create /usr/lib.aout /usr/lib.elf
	- modify ld.so to look into /usr/lib.aout
	- modify the tools to look there
   Pros:
	- clear identification of the binaries and co-existance
	- easy generation of binaries in both formats provided
	  cross compiler tools are there
   Cons:
	- ld.so still needs to be present in /usr/libexec
	- does not deal with third party libraries; pkg and xsrc
	  need to be dealt with the same way as /usr/lib
	- configuration scripts of third party software might break
	  when looking for /usr/lib
	- a lot of work modifying tools to look in /usr/lib.xxx
	- default 'make install' of elf libraries on third party
	  software already installed in a.out can break things

2. Create new emulation /emul/aout and COMPAT_AOUT
	- modify kernel to use system call table and system calls
	  that access pathnames to look in /emul/aout first.
	- provide package of aout libraries
	- move aout tools on /emul/aout
   Pros:
	- /usr/lib gets populated with elf binaries and stays under
	  the same pathname
	- No a.out binaries/libraries required in the main tree to
	  run a.out binaries
	- a.out support can be easily added and removed 
   Cons:
	- Flag day installation
	- The emulation path lookup is not perfect, it fails TDRT
	  in some cases
	- default 'make install' of elf libraries on third party
	  software already installed in a.out can break things
	- modest amount of work adding aout emulation in the kernel

o The list of pros and cons is not comprehensive. Please feel free to
  point out things I missed.
o Provide other alternatives.
o I am willing to do the work for either (1) or (2).


christos