ELF and EROS shapj@us.ibm.com
Fri, 25 Dec 1998 21:26:28 -0500

In response to some of Ben's reports, I went and looked at the whole ELF issue again.

The upshot of it is that ELF has some kinds of flexibility that a.out just does not have. There are portions of the present EROS system that rely on ELF that could be switched to a.out with a certain amount of work, but there are some pending things that cannot be switched.

The particular issue is that ELF's multiple section handling allows certain kinds of things to be done by the linker. Of these, the most noteworthy is a key multiplexing library that I had in mind to build. ELF allows keys to be declared in a bunch of object files and gathered into a single link section that is page aligned. These objects are *not* data objects, and so must not appear in code, data, or bss sections. There is no way a.out is going to do this. As a result, I made an early decision that EROS compilation would be based on the ELF object file format. This is why the current release notes say that you need a Linux system to build EROS.

This isn't a current issue -- there is vestigial support in the crt0.S file for domain code, but nothing is really using it. In the future, however, support for a.out will become impossible as the key library goes into place.

Bottom line: the best solution for a.out systems is going to be to build a cross toolchain. The good news is that this shouldn't be very hard to do.

shap