Subject: Re: ld: symbol __PROCEDURE_LINKAGE_TABLE_ remains undefined
To: Olaf Seibert <rhialto@polder.ubc.kun.nl>
From: Jason Thorpe <thorpej@nas.nasa.gov>
List: current-users
Date: 08/28/1998 08:13:19
On Fri, 28 Aug 1998 12:41:40 +0200 (MET DST) 
 Olaf Seibert <rhialto@polder.ubc.kun.nl> wrote:

 > Call me stupid, but so far nobody has been able to explain to *why* ELF
 > is such a Good Thing. All I know about it is that it doesn't even have
 > an operating system identification in executables (needed for proper
 > emulation modes or at least recognition for which OS a binary is) so
 > that various OSes have kludged around this in incompatible ways. The
 > fact that the Linux clan hasn't managed to do proper shared libs with
 > a.out does of course not count; from NetBSD we can see that it is
 > perfectly possible. Or would ELF (as in a fairy tale ;-) magically make
 > shared libs much more efficient even on NetBSD platforms where they
 > already exist?

ELF is just a better, more flexible executable format.  Dynamic linking
in ELF was part of the design, whereas in a.out it was an afterthought.

ELF can have OS identifiers, using .note sections, and the Cygnus folks
have declared a canonical way of doing this.  NetBSD ELF executables have
been so tagged for a long time, although our kernel doesn't pay attention
to them.  It should be ~trivial to write a program that inserts a .note
section to identify a program as Linux or SVR4.

ELF is a necessity for some of NetBSD's platforms.  Since it's a good
solution for many others, it's a good idea to standardize on a single
executable format (which also gives us the benefit of using a modern,
externally maintained toolchain).

Jason R. Thorpe                                       thorpej@nas.nasa.gov
NASA Ames Research Center                            Home: +1 408 866 1912
NAS: M/S 258-5                                       Work: +1 650 604 0935
Moffett Field, CA 94035                             Pager: +1 650 940 5942