[Oberon] LinuxA2.generic.tgz versus LinuxA2.tgz.

Felix Friedrich felix.friedrich at inf.ethz.ch
Wed Oct 4 11:57:30 CEST 2017

Hi Peter

The "generic" refers to the object file format chosen for A2. Years ago 
we have introduced this generic format and used it to build A2 for 
Windows and native variants. More recently we have adapted Linux A2 to 
it. The adaption is nontrivial because with the generic object file 
format we have also replaced legacy data structures with versions being 
more appropriate for the purpose of A2. [example: heap data structures]

The reason for its introduction is genericity: we can use the same 
loader and linker for all target systems and independent of the changes 
we make in the language or the runtime system. Before we had this object 
file format, any change to runtime data structures such as 
Modules.Module would require modification to (a) the compiler, (b) the 
(runtime) loader, (c) the (static) linker, separately for each target 
hardware (!). The generic object file format is versatile enough (yet 
extremely simple) such that the only modifications required are actually 
to the compiler. The trick is that the compiler generates all runtime 
data structures and puts them into the object file directly. The loader 
only has to load and patch fixups.

If you are interested, you can read about our motivations and the format 


> Until the current UnixAos there was only one archive for
> each of Darwin, Linux and Solaris.  Now in 7355 there are two for
> Linux and two for Solaris.
> LinuxA2.generic.tgz 	27-Jul-2017 17:06 	57M	
> LinuxA2.tgz 	03-Aug-2017 15:38 	46M	
> Nothing about this in Changelog.txt or in install.UnixAos. Can anyone
> explain the difference between plain and generic variants?
> Thanks,                      ... Lyall E.

More information about the Oberon mailing list