Each operating system has its own executable file format. For example, Windows uses PE (Portable Executable) format and many UNIX variants use ELF (Executable and Linkable Format).
Symbian OS has its own executable file format. It is sometimes called E32Image. The E32Image format on pre-Symbian OS 9 is based on PE. The E32Image format on Symbian OS 9 and later is based on ELF.
There are some tools included in Symbian SDKs to convert PE or ELF to E32Image, i.e.:
- petran. Petran is used in pre-Symbian OS 9 to translate PE to E32Image.
- elftran. Elftran is used in Symbian OS 9 or later to translate ELF in ABIv1 format to E32Image.
- elf2e32. elf2e32 is used in Symbian OS 9 or later to translate ELF in ABIv2 format to E32Image.
All the tools above are executed automatically during build process. Normally, it is executed at the end of abld.bat command.
There are some reasons why Symbian doesn't use standard executable format, for example:
- There are some OS-specific features need to be embedded in the header, for example capability information of Platform Security.
- Symbian OS reduces the size of executable file significantly by replacing function name with ordinal number. The translation is done by the tool based on information stored in a DEF file.
- Application Binary Interface
- E32Image file format on pre-Symbian OS 9
- E32Image file format on Symbian OS 9