Symbian3/SDK/Source/GUID-CAC07A47-1475-5152-83AA-E59FD3AFF321.dita
author Dominic Pinkman <Dominic.Pinkman@Nokia.com>
Thu, 21 Jan 2010 18:18:20 +0000
changeset 0 89d6a7a84779
permissions -rw-r--r--
Initial contribution of Documentation_content according to Feature bug 1266 bug 1268 bug 1269 bug 1270 bug 1372 bug 1374 bug 1375 bug 1379 bug 1380 bug 1381 bug 1382 bug 1383 bug 1385

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
<!-- This component and the accompanying materials are made available under the terms of the License 
"Eclipse Public License v1.0" which accompanies this distribution, 
and is available at the URL "http://www.eclipse.org/legal/epl-v10.html". -->
<!-- Initial Contributors:
    Nokia Corporation - initial contribution.
Contributors: 
-->
<!DOCTYPE concept
  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
<concept id="GUID-CAC07A47-1475-5152-83AA-E59FD3AFF321" xml:lang="en"><title>elf2e32
command syntax</title><prolog><metadata><keywords/></metadata></prolog><conbody>
<section><title>Overview</title> <p>The <filepath>elf2e32</filepath> tool's
primary function is to create executables (DLLs and EXEs) in the format required
by Symbian platform, known as the E32Image format. The tool takes as input,
the executables produced by a compiler in the standard Executable and Linking
Format (ELF), and Symbian platform-specific options specified as command-line
arguments to the tool. The tool is located in at <filepath>epoc32\tools\elf2e32.exe</filepath>. </p> <p><b>Invocation
syntax </b> </p> <p> <codeph>elf2e32 [--capability=&lt;capabilities&gt;] [--compressionmethod
          [none | inflate | bytepair]] [--debuggable] [--dlldata]        
  [--definput=&lt;file-path&gt;] [--defoutput=&lt;file-path&gt;]           [--dso=&lt;file-path&gt;]
[--dump=&lt;dump-options&gt;]           [--e32input=&lt;file-path&gt;] [--elfinput=&lt;file-path&gt;]
[--fixedaddress]           [--heap=&lt;committed-size&gt;[,&lt;reserved-size&gt;]]
[--help]           [--libpath=&lt;search-paths&gt;] [--linkas=&lt;name&gt;] [--namedlookup]
          [--noexportlibrary] [--output=&lt;file-path&gt;] [--sid=&lt;secure-ID&gt;]
          [--stack=&lt;size&gt;] [--sysdef=&lt;ordinal-number&gt;,&lt;symbol&gt;] 
         [--targettype=&lt;target-type&gt;] [--uid1=&lt;UID&gt;] [--uid2=&lt;UID&gt;]
          [--uid3=&lt;UID&gt;] [--uncompressed]</codeph>  </p> </section>
