Subject: READ ME: Changes in EXEC_* and COMPAT_* options.
To: None <current-users@NetBSD.ORG>
From: Chris G Demetriou <Chris_G_Demetriou@ux2.sp.cs.cmu.edu>
List: current-users
Date: 10/02/1996 01:58:43
In the post-1.2 -current tree, the way support for executable formats
is included in kernels has changed.  All of the information in this
message will not really apply to you until "NetBSD-current" stops
being the NetBSD 1.2 release branch, but if i waited until then to
send this mail, this mail would probably have never gone out... 8-)


Previously:

	a.out and shell script support were always included.

	you could explicitly include support for other formats
		(e.g. ecoff) by using various EXEC_* (e.g.
		EXEC_ECOFF).

	compatibility options would cause executable format
		support to be pulled in.  For instance,
		COMPAT_LINUX and COMPAT_SVR4 support would
		cause 32-bit ELF support to be pulled in, and
		COMPAT_OSF1 and COMPAT_ULTRIX support would
		cause ECOFF support to be pulled in.


The new code by default includes support for _NO_ executable types.
There are 5 executable-types support modules defined:

	EXEC_SCRIPT		shell scripts
	EXEC_AOUT		a.out binaries
	EXEC_ECOFF		ECOFF binaries
	EXEC_ELF32		32-bit ELF binaries
	EXEC_ELF64		64-bit ELF binaries

Port maintainers should be updating their ports 'soon' so that the
supplied kernel config files include support for the appropriate
executable types.  However, (unless your port uses std.${MACHINE}
files, or if the maintainer of your port is slow to update the port's
config files) you will have to add the appropriate ones (EXEC_SCRIPT
and EXEC_AOUT, for most ports) to your kernel config file.
Don't worry about having them defined too many times...  Too few times
will cause problems, but too many won't.  8-)


If you include one of the COMPAT_* modules mentioned, you will have
to include support for the appropriate executable types (at least for
the near future). 

If you use COMPAT_LINUX you will have to include:
	EXEC_AOUT
	EXEC_ELF32

If you use COMPAT_SVR4 you will have to include:
	EXEC_ELF32

If you use COMPAT_ULTRIX or COMPAT_OSF1 you will have to include:
	EXEC_ECOFF


If you fail to include the right set of EXEC_* options in your
newly-build kernels (or do not recompile your kernel from scratch
after adding the options), you will most likely see behaviour where
binaries that used to run fine will no longer run.  It's possible
to configure a kernel which has _NO_ executable support.  Unless
your kernel supports the port's native executable format, you WILL NOT
BE ABLE TO BOOT.



just thought you (REALLY! 8-) ought to know.



chris