Symbian OS Internals/Appendix 3: The TRomImageHeader

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata
Created: hamishwillee (17 Jan 2011)
Last edited: hamishwillee (26 Jul 2012)

This section describes the image header for Symbian OS executable files in ROM. This is defined in the file E32ROM.H:

Description of field
00 UID 1
04 UID 2
08 UID 3
0C Checksum of UIDs.
10 Entry point of this executable (absolute address).
14 This executable's code address.
18 This executable's data address.
1C Code size (includes constant data).
20 Text size (code size - size of constant data).
24 Data size.
28 BSS (zero-filled data) size.
2C Heap minimum size (only needed for EXEs).
30 Heap maximum size (only needed for EXEs).
34 Stack size (only needed for EXEs).
38 Address of DLL reference table. (This is a list of the DLLs referenced by this executable which have static data.)
3C Number of functions exported by this executable.
40 Export directory address.
44 Security information (capabilities, secure ID, vendor ID).
54 Version number of the tools used to generate this image file.
58 Flags field (see below).
5C Priority of this process (only needed for EXEs).
60 Data and BSS linear base address - where this image file expects its data to be when it runs.
64 Next extension. Address of ROM entry header of subsequent extension files. This field is only used if there is more than one extension. The first extension is found using the TRomHeader.
68 A number denoting the hardware variant - used to determine if this executable can run on any particular system.
6C The total data size (including space reserved for DLLs - for fixed address EXEs in moving memory model).
70 Version number of this executable - a 16-bit major and a 16-bit minor version number. This is used in link resolution.
74 Address of exception descriptor for this image (used in C++ exception unwinding). Zero if no exception descriptor present.

The flags field contains the following flags:

31 KRomImageFlagPrimary - set if the file is a primary, that is, a kernel image.
30 KRomImageFlagVariant - set if the file is a variant DLL image.
29 KRomImageFlagExtension - set if the file is a kernel extension.
28 KRomImageFlagDevice - set if the file is a device driver.
27 KRomImageFlagSecondary - set if the file is a secondary, that is, the file server.
26 KRomImageFlagData - set if the file has .data/.bss and is not an extension or variant.
25 KRomImageFlagDataInit - set if the file or any of its dependencies have .data or .bss. Linkages to EXEs are not counted in this assessment.
24 KRomImageFlagDataPresent - set if the file or any of its dependencies have .data or .bss. Linkages to EXEs are counted.
23 KRomImageFlagExeInTree - set if this file links directly or indirectly to an EXE. If this is the case the EXE is listed first in this file's DLL reference table.
5, 6, 7 3-bit field indicating the entry point type - values the same as in E32ImageHeader.
3, 4 2-bit field indicating the ABI - values the same as in E32ImageHeader.
2 Set if this image is a fixed address EXE.
0 Set if this image is a DLL, clear if it is an EXE.

Licence icon cc-by-sa 3.0-88x31.png© 2010 Symbian Foundation Limited. This document is licensed under the Creative Commons Attribution-Share Alike 2.0 license. See http://creativecommons.org/licenses/by-sa/2.0/legalcode for the full terms of the license.
Note that this content was originally hosted on the Symbian Foundation developer wiki.

This page was last modified on 26 July 2012, at 09:40.
28 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.


Thank you!

We appreciate your feedback.