The question is:
  Do we need a new object format?

At that time, Linux can use a.out, elf and coff.

I am looking for a format with these features:
1- Text and literal (read only data) must be separated. This will made
 insertion of code easier.
2- The linker must be able to move a function. Usually, the linker doesn't
 move any piece of a section. Consequently, very used functions can be next
 to one time used function. This raises up paging and makes the execution
 slower. As far I as know, only HP-UX(tm,...) is able to do this: you use ld
 like usually, but there is an option of ld to read profile informations.
 Starting from the profile, ld changes the organization of a binary.
3- The loading time (in the kernel) must be short.
4- The first page must be invalid to trap NULL pointer.
5- No space must be wasted.

a.out can't satisfy 1, 2. With Linux, you loose about 1kb by file, and NULL
pointers can't be catched. If we change crt0, we can fill the first page with
garbage and unmap it at execution time, but more space will be wasted...

I have nearly no information about elf but I know elf can have user defined
sections. But loading time can be rather big.

If you know a standard binary format that will satisfy 1, 2, 3, 4 and 5,
email me please.
If you have suggestions or if you think this is unuseful, email me why.