<section><title>Options</title> <table id="GUID-40226F24-CBEA-5810-832A-9FEC90B108AB">
<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
<tbody>
<row>
<entry><p> <b>Option</b>  </p> </entry>
<entry><p> <b>Description</b>  </p> </entry>
</row>
<row>
<entry><p> <codeph>capability=&lt;capabilities&gt;</codeph>  </p> </entry>
<entry><p>Platform security capabilities to be assigned to the executable. </p> <p>Capabilities
can be specified by name using the set of identifiers used in mmp files, i.e.: <codeph>TCB</codeph>, <codeph>CommDD</codeph>, <codeph>PowerMgmt</codeph>, <codeph>MultimediaDD</codeph>, <codeph>ReadDeviceData</codeph>, <codeph>WriteDeviceData</codeph>, <codeph>DRM</codeph>, <codeph>TrustedUI</codeph>, <codeph>ProtServ</codeph>, <codeph>DiskAdmin</codeph>, <codeph>NetworkControl</codeph>, <codeph>AllFiles</codeph>, <codeph>SwEvent</codeph>, <codeph>NetworkServices</codeph>, <codeph>LocalServices</codeph>, <codeph>ReadUserData</codeph>, <codeph>WriteUserData</codeph>, <codeph>Location</codeph>, <codeph>SurroundingsDD</codeph>, and <codeph>UserEnvironment</codeph>. </p> <p>Multiple
capabilities can be specified using "+" as a separator. For example: </p> <codeblock id="GUID-80CCAB8E-AA0C-5B48-9E68-59AB1670BCA6" xml:space="preserve">--capability=LocalServices+ReadDeviceData+ReadUserData</codeblock> <p>The
special capability name <codeph>ALL</codeph> can be used to represent all
capabilities supported by the current version of Symbian platform. This can
also be used together with capability names prefixed with a '-' to indicate
which capabilities to exclude. For example: </p> <codeblock id="GUID-08672BAE-CABA-564E-B49C-6AB6FA8E8BA5" xml:space="preserve">--capability=ALL-TCB-TrustedUI</codeblock> <p>The default is no capabilities though the word <codeph>NONE</codeph> can
be used explicitly. </p> </entry>
</row>
<row>
<entry><p> <codeph>debuggable</codeph>  </p> </entry>
<entry><p>Specifies that the application can be debugged using the run-mode
debug subsystem. Only executables (EXEs and EXEXPs) can be specified as <codeph>debuggable</codeph>. </p> </entry>
</row>
<row>
<entry><p> <codeph>definput=&lt;file-path&gt;</codeph>  </p> </entry>
<entry><p>Input DEF file. </p> <p>This is used to specify a DEF file when
constructing a DLL and/or import library. </p> </entry>
</row>
<row>
<entry><p> <codeph>defoutput=&lt;file-path&gt;</codeph>  </p> </entry>
<entry><p>Output DEF file. </p> <p>Specifies a DEF file to be constructed
by the tool. </p> </entry>
</row>
<row>
<entry><p> <codeph>dlldata</codeph>  </p> </entry>
<entry><p>Allow writable static data in the DLL. </p> <p>The default is that
a DLL may not have writable static data. For more information, see <xref href="GUID-5BDE6462-E6CA-5738-A587-C7D875574789.dita">Static
data</xref>. </p> </entry>
</row>
<row>
<entry><p> <codeph>dso=&lt;file-path&gt;</codeph>  </p> </entry>
<entry><p>Output DSO (or library) file. </p> <p>Specifies the LIB file to
be constructed by the tool. </p> </entry>
</row>
<row>
<entry><p> <codeph>dump=&lt;dump-options&gt;</codeph>  </p> </entry>
<entry><p>Used to specify the information generated when the <codeph>e32input</codeph> option
is used. The sections to include are specified as follows: </p> <ul>
<li id="GUID-840C91A5-4C8A-507A-A4A3-D78BA9A370D7"><p> <codeph>h</codeph>:
Header </p> </li>
<li id="GUID-4BE04059-6BA5-51D2-9581-74808320B726"><p> <codeph>s</codeph>:
Security information </p> </li>
<li id="GUID-F61A5E32-808F-553F-B65E-6DB64270434B"><p> <codeph>c</codeph>:
Code section </p> </li>
<li id="GUID-B61E0C72-4DEC-5160-BC55-FE4F9094B0D9"><p> <codeph>d</codeph>:
Data section </p> </li>
<li id="GUID-8D16EF3E-63E0-577D-9DEE-EAD64D5B342D"><p> <codeph>e</codeph>:
Export information </p> </li>
<li id="GUID-158B2410-6EBF-5D09-88E7-3CFC2E46DC25"><p> <codeph>I</codeph>:
Import table </p> </li>
</ul> </entry>
</row>
<row>
<entry><p> <codeph>e32input=&lt;file-path&gt;</codeph>  </p> </entry>
<entry><p>Dumps a description of the specified E32Image file to standard output.
The output describes the executable's properties such as its header, its imports
and exports, and the contents of its code and data sections. Output options
are specified using the <codeph>--dump</codeph> parameter. </p> </entry>
</row>
<row>
<entry><p> <codeph>elfinput=&lt;file-path&gt;</codeph>  </p> </entry>
<entry><p>Input ELF file. </p> <p>Specifies a compiler-generated executable
in ELF format to be converted into E32Image format by the tool. </p> </entry>
</row>
<row>
<entry><p> <codeph>fixedaddress</codeph>  </p> </entry>
<entry><p>Indicates that the process must have a fixed address. </p> <p>See <xref href="GUID-A16508C2-2743-5E36-BCFB-C509ACCD372F.dita">Fixed processes</xref> for
more information. </p> <p>The default is no fixed address. </p> </entry>
</row>
<row>
<entry><p> <codeph>heap=&lt;committed-size&gt;[,&lt;reserved-size&gt;]</codeph>  </p> </entry>
<entry><p>The committed size and reserved size of the heap for the process,
specified in bytes. </p> <p>The first value given is the committed size, followed
by the reserved size which is optional. </p> <p>The default committed size
is 0x1000 and the default reserved size is 0x100000. </p> <p>See <xref href="GUID-BFEBCD57-3C83-56D7-B7A3-B8A361725645.dita">Memory
Management concepts</xref> for more information. </p> </entry>
</row>
<row>
<entry><p> <codeph>help</codeph>  </p> </entry>
<entry><p>Displays help text for the tool. </p> </entry>
</row>
<row>
<entry><p> <codeph>libpath=&lt;search-paths&gt;</codeph>  </p> </entry>
<entry><p>A semi-colon separated list of search paths that the tool should
use to locate import libraries. </p> </entry>
</row>
<row>
<entry><p> <codeph>linkas=&lt;name&gt;</codeph>  </p> </entry>
<entry><p>The internal name used in the image file for the executable. This
can include information that specifies the executable version (in braces)
and the UID3 (in square brackets). For example, <codeph>foo{00020001}[10011235].exe</codeph>,
would be used for an executable <filepath>foo.exe</filepath>, at version 2.1,
with UID3 <codeph>0x10011235</codeph>. </p> </entry>
</row>
<row>
<entry><p> <codeph>log=&lt;file-path&gt;</codeph>  </p> </entry>
<entry><p>Redirects console log messages to the specified file </p> </entry>
</row>
<row>
<entry><p> <codeph>compressionmethod [none | inflate | bytepair]</codeph>  </p> </entry>
<entry><p>The compression method to be used to compress the files. The tool
uses the <codeph>inflate</codeph> method by default. </p> <p>The following
compression methods can be used: </p> <p><table id="GUID-66F65203-1E4F-56D9-9AB8-7D47420C0B3B">
<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
<tbody>
<row>
<entry><p>none </p> </entry>
<entry><p>The files are not compressed. This is equivalent to using the <codeph>uncompressed</codeph> keyword. </p> <p> <b>Note</b>:
The <codeph>uncompressed</codeph> keyword, when specified, takes precedence
over any <codeph>compressionmethod</codeph>. </p> </entry>
</row>
<row>
<entry><p>inflate </p> </entry>
<entry><p>Compresses executable files using the default (Deflate, Huffman+LZ77)
algorithm. </p> </entry>
</row>
<row>
<entry><p>bytepair </p> </entry>
<entry><p>Compresses executable files using the bytepair algorithm. Bytepair
compression allows faster decompression than the default Deflate, Huffman+LZ77
algorithm and supports demand paging by performing compression and decompression
of code in independent 4KB pages. </p> </entry>
</row>
</tbody>
</tgroup>
</table> </p> </entry>
</row>
<row>
<entry><p> <codeph>namedlookup</codeph>  </p> </entry>
<entry><p>Enables symbol lookup by name using the <xref href="http://www.opengroup.org/onlinepubs/009695399/functions/dlsym.html" scope="external">dlsym</xref> Open Group API. This option has an impact on
the binary size as Symbian platform binaries do not include symbol information
by default. </p> <p> <b>Note</b>: If the tool is invoked by the Symbian platform
build toolchain, symbol lookup is enabled for the <codeph>STDEXE</codeph> and <codeph>STDDLL</codeph> target
types only. To enable symbol lookup for other target types, the tool must
be invoked independently. </p> </entry>
</row>
<row>
<entry><p> <codeph>noexportlibrary</codeph>  </p> </entry>
<entry><p>Suppress implicit exports. </p> <p>As part of the library exports,
the RVCT tools generate items not marked as <codeph>EXPORT_C</codeph> in the
source code. These include Virtual Table and Run-time Type Information entries.
Specifying this option causes the tool not to include these exports. </p> <p>For
background information, see <filepath>cedar\generic\tools\documentation\Migrating_from_RVCT21_build_328_to_build_416_v1.0.doc</filepath>. </p> <p>The default is to include these items generated by RVCT. </p> </entry>
</row>
<row>
<entry><p> <codeph>output=&lt;file-path&gt;</codeph>  </p> </entry>
<entry><p>Output E32 image file name. </p> </entry>
</row>
<row>
<entry><p> <codeph>sid=&lt;secure-ID&gt;</codeph>  </p> </entry>
<entry><p>Secure ID (SID) of the executable. </p> <p>An SID identifies an
executable uniquely on a phone. This allows service providers such as servers
to make security checks on the basis of the executable making the request. </p> </entry>
</row>
<row>
<entry><p> <codeph>stack=&lt;size&gt;</codeph>  </p> </entry>
<entry><p>Specifies the stack size for a process in bytes. </p> <p>The default
is 0. </p> </entry>
</row>
<row>
<entry><p> <codeph>sysdef=&lt;ordinal-number&gt;, &lt;symbol&gt;</codeph>  </p> </entry>
<entry><p>This option forces the specified symbol to be exported at the specified
ordinal position. </p> <p>This is required for some target types (polymorphic
DLLs). </p> </entry>
</row>
<row>
<entry><p> <codeph>targettype=&lt;target-type&gt;</codeph>  </p> </entry>
<entry><p>Target type. The vaild types are as specified by the mmp <xref href="GUID-9535CF67-7541-554E-BE5C-9FDDFDB58EA5.dita">targettype</xref> keyword. </p> <p>If <codeph>elfinput</codeph> is specified and there is no targettype,
a <xref href="GUID-9605B59D-F9DB-4BA3-8C87-1C5205976CBB.dita#GUID-9605B59D-F9DB-4BA3-8C87-1C5205976CBB/GUID-cd54fdec-8587-4d01-b839-d23af95c76b8">Custom
target</xref> is assumed. </p> <p>An <codeph>IMPLIB</codeph> target is assumed
if <codeph>--elfinput</codeph> is not specified and <codeph>-deffilein</codeph> is
specified. </p> </entry>
</row>
<row>
<entry><p> <codeph>uid1=&lt;UID&gt;</codeph>  </p> </entry>
<entry><p>UID 1 value for output executable. </p> </entry>
</row>
<row>
<entry><p> <codeph>uid2=&lt;UID&gt;</codeph>  </p> </entry>
<entry><p>UID 2 value for output executable. </p> <p>The default is 0. </p> </entry>
</row>
<row>
<entry><p> <codeph>uid3=&lt;UID&gt;</codeph>  </p> </entry>
<entry><p>UID 3 value for output executable. </p> <p>The default is 0. </p> </entry>
</row>
<row>
<entry><p> <codeph>uncompressed</codeph>  </p> </entry>
<entry><p>Specifies that the target executable must not be compressed. </p> <p>By
default, the target executable is compressed. </p> </entry>
</row>
<row>
<entry><p> <codeph>unfrozen</codeph>  </p> </entry>
<entry><p>Specifies that the input DEF file (specified with <codeph>--definput</codeph>)
is not treated as frozen. This means that the tool will not report errors
if the executable does not contain symbols that are specified in the DEF file. </p> </entry>
</row>
<row>
<entry><p> <codeph>vid</codeph>  </p> </entry>
<entry><p>Vendor ID (VID) of the executable. </p> <p>A VID allows service
providers such as servers to make security checks on the basis of the supplier
of the executable making the request. </p> </entry>
</row>
</tbody>
</tgroup>
</table> <p>The following table specifies whether an option is required, optional
or not applicable (N/A) for the main use cases of the tool (namely creating
DLLs, EXEs, EXEs with exports (EXEXP target), and import libraries (IMPLIB
target)). </p> <table id="GUID-E566D771-4098-5A82-8FBF-4C061D76BEEF">
<tgroup cols="5"><colspec colname="col0"/><colspec colname="col1"/><colspec colname="col2"/><colspec colname="col3"/><colspec colname="col4"/>
<tbody>
<row>
<entry><p> <b>Option</b>  </p> </entry>
<entry><p> <b>DLL (static/polymorphic)</b>  </p> </entry>
<entry><p> <b>EXE</b>  </p> </entry>
<entry><p> <b>EXEXP</b>  </p> </entry>
<entry><p> <b>IMPORT LIB</b>  </p> </entry>
</row>
<row>
<entry><p> <codeph>capability</codeph>  </p> </entry>
<entry><p>optional </p> </entry>
<entry><p>optional </p> </entry>
<entry><p>optional </p> </entry>
<entry><p>N/A </p> </entry>
</row>
<row>
<entry><p> <codeph>debuggable</codeph>  </p> </entry>
<entry><p>N/A </p> </entry>
<entry><p>optional </p> </entry>
<entry><p>optional </p> </entry>
<entry><p>N/A </p> </entry>
</row>
<row>
<entry><p> <codeph>dlldata</codeph>  </p> </entry>
<entry><p>optional </p> </entry>
<entry><p>N/A </p> </entry>
<entry><p>N/A </p> </entry>
<entry><p>N/A </p> </entry>
</row>
<row>
<entry><p> <codeph>definput</codeph>  </p> </entry>
<entry><p>optional </p> </entry>
<entry><p>N/A </p> </entry>
<entry><p>optional </p> </entry>
<entry><p>required </p> </entry>
</row>
<row>
<entry><p> <codeph>defoutput</codeph>  </p> </entry>
<entry><p>required </p> </entry>
<entry><p>N/A </p> </entry>
<entry><p>required </p> </entry>
<entry><p>N/A </p> </entry>
</row>
<row>
<entry><p> <codeph>dso</codeph>  </p> </entry>
<entry><p>required </p> </entry>
<entry><p>N/A </p> </entry>
<entry><p>required </p> </entry>
<entry><p>required </p> </entry>
</row>
<row>
<entry><p> <codeph>elfinput</codeph>  </p> </entry>
<entry><p>required </p> </entry>
<entry><p>required </p> </entry>
<entry><p>required </p> </entry>
<entry><p>N/A </p> </entry>
</row>
<row>
<entry><p> <codeph>fixedaddress</codeph>  </p> </entry>
<entry><p>N/A </p> </entry>
<entry><p>optional </p> </entry>
<entry><p>optional </p> </entry>
<entry><p>N/A </p> </entry>
</row>
<row>
<entry><p> <codeph>heap</codeph>  </p> </entry>
<entry><p>N/A </p> </entry>
<entry><p>optional </p> </entry>
<entry><p>optional </p> </entry>
<entry><p>N/A </p> </entry>
</row>
<row>
<entry><p> <codeph>libpath</codeph>  </p> </entry>
<entry><p>optional </p> </entry>
<entry><p>optional </p> </entry>
<entry><p>optional </p> </entry>
<entry><p>N/A </p> </entry>
</row>
<row>
<entry><p> <codeph>linkas</codeph>  </p> </entry>
<entry><p>required </p> </entry>
<entry><p>required </p> </entry>
<entry><p>required </p> </entry>
<entry><p>required </p> </entry>
</row>
<row>
<entry><p> <codeph>noexportlibrary</codeph>  </p> </entry>
<entry><p>optional </p> </entry>
<entry><p>N/A </p> </entry>
<entry><p>optional </p> </entry>
<entry><p>N/A </p> </entry>
</row>
<row>
<entry><p> <codeph>output</codeph>  </p> </entry>
<entry><p>required </p> </entry>
<entry><p>required </p> </entry>
<entry><p>required </p> </entry>
<entry><p>N/A </p> </entry>
</row>
<row>
<entry><p> <codeph>sid</codeph>  </p> </entry>
<entry><p>required </p> </entry>
<entry><p>required </p> </entry>
<entry><p>required </p> </entry>
<entry><p>N/A </p> </entry>
</row>
<row>
<entry><p> <codeph>stack</codeph>  </p> </entry>
<entry><p>N/A </p> </entry>
<entry><p>optional </p> </entry>
<entry><p>optional </p> </entry>
<entry><p>no </p> </entry>
</row>
<row>
<entry><p> <codeph>sysdef</codeph>  </p> </entry>
<entry><p>Required for polymorphic DLL target types only </p> </entry>
<entry><p>N/A </p> </entry>
<entry><p>N/A </p> </entry>
<entry><p>N/A </p> </entry>
</row>
<row>
<entry><p> <codeph>targettype</codeph>  </p> </entry>
<entry><p>DLL, or polymorphic DLL target type </p> </entry>
<entry><p>EXE </p> </entry>
<entry><p>EXEXP </p> </entry>
<entry><p>IMPLIB </p> </entry>
</row>
<row>
<entry><p> <codeph>uid1</codeph>  </p> </entry>
<entry><p>required </p> </entry>
<entry><p>required </p> </entry>
<entry><p>required </p> </entry>
<entry><p>N/A </p> </entry>
</row>
<row>
<entry><p> <codeph>uid2</codeph>  </p> </entry>
<entry><p>optional </p> </entry>
<entry><p>optional </p> </entry>
<entry><p>optional </p> </entry>
<entry><p>N/A </p> </entry>
</row>
<row>
<entry><p> <codeph>uid3</codeph>  </p> </entry>
<entry><p>optional </p> </entry>
<entry><p>optional </p> </entry>
<entry><p>optional </p> </entry>
<entry><p>N/A </p> </entry>
</row>
<row>
<entry><p> <codeph>uncompressed</codeph>  </p> </entry>
<entry><p>optional </p> </entry>
<entry><p>optional </p> </entry>
<entry><p>optional </p> </entry>
<entry><p>N/A </p> </entry>
</row>
<row>
<entry><p> <codeph>unfrozen</codeph>  </p> </entry>
<entry><p>optional </p> </entry>
<entry><p>N/A </p> </entry>
<entry><p>optional </p> </entry>
<entry><p>N/A </p> </entry>
</row>
<row>
<entry><p> <codeph>vid</codeph>  </p> </entry>
<entry><p>required </p> </entry>
<entry><p>required </p> </entry>
<entry><p>required </p> </entry>
<entry><p>N/A </p> </entry>
</row>
</tbody>
</tgroup>
</table> </section>
</conbody></concept>