ELF header machine types (e_machine)

Ian Lance Taylor ian@airs.com
Thu Oct 14 19:25:00 GMT 1999

   From: "David and Jannette Uczen" <uczen@mint.net>
   Date: Thu, 14 Oct 1999 21:36:15 -0400

   I am an IBM-mainframer with an interest in GNU utilities (we have GCC =
   for OS/390, for example) and Linux. Looking through the =
   binutils- source code, I noticed that in /include/elf/common.h =
   there are 2 definitions for the IBM System/370 (or S/390). One is =
   EM_S370 (9), presumably used by Amdahl's UTS, a SVR4-variant for =
   System/370-compatible systems, and the other is EM_I370 (0xF00F), =
   presumably for Running Linux On the Mainframe (ROAM).

   1) Shouldn't there be one definition for an architecture? These two are =
   essentially the same. The only different one _might_ be a new EM_S390 / =
   EM_I390 for IBM's System/390 CMOS Microprocessor, while upwardly =
   compatible with older System/370 processors, does have new unique =
   features such as support for IEEE floating point. However, this scheme =
   was done with Intel (EM_386 and EM_486), but appears to have been since =

These numbers were assigned by AT&T a long time ago.  I have no idea
why they made the choices they did.

   2a) Are EM_PPC and EM_CYGNUS_POWERPC different processors? 2b) If not, =
   why the two definitions?

They are the same processor.  I wrote the original PowerPC ELF
support, before there was a PowerPC ELF ABI.  I used the randomly
chosen number 0x9025 for the object files (it was my phone extension,
actually).  Later, PowerPC ELF was assigned the number 20.  At that
point, there were existing object files with the old number, so it
would have been a pain to simply change the number.  Instead, Michael
Meissner (I think) changed the binutils so that new object file used
the new number, but that old object files were still supported.

Incidentally, you forgot to ask about EM_PPC_OLD.  I think that was
because the PowerPC EABI group thought they had been assigned the
number 17, and people started using it, but the ELF registry later
assigned them the number 20.

   3) Who decides what are "official" machine types? Every document I have =
   found describing the ELF format seems to have a different list of =
   "official" values.=20

Nowadays, SCO does, since they now own System V.  I believe you can
contact the right people by sending mail to registry@sco.com.


More information about the Binutils mailing list