fixed permissions check for executable files exported on systems where 'ls' reports alternative access characters
Version 2.14.0 (rombuild)
===============
Made by Zhi Dou 26/10/2009
1. RM-RIM406-1263: BU: Visual ROM Layout
Version 2.13.4 (rombuild)
===============
Made by Zhi Dou 19/10/2009
1. Minor change for copyright from SPL to EPL.
Version 2.6.5 (rofsbuild)
===============
Made by Zhi Dou 19/10/2009
1. Minor change for copyright from SPL to EPL.
Version 2.6.4 (rofsbuild)
===============
Made by Zhi Dou 14/10/2009
1. DPDEF142516 rofsbuild somtimes crash when building rofs image for tube with many times.
Version 2.13.3 (rombuild)
===============
Made by Ross Qin 14/09/2009
1. DPDEF141843 Coverity defects about Resource Leak and Delete Array.
Version 2.6.3 (rofsbuild)
===============
Made by Ross Qin 14/09/2009
1. DPDEF141843 Coverity defects about Resource Leak and Delete Array.
Version 2.6.2 (rofsbuild)
===============
Made by Ross Qin 10/09/2009
1.DPDEF141840 ROFSBUILD is not processing "-s<log|screen|both>" and "-loglevel<012>" correctly
Version 2.6.1 (rofsbuild)
===============
Made by Ross Qin 07/09/2009
1.DPDEF141838 rofsbuild behaves differently from rombuild when invalid numbers given
Version 2.13.2 (rombuild)
===============
Made by Ross Qin 07/09/2009
1.DPDEF141838 rofsbuild behaves differently from rombuild when invalid numbers given
2.DPDEF141291 Update unpaged memory overflow error message of rombuild.exe
Version 2.13.1 (rombuild)
===============
Made by Ross Qin 03/09/2009
1.DPDEF141685 Low error privilege for Kernel/variant/extension links to non-extension
Version 2.6.0 (rofsbuild)
===============
Made by Ross Qin 26/08/2009
1. REQ11940 Parallel processing - ROFSBUILD
Version 2.13.0 (rombuild)
===============
Made by Ross Qin 26/08/2009
1. REQ12560 Parallelise Content Preparation - ROMBUILD
2. REQ13102 Parallelise Image Generation - ROMBUILD
Version 2.1.603 (readimage)
===============
Made by Ross Qin 24/08/2009
1. DPDEF141624 Coverity reports delete array in C++ without [] and deadcode.
Version 2.12.2 (rombuild)
===============
Made by Ross Qin 24/08/2009
1. DPDEF141624 Coverity reports delete array in C++ without [] and deadcode.
Version 2.5.3 (rofsbuild)
===============
Made by Ross Qin 24/08/2009
1. DPDEF141076 Memory leak in rofsbuild
2. DPDEF141624 Coverity reports delete array in C++ without [] and deadcode.
Version 2.1.602 (readimage)
===============
Made by Zhi Dou 19/08/2009
1. DPDEF141566 Textshell ROM fails to build due to 'cannot open obey file'
Version 2.12.1 (rombuild)
===============
Made by Zhi Dou 19/08/2009
1. DPDEF141566 Textshell ROM fails to build due to 'cannot open obey file'
Version 2.5.1 (rofsbuild)
===============
Made by Zhi Dou 19/08/2009
1. DPDEF141566 Textshell ROM fails to build due to 'cannot open obey file'
Version 2.5.0 (rofsbuild)
===============
Made by Zhi Dou 31/07/2009
1. PREQ2465's REQ12562 Byte-pair compression update
Version 2.12.0 (rombuild)
===============
Made by Zhi Dou 31/07/2009
1. PREQ2465's REQ12562 Byte-pair compression update
Version 2.4.1 (rofsbuild)
===============
Made by Zhi Dou 29/07/2009
1. DPDEF141175 - Removal of the "-w" option in imgtools .mmp files results in a lot of warnings
Version 2.11.2 (rombuild)
===============
Made by Zhi Dou 29/07/2009
1. DPDEF141175 - Removal of the "-w" option in imgtools .mmp files results in a lot of warnings
Version 2.11.1 (rombuild)
===============
Made by Zhi Dou 27/07/2009
1. DPDEF141013 ROMBUILD should prevent kernel extensions linking to user side
Version 2.11.0 (rombuild)
===============
Made by Zhi Dou 21/07/2009
1. PREQ2465's REQ11939 Warnings for unpaged memory size overflows
Version 2.10.0 (rombuild)
===============
Made by Zhi Dou 20/07/2009
1. REQ13110 HCR file in ROM (ROMBUILD)
Version 2.4.0 (rofsbuild)
===============
Made by Zhi Dou 20/07/2009
1. REQ13111 HCR file in a separate NAND partition (ROFSBUILD)
Version 2.1.602
===============
Made by Vino Jose 10/07/2009
1. ChrisN
1. MILESTONE: SymTB9.2, GT0419, MS3.36, DS.1815 PREQ2621 System Architecture Relocating header files - K&HS support
Version 2.1.601
===============
Made by DeleOgunjumelo 15/01/2009
1. JonCo
1. MILESTONE: Diran, GT0421, MS3.20, DS1210, REQ11822: WDP support for SBSv1
2. MILESTONE: Diran, GT0421, MS3.20, DS1210, REQ11823: WDP support for romtools
PREQ1954 Writeable data paging: prototype release
Version 2.1.600
===============
Released by Kun Xu, 20/06/2008
1. DEF122540: Slight issue with readimage and sis files that specify a drive letter.
Version 2.1.599
===============
Released by Kun Xu, 17/06/2008
1. DEF122721 READIMAGE:Files are extracted in 'reftsp.ini' directory for an ROFS image.
Version 2.1.598
===============
Released by Kun Xu, 02/06/2008
1. DEF122243: ROMBuild deal with file contain line more than 255 characters incorrectly
Version 2.1.597
===============
Released by Kun Xu, 02/06/2008
1. DEF122827: Rom build failure with _ONENAND switch
2. DEF119470: ROFSBUILD hangs when an empty OBY file is passed as input
3. DEF122024: Many warnings when compiling readimage tool with MSVC++ 6.0
4. DEF122533: ROFSBUILD loglevel2 generates logs which don't work for interpretsis
Version 2.1.596
===============
Released by ReubenH, 12/05/2008
1. DEF115401: Incomplete validation of data in loader
Version 2.1.595
===============
Released by Mool Chand Tyagi, 13/12/2007
1. PDEF115166 Symbian rombuild.exe work incorrectly when compression is used
Version 2.1.594
===============
Released by Tamilarasu Byran, 04/12/2007
1. PDEF114692: elf2e32 - failed to report relocation data.
Version 2.1.593
===============
Released by Tamilarasu Byran, 07/11/2007
1. DEF113140: Buildrom fails with error "Use the keyword 'romsize' " for extension ROFS image.
Version 2.1.592
===============
Released by Madhu, 31/10/2007
1. PDEF107501: readimage is not able to display output of the patched dll.
Version 2.1.591
===============
Released by Tamilarasu Byran, 26/10/2007
1. INC112577: Readimage tool crashes when run on S60 3.2 rom image.
Version 2.1.590
===============
Released by Tamilarasu Byran, 25/10/2007
1. DEF107096: Postlinker ignores references to imports from the data segment.
2. DEF112586: Buildrom fails while building extension rofs image.
Version 2.1.589
===============
Released by Saurabh, 11/10/2007
1. INC112241: Operator precedence bug in Rombuild
Version 2.1.588
===============
Released by Moolchand, 10/10/2007
1. PDEF109724: Rombuild/Rofsbuild should warn if dll or exe is located outside standard paths
Version 2.1.587
===============
Released by Saurabh, 03/10/2007
1. DEF111903: Elf2e32 GT warning base e32
Version 2.1.586
===============
Released by Madhu, 28/09/2007
1. PDEF102323: rofsbuild crashes without generating appropriate error message
Version 2.1.585
===============
Released by Tamilarasu Byran, 25/09/2007
1. DEF111695: Data drive image generation failed
2. DEF104630: elf2e32 crashes
Version 2.1.584
===============
Released by AndrewSmi, 09/08/2007
1. AndrewSmi
1. DEF110094: Run mode debug: debuggable keyword not supported for armv5_abiv1 in MCL
Version 2.1.583
===============
Released by Tamilarasu Byran, 08/08/2007
1. DEF106861: Specifying a compression method in buildrom doesn't work
Version 2.1.582
===============
Released by MiguelB, 06/06/2007
1. Andrew Haigh
1. PREQ1426: Added Debuggable bitfield to E32 header and associated changes
Version 2.1.581
===============
Released by ???, dd/mm/yyyy
1. SivashankarN
1. EC114: Core OS: Enhance File Server to solve 1085/1086 interoperability issue.
Enhanced rofsbuild tools to handle the special attributes to create the rofs image
Version 2.1.580
===============
Released by JonC, 03/04/2007
1) DEF104558 ELF2E32 should build dynamically for TOOLS2 rather than statically for TOOLS
Version 2.1.579
===============
Released by KunalM, 27/03/2007
1) Seclib built as part of the system build
Version 2.1.578
===============
Released by KunalM, 20/03/2007
1) ROM building tools (ROMBUILD,ROFSBUILD) ported to the TOOLS2 platform, under PREQ1182, MS3.1
Version 2.00.577
==========================
(Made by SushmitaR, 19/03/2007)
1) OlegI
DEFECT FIX: PDEF102522: DP: unhandled exception readimage.exe when using a XIP ROM paged core image
Version 2.1.576
===============
Released by KunalM, 06/03/2007
1) Build tools (elfdump,uidcrc) ported to the TOOLS2 platform, under PREQ1182, MS3.6.2
2) Seclib and Zlib added as pre-built libraries in the MCL for TOOLS2
Version 2.00.575
==========================
(Made by JonathanM, 07/02/2007)
1) JonathanM
DEFECT FIX: DEF101095: DP: Rofsbuild doesn't support paged, unpaged and pagingoverride keywords
Version 2.00.574
==========================
(Made by Dusko, 12/12/2006)
1) Dusko
DEF097419: DemandPaging:Keywords paged/unpaged are case sensitive
Version 2.00.573
==========================
(Made by Dusko, 11/10/2006)
1) Dusko
DEF095506: Change in behaviour for 0 length files (rofsbuild)
Version 2.00.572
==========================
(Made by Dusko, 27/09/2006)
1. Dusko
DEF093537: Re-Introducing warnings when creating demand paged ROMs
2. RajeswariR
DEF087061 : PR0104 test failures - Incorrect function call, incorrect msg checking
DEF088937: Incorrect usage of $ChopSrcPath in cl_bpabi.pm.
DEF091008: ignorenoncallablefunction not supported in ABIV2 mode toolchain.
DEF093342: Symbol name for absent exports present in the DSO file.
DEF093344: ABIV2 fixup should not happen for export table relocation entries in postlinker.
DEF093345: Support for no exception compiler option in the ABIV2 mode toolchain.
DEF094731: Workaround to handle ARM linker veneer problem.
Version 2.00.571
==========================
(Made by RichardC, 13/09/2006)
1. RichardCo
1. DEF093954: GetSecurityInfo does not support opening unicode filenames
2. DEF092758: E32ImageFile::Open does not support opening unicode filenames
Version 2.00.570
==========================
(Made by Dusko, 05/09/2006)
1. Dusko
INC088317 Elftran crashes during compilation of ARMV5 dll
Version 2.00.569
==========================
(Made by JonathanM, 01/09/2006)
1. DanH
1. DEF091669: Several rombuild problems in demand paged roms.
Fixed various rombuild problems with different demand paging configurations, including
unhandled exceptions with certain edge cases and missing support for the 'alwayspage'
value for the pagingoverride keyword.
Version 2.00.568
==========================
(Made by Dusko, 23/08/2006)
1. Dusko
DEF092459: Warnings when creating demand paged ROMs
Version 2.00.567
==========================
(Made by ????, ??/??/2006)
1. AttilaV
1. DEF090973: elf2e32 can't dump header of a byte pair compressed binary
Added missing image header wirting code fragment into e32imagefile.cpp
E32ImageFile::WriteImage()method Bytepair compressed image generation branch.
Added new case: branch for display bytepair compression method in t the imgdump.cpp
E32ImageFile::DumpHeader method.
2. DEF091564: Spurious warnings when using BytePair compression.
In \e32tools\e32image\e32image.cpp there are spuriou 'warning' messages whenever
BytePair compression is used in "ostream& operator<<". These should be deleted.
Version 2.00.566
==========================
(Made by RobertJ, 20/07/2006)
1. DanH
1. DEF090813: Rofsbuild has warnings when creating demand paged ROMs
Added support for paged/unpaged attributes in rofsbuild. No action is taken with these
attributes yet (not needed until "Code Paging" support is added) but the warnings have
been removed when DP ROMs are created.
Version 2.00.565
===========================
(Made by DmitryL, 28/06/2006)
1. AttilaV
1. DEF088473: ELF2E32 tool terminates if --compressionmethod bytepair CLI parameter presents
Fixed an uninitialised pointer use at create byte pair compressed executable image.
Version 2.00.564
===========================
(Made by Dusko, 19/06/2006)
1. JohanG
DEF088447 Change in the rom log file format breaks CW debugging ...
Version 2.00.563
===========================
(Made by Dusko, 19/06/2006)
1. JohanG
1. DEF079348: ROMBUILD doesn't always fail cleanly on OOM
2. DEF083206: elftran only dumps inferred relocations, not code or data
Version 2.00.562
===========================
(Made by DjordjeK, 06/06/2006)
1. AttilaV
1. DEF081770: The Loader should verify compression type.
Version 2.00.561
===========================
(Made by DavidM, 26/05/2006)
1. AttilaV
Milestone: Argus,GT0286,MS3.2
Extended PETRAN, ELFTRAN, ELF2E32, ROMBUILD, ROFSBUILD to handle new compression method Byte Pair
and new executable image compressed by the new compression
Version 2.00.560
===========================
(Made by DuskoJ, 30/05/2006)
1) SatyakamM
DEF083920: Rofsbuild crashes on using patchdata for ABIV2 DLL (ABIV1 works fine)
Version 2.00.559
===========================
(Made by DuskoJ, 13/04/2006)
1) Dusko
DEF083116 Validaterel always fails
Version 2.00.558
===========================
(Made by DuskoJ, 16/03/2006)
1) JonC
DEF082002 - EVALID can't deal with case differences in ARMV5 DLL
Version 2.00.557
===========================
(Made by JonathanM, 06/03/2006)
1) JonathanM
MILESTONE: Argus GT0286, MS3.1 PREQ209 Demand Paging Prototype.
First delivery of demand paging prototype. Delivery step DS204.
Version 2.00.556
===========================
(Made by KuldipN, 08/02/2006)
1) KuldipN
DEF078510 buildrom does not validate new XML files
DEF077827 buildrom feature management - should disallow default ranges with extra flags
Version 2.00.555
===========================
(Made by DuskoJ, 24/01/2006)
1) DuskoJ
DEF075849 Feature registry API returning error when featreg.cfg file is greater than 64KB
DEF077941 VA_* macros cannot be used with GCCE
Version 2.00.554
===========================
(Made by JonathanM, 04/01/2006)
1) JonathanM
PREQ1030 - Kernel support for device driver test suites - Generic Logging Engine.
This adds support for the following keywords into ROMBUILD:
btrace, btracemode and btracebuffer
See base/documentation/Base_How_To_BTrace.doc
Version 2.00.553
===========================
(Made by KuldipN, 21/10/2005)
1) KuldipN
PREQ1086 - Device Feature Management (DS 069)
Version 2.00.552
===========================
(Made by KuldipN, 12/10/2005)
1) KuldipN
PREQ1028 - Plug-in compiler integration (DS 063)
Version 2.00.551
===========================
(Made by KuldipN, 06/10/2005)
1) KuldipN
PREQ1085 Flexible device ROM configuration
Version 2.00.550
===========================
(Made by KuldipN, 14/09/2005)
1) KuldipN
REQ5412: Enhance ROM tools compression options (part of PREQ1192)
Version 2.00.549
===========================
(Made by DuskoJ, 12/07/2005)
1) RajeswariR
DEF065105 Using GCC-E should not require modification of existing bld.inf files
DEF063447 Postlinker crashes with unsupported outfile
Version 2.00.548
================
(Made by JonC, 21/07/2005)
1) JonC
PREQ1032 Hardware-dependent support for "VFP" floating point acceleration and accelerated maths functions
Version 2.00.547
===========================
(Made by DuskoJ, 13/07/2005)
1) Dusko
DEF063791 ROFSBUILD resets main ROFS file attributes when processing a ROFS extension
Version 2.00.546
===========================
(Made by DuskoJ, 01/07/2005)
1) Dusko
DEF062362 PE_DUMP does not report all significant content in NSIS files
DEF064173 secdump.exe blows up when you try and use it
Version 2.00.545
===========================
(Made by KuldipN, 22/06/2005)
1) KuldipN
DEF060825 PR0104: Addition of GCCE support to CodeWarrior
Version 2.00.544
===========================
(Made by KuldipN, 10/06/2005)
1) KuldipN
DEF062125 PR104: Custom DLL generation is failing
Version 2.00.543
===========================
(Made by DuskoJ, 10/06/2005)
1) Dusko
DEF061701 Petran.exe can crash on certain non E32 files
Version 2.00.542
===========================
(Made by KuldipN, 27/05/2005)
1) KuldipN
PREQ413 Changes to support the GCCE toolchain.
PREQ414 Enable Commercial Compatible Compilers
DEF061420 Elf2e32 Problems
Version 2.00.541
===========================
(Made by DuskoJ, 27/05/2005)
1) BalaT
DEF060837 RVCT2.2 emits unresolved symbols which ELFTRAN does not notice.
Version 2.00.540
===========================
(Made by KuldipN, 11/05/2005)
1) KuldipN
DEF060826 - PR0104 - PostLinker Memory Leaks
Version 2.00.539
===========================
(Made by KuldipN, 3/05/2005)
1) KuldipN
PREQ413 - Changes to support the GCCE toolchain.
Version 2.00.538
===========================
(Made by BalaT, 1/04/2005)
1) BalaT
DEF058002 - [System Build] Failed to build EIKCORE.DLL using RVCT2.2
Version 2.00.537
===========================
(Made by MiguelB, 1/03/2005)
1) MiguelB
DEF055301 - ROFSBUILD, COREIMAGE keyword: problem with single-char files/directories
Version 2.00.536
===========================
(Made by Bala, 22/02/2005)
1) Bala
PREQ1027 Submission of RVCT 2.2 Run-Time ABI Compliance to MCL
Version 2.00.535
===========================
(Made by Dusko, 21/02/2005)
1) BalaT
DEF051265 Problems debugging .cia files in ARMV5 builds.
Version 2.00.534
===========================
(Made by Dusko, 19/01/2005)
1) Dusko
DEF052809 - GENSTUB ERROR: can't open output file....
Version 2.00.533
===========================
(Made by Dusko, 23/11/2004)
1) BalaT
1) DEF051128 - armv5 library build in parallel cause conflicts
Version 2.00.532
===========================
(Made by KamranN, 11/11/2004)
1) KamranN
1) Fix for defect DEF051421 Problems with binary search in ROFS
Version 2.00.531
===========================
(Made by Dusko, 08/10/2004)
1) BalaT
1) DEF047934 - ROMBUILD:EXE corrupts ROM directory of an extension ROM
Version 2.00.530
===========================
(Made by Dusko, 04/10/2004)
1) BalaT
1. Fix for DEF046271 - EVALID cannot cope with differing temp paths present in some ARMV5 .lib files.
Patch to Version 2.00.529
===========================
(Made by ???, ??/??/2004)
1. JonathanM
1. Fix for -dump option in PETRAN.
Patch to Version 2.00.529
===========================
(Made by MichaelP, 27/08/2004)
1. JonathanM
1. Defect Fix: DEF048051 - ROMBUILD can when PlatSecEnforceSysBin is ON
Version 2.00.529
===========================
(Made by KuldipN, 25/08/2004)
1. NaheedA
1. DEF047579 - petran fails to report a corrupted input file.
2. DEF046271 - EVALID cannot cope with differing temp paths present in some ARMV5 .lib files
Patch to Version 2.00.528
===========================
(Made by JonathanM, 19/08/2004)
1. JonathanM
1. Defect Fix: DEF048015 - [System Build] ROMs failed to build for MCL 03344 8.1b/9.0
Version 2.00.528
===========================
(Made by DjordjeK, 18/08/2004)
1. JonathanM
1. Added -dump option to PETRAN and ELFTRAN to select what information should
be displayed about an image file. This takes a string argument consisting
of letters to select the information to be dumped:
h All header info
s Platform Security info
c Code section
d Data section
e Exports
i Imports
These letters can be used in any combinations, e.g. "PETRAN -dump ie foo.exe"
will show all Imports and Exports of FOO.EXE
Version 2.00.527
===========================
(Made by JonathanM, 26/07/2004)
1. JonathanM
1. Added PlatSecEnforceSysBin setting to ROMBUILD which forces all binary files to
be placed under the \sys\bin\ directory.
Part of Yankee,GT0217,MS3.1.4 PS6.3.2 Ignore path information for binary files
within ROM build and loader.
Version 2.00.526
===========================
(Made by JonathanM, 26/05/2004)
1. DennisM
1. Fixed defect DEF041434 EKA2 ROMBUILD can't build extension ROMs
2. ROMBUILD now checks that kernel side code doesn't link to user side
code, and vice-versa.
Version 2.00.525
================
Made by Dusko, 18/05/2004
1) Dusko
1) Fix for DEF045146 EVALID does not correctly handle ARMV5 lib files or RVCT .MAP files.
Version 2.00.524
================
Made by JonC, 29/04/2004
1) Jon
Fixes for:
1) DEF044567 gendirective obtains ELF section header data incorrectly
2) DEF044048 RVCT version of DEF2DLL camplains about DLLs not having exports
Version 2.00.523
===========================
(Made by JonathanM, 19/03/2004)
1. JonathanM
1. Implemented the requirements:
REQ2632 - Configurability of the enforcement of capabilities
REQ2633 - Security violation diagnostic
REQ3142 - Associate Platform Security information with an executable.
See /cedar/generic/base/documentation/Base_How_To_Configure_Platform_Security_Settings.doc
Version 2.00.522
===========================
(Made by JonathanM, 26/02/2004)
1) JonathanM
1) Modifications made for implementation of
Change Request JDOD-5VUJ7F - Change in executable format of EKA2 binaries.
2) Tools now use the sytax "cap1+cap2+cap3" to specify a named set of capabilities
(Rather than specifying a single hexadecimal number.)
3) Added three new keywords to ROMBUILD:
PlatSecEnforcement
PlatSecDiagnostics
PlatSecDiasabledCaps cap1+cap2+cap3
these are used for specifying Platform Security settings which are then placed
in the ROM Header.
Version 1.00.521
================
Made by DuskoJ, 16/02/2004
1) Dusko
1) Fix for DEF042440 - elfdump creates a new file with zero length.
Version 2.01.520
================
Made by AndrewJ, 13/02/2004
1) StephanGu
Implemented CLCT-5VEK4P - "Binary search in ROFS
together with 'expanding ROFS entries with UIDs'".
Changed Rofsbuild to provide a sorted array of offsets
in order to allow the file system to perform binary search
through the image. Also expended the TRofsEntry structure
to include a copy of the file UID data.
Version 2.01.519
================
Made by DuskoJ, 30/01/2004
1) Jon
1) Fix for - DEF040324 PETRAN access violation whilst converting THUMB build EXEDLL
(Further amendment).
Version 2.01.518
================
Made by DuskoJ, 22/01/2004
1) Kuldip
1) Fix for DEF40965 Changes to stop overwriting readonly attribute for directories.
Version 2.01.517
================
Made by DuskoJ, 05/01/2004
1) Kuldip
Fix for DEF039055 "Change in behaviour for 0 length files"
Version 2.01.516
================
Made by DuskoJ, 19/12/2003
1) Dusko
1) fix for DEF039365 - Petran ignores -fixed keyword
Version 2.01.515
================
Made by Dusko, 17/12/2003
1. Kuldip
1) REQ1733, A3.2 Improved Command Line Build Tools
ROFSBUILD ROM flexing, Automatic sizing behaviour
Automatic XIP-extension OBEYFILE, header generation
Version 2.01.514
================
Made by Dusko, 24/11/2003
1. Dusko
1) DEF039411 pediff does not ignore the header CRC
File changed pediff.cpp
Version 2.01.513
================
Made by Dusko, 03/11/2003
1. Dusko
1. fix for DEF039536 Non existing files referenced in Tools_e32tools.mrp...
1) William
1) Added PE_DUMP to support the new EVALID.
Version 2.01.512
================
Made by Dusko, 10/10/2003
1. Dusko
1. Zephyr,PRO0085,REQ1663, Remove dependencies on MSDEV
Changes to BIN2COFF and WVECONV in order to build with CW
Version 2.01.511
================
Made by Dusko, 02/10/2003
1. Dusko
1. fix for DEF037065 Problem with error message from uidcrc
Version 2.01.510
================
Made by Dennis, 24/09/2003
1. Dennis
1. ROMBUILD adds sorted offsets to directory structures to enable binary
searching of the ROM file system.
2. Implemented CR ATHE-5PZEAU (Add Version Numbers to Symbian OS Executables).
Version 1.00.505
================
Made by DuskoJ, 22/08/2003
1) Morgan
Ported ROFSBUILD extension support from beech
1) Added ROFSBUILD extension support. Start a ROFS extension with obey file
commands
extensionrofs = <filename>
rofssize = <size>
Added support for ALIASing, HIDEing and RENAMEing. Semantics and syntax
for these commands are the same as ROMBUILD.
Core image and extension can be joined together with
tools\e32tools\rombuild\addextensions.pl
Added TRofsExtensionHeader to ROFS.H
Padding, Alignment and Repro assumptions:
The extension assumes it will be added TRofsHeader::iMaxSize bytes
after the start of the core image. It is assumed the max size of the core
image will be aligned appropriately for the underlying ROM device.
Core image has signature "ROFS" at offset 0, extension has signature
"ROFx" at offset 0 into extension (= iMaxSize after start of core image).
2) Morgan
1) Added rofsbuild\dumpdirs.pl - utility for dumping the ROFS directory
structure.
2) Ported ROFSBUILD executable compression from beech
3) Dusko Changes to a number of e32tools components in order to build cleanly with CodeWarrior
Version 1.00.504
================
Made by DuskoJ, 25/07/2003
1. Jon
1. Fixed DEF036679 by adding copyright statements where appropriate.
Version 2.00.503
================
1) Morgan
1) Removed ROMBUILD build warning
Version 2.00.503
================
1) Dennis
ROMBUILD changes:
1) 'kernelstackaddress' keyword removed. This is now always calculated by
ROMBUILD.
2) Address allocation strategy modified. The initial stack is now placed
immediately after the kernel .data/.bss area. The kernel heap follows
the initial stack (as before). In the moving model, fixed process data
chunks are placed after the kernel heap (on chunk boundaries).
3) TRomHeader::iKernStackAddress replaced with TRomHeader::iKernelLimit,
which gives the end of the kernel heap rounded up to a chunk boundary
except on the moving memory model where it is advanced past the space
reserved for fixed process data chunks.
Version 2.00.502
================
1) Dennis
1) Pulled out general E32Image file handling code into e32tools/e32image/...
directories. This includes compression/decompression and all stuff which
doesn't require the native PE or ELF file.
2) Merged the two versions of ROMBUILD. ROMBUILD.EXE now accepts E32Image
files derived from either PE or ELF. It no longer accepts the native
PE/ELF files directly. XIPRMBLD.EXE is no longer built.
3) Added a special instruction (TST PC, #0) to the beginning of all EKA2
entry points. This is detected by PETRAN/ELFTRAN and the file marked as
having an EKA2 style entry point. The ELF-derived and JFormat flags have
been generalised into header format, import format and ABI fields. An
entry point type field has been added to distinguish EKA1 and EKA2 entry
points.
4) Add 'nowrapper' keyword to ROMBUILD. If specified in OBY file it causes
the 256 byte wrapper to be omitted. This setting can still be overridden
on the command line.
======================
ELFDUMP version 1.0.0
1) Dusko
1) Adding elfdump.cpp. Elfdump is required to be a standalone program
which can present an ELF object file in a form suitable for use with
EVALID. It prints hex dumps of relevant sections, directive section as
text and relocation information showing the symbol the name and of the
section in which the relocation occurs.
Version 1.00.501
================
EKA2 Tools
1) RobertJ
1) Support for compressed executables introduced. Source code for the compression
& decompression is in petran\szip. Changed PEDUMP to dump compressed executables
added -compress & -nocompress options to PETRAN
2) Bumped version number of written executables to 1.10
3) Added a new format bit to iFlags JFormat (Jetstream format)
Version 1.00.500
================
EKA2 Tools
1) Dennis
1) Added support for the x86 development target to PETRAN
2) Added various values to the ROM header for EKA2 in ROMBUILD
2) William
1) Added -capability <mask> option to PETRAN. There isn't yet an iCapability field in the
E32ImageHeader, but everything else is ready to go.
================
ROMBUILD version 2.05
1) William
1) Fixed defect ROS-52XF6E "ROMBUILD produces incorrect S-Record checksums" by getting the length
right (actually by checksumming the bytes we write instead of calculating the values twice).
2) Disable the 3-byte address form of S-Record with a #define, since it upsets some external
tools and only benefitted serial download to M*Core.
3) Fixed defect ROS-52ZED7 "ROMBUILD crashes if section 1 overflows in 2 section ROMs" by
checking for overflows in the right place.
4) Made verification failure use Print(EError, ...) in all cases, so that it will cause a
ROMBUILD failure rather than just a small complaint at the end of the log file.
5) Extend checkstubs.pl to handle the R3UNUSED Thumb stubs, and update stubs.lst
Todo
handle section 1 DLLs linking to section 2 DLLs so that section 2 can be replaced
respect the E32Image flags for dll static data and called entrypoints
2) Chris
1) Updated romimage.rtf to remove screensize keyword
3) Nicolas (work done as part of CR JPAR-54XMZD)
1) Added new keyword: DEBUGPORT. It takes a numeric argument
which is a magic cookie as far as rombuild is concerned and
is stored in the ROM header for interpretation by the
kernel and bootstrap. The default value is -1.
2) Updated romimage.rtf to include DEBUGPORT.
================
ROMBUILD version 2.04
1) Nicolas
1) Fixed bug where EPOC crashes during boot if there is a non-empty
area after an empty one in the relocation table.
2) Modified the way the kernel extensions list is built to
ensure the extensions are always in the same order in the
list as in the obey file even when some extensions are in
areas and other aren't. This is necessary because the
kernel extension ordering in the obey file is important
(for example an extension registering a power handler
*must* be loaded after the extension that loads the power
model).
3) Fixed bug in AreaSet::AddArea() (overlap was not detected
when an existing area is embedded in the new one).
4) Overlap unit tests updated.
5) Fixed bug in TDllExportInfo ctor: The ptr to the export directory in
the ROM buffer was wrong when the file was relocated to a non-default
area (iRunAddress / iImageAddr mismatch).
================
ROMBUILD version 2.03
1) William
1) Set the default srecordbase to zero, and remove the srecordbase validation.
2) Added "data-align" attribute, and used it in the calculation of dataOffset for
things sharing the SvData. It's not a great name, but it will do for now...
3) Added "KeepIAT" attribute, which builds an old-style Import Address Table instead
of pointing the stubs directly at the export data. NB. this won't work for
section 1 DLLs, because I haven't reinstated the machinery for putting the IAT into
the second section.
4) Fix defect CLE-4ZEJBB "rom building: fatal error when file to hide isn't found" by
dealing with (aKeyword==EKeywordHide) before testing for !existingFile, and issuing
a warning if the existing file wasn't found.
5) Export checkstubs.pl to \epoc32\rom\tools
---------------------
ROMBUILD version 2.02
1) Nicolas
1) ROMBUILD: Introduced new area syntax (incompatible with the existing
scheme):
a) The "area <name> <start> <size>" statement declares an area
(there is no need to declare the default ROM area).
b) The "area=<name>" file attribute relocates individual files to
the designated area.
c) When invoking rombuild with -s, a summary of the free and used
space in each area is printed.
d) Areas can be used only in the first section of a sectioned ROM
and are forbidden in extension ROMs.
e) It is forbidden to patch a relocated file.
2) ROMBUILD: Introduced classes Area and AreaSet and associated
iterators to replace all the existing dynamic arrays and indexes
used to store the area-related state. Unit tests for these are
built using r_t_areaset.mmp. Refactored existing code (notably
E32Rom::LayoutRom()) to use those new classes.
3) ROMBUILD: Moved global variables from rombuild.cpp to r_global.cpp
to allow build of r_t_areaset.exe. Made static the globals which
were used only in rombuild.cpp.
4) ROMBUILD: Merged TAddressSet into TAddressRange. Renamed every
"i.*Set" variable to either "i.*Range" or "i.*Section" (previously
existing "i.*Section" variables have been suffixed with "Number").
5) ROMBUILD: Updated version number to 2.02.
6) HOST: Turned the various overloads of Val() into a template
function.
---------------------
ROMBUILD version 2.01
1) William
1) Fixed bug in ParseArea() which reused the area address as the area length
2) Allow for executables generated before GCC 530 by changing the assertion about
unexpected data. If it looks as though the rdata is after the IAT, then the whole
of the E32ImageFile text area is included in the ROM.
3) The rounding up for the ROM size to a multiple of a megabyte must not exceed the
originally specified size.
4) Increased the ROMBUILD version to 2.01
Version 1.00.174
================
Made by William, 23/03/2001
1) William
1) Removed the old .ipr files associated with the predecessor to DISTRIBUTION.TXT
2) Moved ROMBUILD.MMP into the ROMBUILD directory
3) Gave ROMBUILD it's own major and minor version numbers - now 2.0
4) Moved the collapsing routines into ROMBUILD\R_COLLAPSE.CPP
5) Substantial rework of the way that the E32Image files are put into the ROM: it's now
almost the case that the ROM layout is established before copying any data. The layout
is expressed by setting up TAddressRange and TImageSection values in the TRomBuilderEntry,
and the rest of the relocation and copying to the ROM image follows from those values.
6) Change of approach on relocation: instead of relocating the file contents after copying
into the ROM image, do the relocation beforehand. This allows the relocation to operate on
a simple fixed layout (the one which PETRAN set up), and frees the ROM layout to be
entirely different.
7) Unified all the various ROM flavours: in particular the "areas" support is part of the
normal layout process. The use of TAddressSets and their derived forms makes this
pretty painless.
8) Removed the Import Address Tables, saving ~240K in a Quartz 6.1 ROM. The import stubs
are fixed up to point directly into the export directory for the relevant DLL. In two
section ROMs the export directories are now placed at the start of the upper section
to support patching: this was previously done using the import address tables.
9) Various special case handling for the Primary has been reworked using generic support.
In particular the primary now gets a default code alignment of 4K, which allows the
gap to be occupied by other files if the obey file is suitably arranged.
10) Area relocation is more pervasive than before. The import stubs in relocated executable
no longer refer back to the unrelocated original contents of the area.
11) The sizes of the DLL reference tables are now reported in the log.
12) Fixed a bug which caused ROMBUILD to crash if a file was marked as "patched" in a
two section ROM.
13) Size information in the ROM is more consistent: the size in the ROM filesystem is always
the length of the contiguous section beginning at the given address, and the size summary
in the log file reports the SizeInRom() information for the file, which should always
reflect the real cost in ROM of the file regardless of layout.
Version 1.00.173
================
Made by Morgan, 08/03/2001
1) Morgan
1) Fixed ROMBUILD to accept DLLs with no imports and DLLs with no exports
Version 1.00.172
================
Made by William, 07/12/2000
1) William
1) Introduced ROMBUILD support for extension ROMs, the deliverable from project PR0027.
Lots of churn, but the key new data structure is the TRomNode which separates the
ROM directory structure information from the individual files (TRomBuilderEntry). The
TRomNodes handle the DLL name matching and are used to drive the multiple-variant clever
directory structure operations.
2) Reworked the ROMBUILD parsing strategy to remove the need for "files=", allowing the
header statements and file statements to be mixed freely in the OBY file.
3) Use the tables which now drive the ROMBUILD parsing to generate the help information.
4) Don't create ROMBUILD.LOG unless processing an OBY file, and put extra useful information
into the log. In particular, print a line include the ROM image name before processing
the files and after writing the ROM image, e.g.
Creating Rom image testrom.IMG
...
Writing Rom image with repro header to file testrom.IMG
Also report the "Writing" line to the screen, as a comfort to the user.
5) Fix ROS-4RJPTK "ROMBUILD checksums are incorrect" by computing the checksum at the
right stage, and cross check to make sure it's still right when displaying the ROM stats.
ROMs built with this version of ROMBUILD are likely to be different in up to 4 bytes
at offsets 0x1A8 to 0x1AB (0xA8 to 0xAB for images without a REPRO header).
6) Make "unicode" the default, and introduce sensible defaults for various other keywords.
7) Remove the ROMBUILD support for bigendian images (it's still present in the files
shared with PETRAN.
8) Added dumpdirs.pl which prints out the ROM root directory structures.
9) Added addextension.pl which concatenates a kernel ROM and an extension ROM, making a
combined image suitable for use with Brutus.
10) Try harder to continue reporting errors rather than stopping immediately. In particular,
report all of the unresolved DLL linkages rather than just the first one.
11) Introduce new keywords "hide", "alias" and "rename" to manipulate the directory structure.
12) Added romimage.rtf documentation (from the BPK, but somewhat edited) and export it to
\epoc32\engdoc\e32tools
Version 1.00.171
================
Made by Nicolas, 19/10/2000
1) William
1) Rework internals of ROMBUILD to remove arrays indexed by file number.
TRomBuilderEntry is now derived from E32ImageFile, and the various arrays
have become member data in the associated TRomBuilderEntry - OO, dontcha just love it!
2) Added -coff-header option, which could remove the need for bin2coff
3) Use the .idata information to get the DLL ordinals, not the IAT.
This is preparation for the IAT removal idea, which involves turning the IAT into
a table of pointers back to the associated stubs.
4) Added a range check to TRomBuilderEntry::AddressOfOrdinal
5) Added documentation about various forms of import stub, and checkstubs.pl which
scans all of the stubs in a ROM to check that they lead to a function of the
correct name.
6) Introduced TAddressSet for recording the various addresses associated with
code in a ROM (address of ROMBUILD.EXE working copy, address in ROM, execution address).
Currently used for handling ImportAddressTable and DllRefTable and seems to work in
a two-section Brutus ROM.
7) Partial fix for EDNRFID-4J6DV3 "Corrupt reloc table generated"
Allow for the possibility that there is only .bss with no .data when applying the
heuristic for relocs that don't point into any known section.
Fix printf format specifier typo by changing %0x8 -> %08x
8) Added a verbose option to W32REPRO
Version 1.00.170
================
Made by Dennis, 13/09/2000
1) William
1) Dust off the S-Record support in ROMBUILD
Use the full 78-bytes available per line, and add support for the
3-byte address form, since this is beneficial to M*Core Cogent.
2) Use "srecordfilename=*" to mean "append .srec to romname and use that"
Same approach for "romnameodd=*" and "romnameeven=*" filenames.
3) Set the RomHeader iSize to be iSizeUsed rounded up to a megabyte. This is
particularly beneficial on platforms which RAM-load a ROM image (Brutus, Cogent)
because it allows the bootstrap to use only the amount of RAM really needed
for the ROM image.
4) Add "hide" keyword to ROMBUILD, as requested by a licensee. This stops the
specified file from being included in the ROM directory, but doesn't stop other
ROM files from linking to the hidden file. A consequence of hiding a DLL is that
it can't be dynamically loaded, which means that you can't hide kernel extensions.
Version 1.00.156
================
Made by Morgan, 5/7/2000
1) Anon
1) Changes to ETOUCH
==== //EPOC/development/base/6.0/e32tools/ETOUCH/ETOUCH.CPP#1
@@ -3,6 +3,10 @@
// Copyright (c) 1996-1999 Symbian Ltd. All rights reserved.
//
+#if defined(__VC32__)
+#pragma warning(disable : 4710) // function '...' not expanded
+#endif
+
Version 1.00.155
================
Made by Dennis 22-06-2000.
1) Dennis
1) Modified W32REPRO so that the -HEX option only makes it receive in hex.
It always transmits in base 10. This is so it works with REPROC.
2) Fixed bug in ROMBUILD - it didn't like files with no imports.
Version 1.00.154
================
(Made by Alastair, 10.3.2000)
1) William
1) Added M*Core support
Basically just another PE magic number and another TCpu code.
Version 1.00.153
================
(Made by Pete, 24/02/2000)
1) William
1) Updated PETRAN to report exports with value 0 as
WARNING: No export specified for ordinal 62
and promoted the non-zero exports from an unknown section to be errors.
2) Added more information to the warning about failure to identify a section for relocation,
just in case it ever happens...
2) Simon
1) Added bin2coff, a utility to add a coff header to a binary
image. Mainly for use with the cogent smartfirmware
Version 1.00.152
================
(Made by Dennis, 19/01/2000)
1) William
1) Updated W32REPRO usage statement to remove misleading limit on the baud rate
The baud rate is actually passed directly to the Win32 comms device, so it should
be possible to specify any baud rate supported by the device.
2) Updated W32REPRO to add a -RAW option for use with Brutus REPROB (and others).
This tells W32REPRO not to expect a 256-byte header on the image, but it will
still pretend that there is one, as expected by the existing REPRO code.
3) Updated W32REPRO to a -BOOT <boostrap_image> and -HEX options, to support
the Cirrus Logic board. The bootstrap is sent at 9600 baud before starting the
normal REPRO protocol, and -HEX changes the protocol to use base 16 rather than
base 10 for numbers transmitted between W32REPRO and the other end.
4) Added W32REPRO protocol support for a new command 'D' which tells W32REPRO to
disconnect after a successful transfer: REPROB could usefully be extended to
send this command...
2) Morgan
1) Fixed ROMBUILD so it gives appropriate errors if passed an empty file
2) ROMBUILD.LOG reports inclusion of 256 ROM repro header (Defect EDN147097)
3) Fixed EDN580686 Rombuild is not very tolerant
4) Fixed EDN210727 PEDIFF returns stupid result codes
PEDIFF now returns 0 for identical files, and 2 for different files
5) Improved PETRAN dump output (Fixed EDNGLAY-463LNN)
Version 1.00.151
================
(Made by Morgan, 3/12/99)
1) Alastair
1) Created a new utility, ERUNTEST.EXE, which will take a batch file
listing tests as generated by ABLD and run each test in turn, checking
whether each test has succeeded or not by checking the return value from
the process and also checking output to the EPOCWIND.OUT file in the
temporary directory. ERUNTEST.EXE logs output to standard output.
Obviously this utility will only run WINS/WINC tests. It must be invoked
from the directory in which the test executables reside.
2) Morgan
1) Fixed some warnings
Version 1.00.150
================
(Made by Morgan, 27/9/99)
1) Alastair
1) Created new directory COLTAB and added COLTAB.CPP, BASEKEYS.TXT,
COMPKEYS.TXT and README.TXT. COLTAB comes from Graham Asher, and is a
tool for writing the collation tables in COLLATE.CPP. README.TXT
contains details of the URL from which data files BASEKEYS.TXT and
COMPKEYS.TXT were sourced. Type COLTAB without any parameters for help,
and/or read the header in COLTAB.CPP. Console APP COLTAB.EXE will be
built into \EPOC32\Tools\.
2) Malcolm
1) Added code to allow the kernel debug mask to be set via the ROM.OBY
file via the new KERNELTRACE keyword.
3) Morgan
1) ROMBUILD internal directory structure is now sorted wrt a unique
identifier for each Dir. This (hopefully) fixes the reproducability
problems ("drifting-directories") experienced when building identical
Roms in different NT environments.
Version 1.00.125
================
(Made by Morgan, 26/8/99)
1) Dennis
1) Added "defaultstackreserve" keyword. The argument to this keyword is
added to the combined size of .data and .bss to determine the address
space to reserve for the $DAT chunk of a 'fixed' process. The value
defaults to zero for compatibility with previous versions.
Added "stackreserve" keyword to override the default setting on a
per-file basis.
Version 1.00.124
================
(Made by Alastair, 2nd August 1999)
1) Jonathan
1) Removed MAKSYM - moved to e32toolp.
Version 1.00.123
================
(Made by Kal Patel, 22 July 1999)
1) Morgan
1) New ROMMASK. Added a -verbose flag for logging, and added a -no-header
for Roms with no Epoc header.
2) Malcolm
1) Added Area support to ROMBUILD for Roxette. This allows the
code to be fixed up to execute outside the rom where it's stored.
Relocation info is written into the rom and the bootstrap uses
this to copy the info out to its final location. Any file can
be in any arbitrary area. This is only enabled in
singleprocess mode, since the same effect can be achieved with
an MMU on a real system.
This is enabled by placing a "areas=<num>" line in the first
section of the .oby file. Then, in the files= section, the
next tranche of files can be sent to another area with a
directive like "area 0x81000000 0x100000" where the first value
is the address and the next the length. Up to <num> area lines
can be in the file section.
A relocation table is placed in ROM for the bootstrap. Its
address is stored in the romheader info that rombuild uses.
The table is a list of <length> <src> <dest> triples, ending
with a <0,0,0> tuple.
Note that any bootstrap that uses this should not process a
relocation table address of 0, as this maintains backwards
compatability with old rombuilds which will put zero in the
address location.
3) Alastair
1) Removed all .DSP and .MAK files, now that makefiles are generated.
2) Fixed minor typo in W32Repro.
Version 1.00.122
================
(Made by Alastair, 12.7.99)
1) Alastair
1) Added fetcher definition file, E32TOOLS.FTC, to the group directory.
2) Added William's new version of E32UID.CPP which no longer requires
WINDOWS.H.
3) Added William's new UIDCRC.EXE, which provides a simple way to calculate
the checksum:
uidcrc <uid1> <uid2> <uid3> [<outputfile>]
This reads the three uids (using strtoul, so decimal and 0x9999 hex are
found), computes the checksum, and either prints the 4 hex values to standard
output or creates <outputfile> as the 32 byte sequence which is the specified
UIDs and checksum in little-endian byte order.
Version 1.00.121
================
(Made by Alastair, 16.6.99)
1) Alastair
1) Fixed EDN459831 "Wveconv help is out of date" .
2) Removed MAKTRAN, DEFMAKE and DEFTOOL.
3) Converted all projects to MAKMAKE building for the new TOOLS platform.
4) Changed zip of releasables onto the network - this is now called
TOOLS.<ver> rather than E32TOOLS.<ver>. It also contains full paths to
the releasables so make sure you're in the root of your EPOC drive
before calling, say, "getrel e32tools tools 121".
5) Updated MNT.CMD in various ways, including adding an MNT CHECKREL.
6) Added dopcvs.pl and lock.pl to GROUP directory for use with MNT.BAT.
Version 1.00.120
================
(Made by Morgan, 30th March 1999)
1) Morgan
1) Fixed EDNGBON-46BQK4, "ROMBUILD "patched" keyword is broken".
(merged in from ER5 release E32TOOLS 110)
2) Left a gap in the build numbers for ER5 maintenance releases
3) Introduced a new version of ROMMASK.EXE. The syntax has changed
from previous versions. Type "ROMMASK" to see the new syntax.
For example, to produce a 10Meg image split into 8 and 2,
type the following:
rommask -rom p2rom.img -output rom.img -log rom.log -size 10 -section 8 -section 2
(You can leave off the final -section 2, and ROMMASK will do the
calculations for you.)
The output of Rommask will be "rom.log", and the 2 mask files
"rom.img" and "rom.im2"
ROMMASK still expects the image to contain a Psion 256byte header.
Version 1.00.100
================
(Made by Morgan, 16th February 1999
1) Morgan
1) Added the keyword 'srecordbase' to change the base address of
the motorola srecord output file. (Defaults to address 0x0000)
2) Fixed srecord output for big and little endians.
3) Removed unused dependencies from MNT GETCOMPS
Version 1.00.099
================
(Made by Jonathan, 8th February 1999)
1) Alastair
1) Edited PETRAN.MAK so that sources depend upon
\Epoc32\Include\E32uid.h rather than ..\E32uid\E32uid.h. This
change should complete the fixing of bug EDN057832 "E32Tools won't
rebuild on my PC".
2) Jonathan
1) Fixed ROMBUILD defect EDN853437 "Dual Boot ROM does not function on
Series 5" by applying Dennis' fix to fix up data as well as
executables in dual-boot images.
Version 1.00.098
================
(Made by Jonathan, 1st February 1999)
1) Petteri
1) Applied boilerplate copyright to sources.
2) Jonathan
1) Fixed copyright message in executables.
2) Removed odbc32.lib and odbccp32.lib from all .DSP and .MAK files
since these libraries are neither required nor always installed.
Version 1.00.97
===============
(Made by Alastair, 28th January 1999)
1) Alastair
GENERAL
1) Created and added VC5 .DSP files for all projects for debugging.
2) Removed hard-coded drive letters from .DSP files.
3) Re-generated makefiles from .DSP files.
4) Reinstated E32UID directory containing files E32UID.CPP and STDAFX.H
required for building ROMBUILD, PEDIFF and PETRAN.
5) Replaced hard-coded instances of 'R:' in MNT.CMD with '%s%'.
MAKSYM
1) Added proper handling of two functions appearing at the same address in
a ROM.
2) Removed an unnecessary destructor to prevent allocated memory being
deleted twice.
TMAKTRAN
1) Removed MAKTRAN tests.
PEIGER, PREPRO
1) Removed these executables. Previously MNT.CMD attempted to unzip these
from S:\ptool\ and then zip them up again in the e32tools release zip
file. Plans are afoot to provide these tools elsewhere, since we no
longer have access to S:.
Version 1.00.096
================
(Made by Morgan, 21st January 1999)
1) Morgan
GENERAL
1) Removed E32UID
2) Converted all makefiles to VC5
3) Built with VC5
ROMBUILD
4) Rectified the drifting directory problem. ROM images can now
be reproduced and validated reliably.
READTYPE
5) Removed definitions for "true" and "false" so readtype will
compile with VC5.
Version 0.01.095
================
(Made by Alastair, 18th August 1998)
Morgan
ROMBUILD
1) Big-endian bug fix
Alastair
DEFMAKE
1) Fixed Epoc S/W Problem SW1-141 - 'DEFMAKE adds an "E" to the end of
the generated DEF file'
ROMBUILD
1) Fixed Bluebell defect SW1-734 - "What do the tools have against August?".
A rom time of 08/08/2008 08:08:08 is now acceptable.
Version 0.01.094
================
(Made by Jonathan, 10th June 1998)
1) Morgan
ROMBUILD
1) Added extra info to log output.
2) Graham Asher
READTYPE
1) New uniflds.txt and unidata2.txt from release 2.1 of the charater
database from Unicode Inc. Many additions and corrections have been
made. One of them fixes defect SW1-42 (User::UpperCase is wrong for
Greek final sigma (03C2) in the Unicode build) in the EPOC32
Software Problems database.
2) Changes to readtype.cpp to accommodate the new character categories
in unidata2.txt.
Version 0.01.093
================
(Made by Morgan, 15th May 1998)
1) Dennis
ROMBUILD
1) Added support to ROMBUILD for multiple-boot ROMs:
a) Added keywords 'singlekernel' and 'multikernel' to declare whether a
single kernel ROM or multiple-kernel ROM is required (defaults to single).
b) Added keyword 'variant' to declare which files define hardware variants;
this keyword should be applied to the variant DLL (ECUST.DLL) of each
hardware variant to be supported.
c) Added keywords 'extension' and 'device'. These define kernel-mode DLLs
which may have global data, the address of which is generated by ROMBUILD.
'device' DLLs are simply LDDs or PDDs with global data.
'extension' DLLs are not yet supported by E32.
d) Files declared with one of the keywords
{primary, file, data, dll, variant, extension, device}
may have an additional hardware variant discriminator specified by means
of the syntax
file[0x05040001]=filename
The hardware variant discriminator (HWVD) is an 8-digit hex number whose
purpose is to specify which hardware variants the file is relevant to.
The top 16 bits indicate which conceptual layer the file belongs to:
0100=independent - file is required by all hardware variants
xx03=CPU-specific - file is required by all variants with same CPU
yyxx=ASIC/variant specific - file is required by all variants with
CPU xx and ASIC yy.
The bottom 16 bits are only relevant in the last of these three cases.
They form a bit mask indicating which specific variants the file is
required for. A file declared with the variant keyword must be totally
variant-specific, i.e. must have only one bit set in the bit mask.
If the HWVD is not specified, a value of 01000000 is assumed, which means
that the file appears in all hardware variants.
Examples (from forthcoming Bluebell/Protea upgrade ROM):
primary[0504ffff] - kernel for EIGER
primary[0706ffff] - kernel for WINDERMERE (different CPU core and ASIC)
variant[05040001] - variant DLL for PROTEA
variant[07060001] - variant DLL for BLUEBELL v.1
variant[07060002] - variant DLL for BLUEBELL v.2 (for illustration)
Static linkage between files is now restricted by the HWVDs of those
files. It is possible for file A to link statically to file B iff
{variants V | V requires A} is a subset of {variants V | V requires B}.
For the example above, variant[0x05040001] can link to primary[0x0504ffff]
but not the other way round.
It is possible to have two or more files of the same name in the same
directory provided that they have HWVDs which are mutually exclusive, so
that the two files can never appear on the same machine. The HWVD is used
to determine which of the files to use to resolve any static linkage.
e) The ROM file system now has multiple root directories and directory trees,
one for each hardware variant supported by the ROM. This automatically
ensures that F32 only sees the files which are relevant to the hardware
on which it is running.
f) DLLs declared with one of the keywords {variant, device, extension} can
have global data (.data and .bss) which will be allocated in the kernel
static data chunk after the kernel data itself.
2) The 'fixed' flag is now propagated through from PETRAN.
3) The 'kernstackaddress' keyword is now optional - if it is not present in
the obey file, ROMBUILD uses a default value of
kerneldataaddress + Round(kernel-mode dataBss size) +
Sum over all fixed .EXEs(Round(DataBss size of .EXE file))
where Round(x) rounds up to the PDE size (1Mb on ARM).
Version 0.01.092
================
(Made by Morgan, 25th February 1998)
ROMBUILD
1) Fixed the 'code-align' file attribute
2) Forced the image file size to a multiple of 4k for the good of Rome.
Version 0.01.091
================
(Made by Alastair, 18th February 1998)
Removed MAKMAKE and BLDMAKE - these tools are now part of
new project E32TOOLP.
Version 0.01.090
================
(Made by Morgan, 13th February 1998)
ROMBUILD
1) Added support for 'fix'ing LDDs with global static data in Rom.
2) The 'file=' specifier now honours the KNoCallEntryPoints flag in
the image header (as set by PETRAN). This means all 'dll='
specifiers should be changed to 'file=' and MAKMAKE used to
control the entrypoint behaviour with the CALLDLLENTRYPOINTS
keyword.
3) Added a '-no-header' switch to suppress the Rom loader header.
Version 0.01.089
================
(Made by Alastair, 9th February 1998)
DEFMAKE
1) Changed defmake.exe so that it processes freeze files without
carraige returns at the end of the last line correctly.
Fixes SW1-803.
2) Put in warning for unfrozen exports.
MAKMAKE
1) Changed the warning generated if parameters appear with the
NOSTRICTDEF keyword so that it doesn't just appear when MAKMAKE
is invoked with the -V flag. The NOSTRICTDEF keyword,
if required, should be used in addition to the DEFFILE keyword,
not instead of it.
2) Intermediate deffiles created by command-line makefiles no
longer have the basename extensions, eg D for narrow debug,
if the NOSTRICTDEF keyword is specified.
2) Added warning for any SUBPROJECT keyword appearing before a
project has been specified with the PROJECT keyword. This
is now necessary because MAKMAKE now stores SUBPROJECT directories
as absolute paths rather than paths relative to the PROJECT directory.
If a SUBPROJECT statement specifies a directory beginning with a
backslash, it will be treated as an absolute directory; otherwise
it will be treated as a directory relative to the PROJECT directory,
as before.
3) Added warnings for the non-existence of SYSTEMINCLUDE, USERINCLUDE,
\PROJECT, SUBPROJECT and \PROJECT\SUBPROJECT directories.
4) Put in START WINS .. END block option, NOBROWSEINFO, which can
be used to stop generation of .SBR and .BSC files for command-line
WINS and WINC builds.
5) Changed MAKMAKE.BAT so that the help for the batch command "CALL"
is no longer produced if MAKMAKE /? is typed.
6) Moved all makmake releasables out of \epoc32\tools\makmake into
\epoc32\tools.
7) Changed MAKMAKE.BAT over to using the -S PERL switch so that the
system path is searched for MAKMAKE.PL, then MAKMAKE.PL searches
for the modules it depends upon in whichever \epoc32\tools is
specified in the system path. This means that makmake can be
installed on one drive and called to operate on .MMP files from
another.
8) The second UID for targettypes APP, LDD and PDD will now be added
if not present.
9) Restructured MAKMAKE and moved some functionality into new modules
to facilitate code reuse. MAKMAKE and BLDMAKE now depend upon the
following shared modules
PARSECOM.PM, E32ENV.PM, E32TVER.PM, MODLOAD.PM, PATHUTL.PM, PREPFILE.PM.
MMP.PM and GENUTL.PM are currently only used by MAKMAKE but may be
useful for other purposes in the future.
10) Renamed MAKPREP.PM MAKDEPS.PM.
BLDMAKE
1) Added warning that BLDMAKE ALL won't create batchfiles for preparing
IDE makefiles.
Version 0.01.088
================
(Made by Morgan, 29th January 1998)
MAKMAKE
1) Inserted '-bigendian' on the PETRAN command line for BE builds
PETRAN and ROMBUILD
1) Added -bigendian switches to both tools
From Simon Lewis
1) Added a new file attribute 'code-align' to ROMBUILD
2) Added the switches '-align-const-section' and
'const-section-address-mask' to PETRAN
Version 0.01.087
================
(Made by Alastair, 23th January 1998)
MAKMAKE
1) Changed paths within created makefiles so that they are relative
to the directory where MAKMAKE was invoked rather than relative
to the makefile. If you are using the /D makmake command-line
flag and invoking makmake from directory \[project]\group there
is therefore no longer a need to change directory to
\Epoc32\Make\[platform] before calling NMAKE.
2) Deffiles created by the build process in the build directories
now have the build-variant dependent U, D, and UD suffixes, and
are removed by a makmake -clean.
3) Changed handling of EXEDLL targettypes so that they can export
functions under MARM. MAKMAKE will expect EXEDLL targettypes to
be function exporters for MARM if a deffile is specified in the
MMP file, otherwise it will make no use of the intermediate deffile
created during the build process. This means that, until a fix for
dlltool becomes available from Cygnus, the first time functions are
frozen for EXEDLL targettypes for MARM it is necessary to build once,
put a deffile statement for MARM in the MMP file, put the intermediate
deffile where the MMP deffile statement expects the freeze file to be,
and build once again so that the target is frozen by ordinal.
4) Changed MAKMAKE warnings so they go to STDERR rather than STDOUT.
5) Added LONGBLDPATH keyword to MAKMAKE which inserts an extra directory
into the build path for a project. The extra directory may be
specified as a parameter to the new keyword but will default
to the basename of the MMP file if the keyword is specified
without a parameter.
6) Added new TARGETTYPE, LIB, for creating static libraries. This
is not yet implemented for MSVC5.0. The object file compiled
from the first source file specified in the mmpfile is copied
into the target directory and given the same basename as the
target. The behaviour for this keyword is not yet finalised.
7) Added new TARGETTYPE, IMPLIB, for creating import libraries
for DLLs with mutual imports. Specify a new MMP file for
one of the DLLs, give the name of the DLL as the argument
for the TARGET keyword (so that the .LIB produced contains
the right DLL name) and set the TARGETTYPE as IMPLIB.
This is not yet implemented for IDE makefiles and the behaviour
for this keyword is not yet finalised.
8) Added handling of Win32 Resource files to command-line WINS
and VC4 and VC5 makefiles because the kernel uses one.
9) Added new MARM MMP file keywords to cater for unusual scenarios
START MARM
ALLOWDLLDATA // for dlls requiring static data
DATALINKADDRESS [address] // for relocation address for dll data
DLLNAME [dll basename for linking] // for dlls which are built
// as one thing but linked in the ROM as another
STACKSIZE // for stack size other than the default
END
10) Added new module SARMBE.PM for creating big-endian single-process
arm makefiles
11) Implemented more stringent checking of the format of UIDs in mmp files
and made sure dlls with null uids link as mydll.dll rather than
mydll[00000000].dll for consistency with rombuild.
12) Made all relative paths in VC4 and VC5 makefiles absolute.
BLDMAKE
1) Added new perl tool, bldmake, which creates batch files to
control the building of E32 and F32. Type bldmake without
any parameters for options.
Version 0.01.086
================
(Made by Alastair, 5th January 1998)
DEFMAKE
1) Added .E32_UID and .rsrc to the list of recognised sections so that,
eg, "WARNING: Section '.E32_UID' removed" no longer appears during
WINS builds.
MAKMAKE
1) Changed cl_arm.pm and cl_win.pm so that makmake -clean will remove
resource headers from \Epoc32\Include if a resource file is specified.
Version 0.01.085
================
(Made by Alastair, 9th December 1997)
MAKMAKE
1) Removed automatic addition of kernel32.lib and libc.lib to list
of Win32 libraries for WINC EXE targettypes as this addition is
apparently unnecessary.
Version 0.01.084
================
(Made by Alastair, 9th December 1997)
MAKMAKE
1) Changed handling of targettype EXE for WINC, VC4WINC and VC5WINC
platforms so that the LINK.EXE flag /subsystem:console is used
rather that /subsystem:windows, and kernel32.lib and libc.lib
are automatically added to the list of Win32 libraries to be linked
to.
2) Targettypes LDD and PDD makefiles for MSVC IDEs now require the
presence of \epoc32\include\lddwins.def and \epoc32\include\pddwins.def
respectively.
Version 0.01.083
================
(Made by Alastair, 20th November 1997)
Some Makmake Bug Fixes
1) Makmake invoked with the /CLEAN flag will now erase the autouid
object file if the Win32 autouid keyword is used.
2) Makmake now uses the environmental variable "INCLUDE" rather
than "MsDevDir" to decide which standard include directories
should be searched for Win32 header files if a project is
linking to Win32 libraries, so that the wrong standard
include directories aren't searched when creating MSVC5
project files.
Fixes SW1-698.
3) Fixed bug caused by CPP inserting a space after expanding
macros in .mmp files by taking the space out again. This was
causing problems where, for example, a path specified as
"\EPOC32\RELEASE\WINS\APP.DEF" in the .mmp file would become
"\EPOC32\RELEASE\WINS \APP.DEF" after preprocessing prior
to creating a WINS makefile. Lower case paths were not
affected.
4) Replaced link.exe flag
/EXPORT:?NewApplication@@YAPAVCApaApplication@@XZ,@1,NONAME
in VC4 and VC5 makefiles where the targettype is APP with the
flag /def:\EPOC32\RELEASE\WINS\APP.DEF, because the former flag
failed to ensure that the function in question was exported
at ordinal one. This solution means that if no deffile is
specified in the .mmp file for an APP, \EPOC32\RELEASE\WINS\APP.DEF
must be present for the project to link. Command-line Win32
makefiles will link properly without the presence of APP.DEF
because they use a defmake flag to ensure the function is
exported at the right ordinal.
Targettypes LDD and PDD will link by name in MSVC until
their deffiles are released to
\epoc32\release\wins or somewhere else suitable.
Version 0.01.082
================
(Made by Alastair, 12th November 1997)
MAKMAKE
1) Added link-libraries and e(dll|exe) object as dependencies of
main target. This cannot be done for MSVC IDE makefiles.
Fixes SW1-565.
2) Added new targettypes LDD and PDD. A frozen first ordinal export,
the respective gate funtion for the targettype, is specified for
these targettypes and for targettype APP if no deffile is specified
for the project, otherwise the deffile controls the order of
exported functions. This applies for all supported platforms. Apart
from this feature, projects specifying one of these targettypes build
in the same way as projects with targettype DLL.
Fixes SW1-666.
3) Changed MAKMAKE help information so that the build version appears and
a list of platform choices appears. This list of platforms is produced
by a search of .PM modules in \EPOC32\TOOLS\MAKMAKE for the comment line
"# Can call in makmake command line". If the line is present in the module
then the basename of the module is added to the list. This is a cheap way
of producing a list of available platforms while preserving MAKMAKE's
extensibility, and doesn't involve the loading of every .PM module and all
the modules that each one of those depends on.
The module controlling MAKMAKE help is loaded only when required and
provides a brief guide to MMP file syntax if makmake is invoked
MAKMAKE /MMP {PLATFORM}
If PLATFORM is specified, syntax for the START .. END block relating to
the platform is displayed as well as platform-independent MMP syntax.
Fixes SW1-653.
4) The macros "WIN32" and "_WINDOWS" are now only used in compilation by MAKMAKE-
generated Win32 makefiles if the project's MMP file states that the project
needs to link to Win32 libraries by listing the libraries it needs with the
WIN32_LIBRARY keyword in a Win32 START .. END block.
Fixes SW1-652.
5) New MMP file keyword - OBJECT - is available. This keyword is intended to
be used by projects having access not to the source files but only the compiled
code for certain objects. Specify the basename of the object only. Created Win32
makefiles will expect object <basename>.OBJ to exist in the build directories
for a project, while MARM makefiles will look for <basename>.o. These object
files will appear in the dependency list for the main target in command-line
makefiles - this is not possible in MSVC IDE makefiles.
6) Command-line makefiles now contain extra targets MAKEWORK, MAKEWORKDEB,
MAKEWORKREL, etc. The build-specific targets are included in the list of
dependencies for the main makefile build-specific target, so that work
directories will be automatically created when building with command-line
makefiles if these directories do not already exist. The new targets could
also be used to make the work directories for a project with NMAKE
e.g. NMAKE /f <command line makefile> MAKEWORK
would create all the makefiles for a project for all builds.
7) Win32 command line makefiles now generate SBR and BSC browse files for DEBUG
builds so that if a DEBUG build of a project has already been done with a Win32
command line makefile, subsequent building of the DEBUG build of the project
within the MSVC IDE will not recompile everything to generate the browse files.
8) Added new module MAKPREP.PM to handle everything relating to MAKMAKE's use of
\EPOC32\GCC\BIN\CPP.EXE to generate lists of dependencies for source files.
This module now identifies missing system and user headers -
- if missing system headers have the extension .RSG or .MBG, the header is
listed as existing in \EPOC32\INCLUDE, so there is no longer a need for
MAKMAKE to generate a dummy resource header in \EPOC32\INCLUDE to fool CPP.
- platform modules can specify standard directories to search for missing
system headers. This means, e.g., Win32 makefiles can specify the MSDEV include
directory for those projects linking to Win32 libraries. If the missing system
header is found by the module in the standard directory, it will be left out
of the dependency list since the MSVC tools will know where to find it and it
can be trusted to be there and unchanged.
- if a missing system header fails to satisfy both the above tests then
makmake will issue a warning since the generated makefile will probably fail to
build.
- a warning is issued for any user headers not found in the user include or
system include paths, where the user include path is the source directory if no
user include paths are specified explicitly.
9) Processing of MMP files now involves a lot more syntax checking and produces
corresponding warnings, especially if MAKMAKE is invoked with the -V switch.
10) MAKMAKE will now automatically generate WINS uid source files when creating Win32
makefiles, but only if the new keyword - AUTOUID - is specified in a Win32 START ..
END MMP file block. The keyword is necessary since LINK.EXE would fail for projects
which already specified UIDS in the source code, so remove WINS UID specification in
the project's source code before using AUTOUID. MAKMAKE works out UID 1 from a
project's targettype and takes UIDs 2 and 3, if specified, from the MMP file. It
then creates the UID source file in the same directory as the MAKEFILE it is to create
with the name "<target basename>.UID.cpp". The source file will look something like this
// Makmake-generated uid source file
#include <E32STD.H>
#pragma data_seg("E32_UID")
__WINS_UID(0x10000079,0x1000008D,0x100002C3)
#pragma data_seg()
The file will be created only if it doesn't already exist or if it is older than the
project's MMP file.
11) In MARM makefiles, multiple calls to GNU tool "ar" to archive the object files for
a project prior to linking have been replaced by a single call to ar. The single
call passes a script listing the object files to ar. This changes speeds up the
archiving stage of MARM building considerably.
12) Renamed MAKMAKE.CMD MAKMAKE.BAT for Windows 95 compatibility.
13) Changed MSVC5 dependency generation to be the same as for other platforms,
but with system headers stripped out of the list later. Before, vc5 dependencies
called CPP such that only user headers were generated. This change means that
CPP will no longer fail if one of the user headers is expecting a macro definition
from a system header and forcing CPP to fail if it doesn't get it.
14) Replaced relative with absolute filepaths where possible in CL_WIN.PM.
15) Changed \e32tools\makmake\makmake.mak so that debug utilities like
the perl -w switch and use of module strict.pm apply for "DEB" builds.
of MAKMAKE only.
16) Added SARM.PM module to be used by the base for building SARM makefiles.
17) Improved path utilities module MAKPATH.PM to do more error checking
and handle extra functions.
GROUP
1) Changed e32tools\group\mnt.cmd so that makmake is released in a way more similar
to other e32tools project - from \epoc32\build\e32tools\makmake\rel.
Version 0.01.081
================
(Made by Morgan, 4th November 1997)
ROMBUILD
1) Added fixed keyword for use with EXE files. This keyword results in the
file being loaded as a fixed address process. The data section base address
is allocated in the region between the kernel data address and the kernel
stack address. The multiprocess keyword can be used to specify the chunk
size; it defaults to 1Mb.
PETRAN
1) Added -fixed and -moving options which set and clear KImageFixedAddressExe
flag respectively.
2) Added the following switches
-heap <min> <max>
-allowdlldata
-datalinkaddress <base>
MAKSYM
1) Removed duplicate function address error message.
Version 0.01.080
================
(Made by Alastair, 30th September 1997)
MAKMAKE
1) Changed Makmake.pl so that if a project uses a resource file
and the resource header file is not yet present in \epoc32\include
a dummy header file will be created there so that MAKMAKE's generation
of dependencies does not assume that the missing header file is
in some other location.
2) Changed /Fd compiler flag in Ide_vc4.pm so that pdb files have the right
name rather than vc40.pdb.
Version 0.01.079
================
(Made by Morgan, 22nd September 1997)
ROMBUILD
1) Integrated the code for building ROMs for the single process
version of E32. Currently this code is protected with a
__SINGLE__ macro.
Use the keyword 'singleprocess <ChunkSize>' to generate a
single process ROM. Default is 'multiprocess'.
Version 0.01.078
================
(Made by Alastair, 15th September 1997)
MAKMAKE
0) Forget to say about release 077 that \[project]\bwinc is the default
directory for which WINC def files are searched if the file specified
with the DEFFILE keyword has no path.
1) Improved MMP file reading so that a warning is generated if MAKMAKE
ignores a line because it doesn't recognise the syntax.
2) Makmake.pl - added new code to trap dependency generation errors.
3) Makmake.pl - minor changes required to support creation of MSVC5 project
files.
4) Added new modules VC5.PM and VC5WINC.PM to support MSVC5. These modules
will create .DSP MSVC5 project control files. When an MSVC5 .DSP file is
created with makmake project files with the following extensions will be
deleted - .dsw,.mak,.mdb,.ncb,.opt,.plg. The new features of MSVC5 which
distinguish between header files belonging to the project and system header
files are supported.
5) Added new module MISA.PM to support MISA command-line makefiles.
6) Tidied up VC4.PM.
7) Changed MAKMAKE internal structure so that implementaion modules can
share modules controlling the layout of the makefile and other common
features. This change does not affect the way that MAKMAKE is invoked.
VC5.PM and VC5WINC.PM share IDE_VC5.PM
VC4.PM and VC4WINC.PM share IDE_VC4.PM
WINS.PM and WINC.PM share CL_WIN.PM
MARM.PM and MISA.PM share CL_ARM.PM
8) Changed CL_WIN.PM and CL_MARM.PM to use an inline batch file in the
makefile for calling fc4bat to decide whether a resource header file
needs rewriting or not. Previously, if fc4bat returned an error to
indicate that the header file should be rewritten, nmake would die.
9) Added Makmake.mak to \e32tools\makmake\ for building makmake source to
\epoc32\tools and \epoc32\tools\makmake in a way similar to C++ projects.
10) Changed all .PM modules to ensure that they return a true value
when loaded successfully.
E32TOOLS MNT
1) Changed e32tools.rel file so that readtype.exe is released.
2) Updated MNT MAKEWORK and MNT GETBLD so that PGETBLD and MNT BLDALL will
now work on a clean drive. Changed readtype.mak so that it searches
\epoc32\include rather than \e32\inc for system header files.
File \e32\inc\unicode.h needs to be listed in e32\inc\incc.prj
at some point.
3) Modernised MNT BLDALL so that NMAKE is invoked with the /nologo flag.
4) Modernised MNT VALID so that pediff is used instead of fc /b for binary
file comparison. Makmake is now included and e32uid.exe removed since it's
not used or released.
Version 0.01.077
================
(Made by Alastair, 8th September 1997)
MAKMAKE
1) Changed 1st stage of linking (by name) for WINS command-line builds so that
linking is not attemped incrementally to stop unnecessary warning appearing.
2) Added two new modules, WINC.PM and VC4WINC.PM, for use in creating WINC
command-line and IDE makefiles respectively. For command-line makefiles,
type "makmake {options} [project] WINC; for IDE makefiles, type
"makmake {options} [project] VC4WINC. DIfferences between WINC and WINS
makefiles are slight - WINC appears where WINS would otherwise appear, and
WINC source files are preprocessed with the macros "__WINC__" and "__XCON__"
defined as well as all the usual WINS macros including "__WINS__". Note that,
in line with the macro scheme applied to source files, MAKMAKE will preprocess
XXX.MMP files with macros "WINS" AND "WINC" defined when creating WINC makefiles,
so keywords within "#if defined(WINS) ... #endif" and "START WINS ... END" blocks
will apply for WINC builds too. This scheme required changes to the way
MAKMAKE.PL processes START ... END blocks.
3) Removed possibility of passing extra macros to makmake for preprocessing XXX.MMP
files - this possibility was never documented and has never been requested so
is now presumed unnecessary.
4) Introduced keyword option which, if specified in XXX.MMP files, will cause
MAKMAKE to search for the same deffile for all build variants rather than
several files differentiated by suffixes "U","D" and "UD". The new keyword
is "NOSTRICTDEF", originally enough. Hopefully deffiles for LDDs and PDDs
can soon be done away with by having targettypes for LDDs and PDDs and having
MAKMAKE implementation modules pass the correct mangled names as 1st ordinal
command-line option arguments to DEFTOOL and DEFMAKE instead.
5) Changed resource handling to be entirely compatible with eikrs.bat - the basename
of XXX.RSS is used for XXX.R$(EPOCLANG) and all intermediate resource files. This
change still does not fix SW1-204, for which a spec decision regarding the handling
of differing licensee resource file requirements is required.
Version 0.01.076
================
(Made by Alastair, 15th August 1997)
MAKMAKE
1) Changed MARM and WINS modules so that rcomp is called to compile resources
directly rather than via eikrs.bat. This change will mean that resources will
be compiled into the correct directory for MARM builds, and that the *.rss file
need no longer be in the same directory as the makefile. This change addresses
SW1-204 and SW1-212.
2) The STRICTDEF keyword is no longer recognised by makmake. Its function in
appending "D", "U", and "UD" to the base name of *.DEF files for DEB, UREL and
UDEB builds is now carried out by default. There should now be a *.def file for
each of these build variants in use if any definition files are used at all.
This change addresses SW1-196.
3) Makmake.cmd has been improved. If makmake fails, a basic perl operation will be
attempted. If this fails, the user will be asked if the correct version of perl
is installed. This change addresses SW1-345.
Version 0.01.075
================
(Made by Alastair, 24th July 1997)
DEFTOOL (from William Roberts)
1) Modified DEFTOOL.CPP and DEFTOOL.H
Basically just improved error reporting so that
a) When it tells you that there are "frozen ordinals missing from supplied
def file" it also tells you which ordinal numbers have been lost.
b) If your DLL exports functions that weren't in the freeze file then it
gives you a gentle warning, because that's not something which we'd
want to allow in a release.
MAKMAKE
1) Changed makmake so that target makefile is created in the current
working directory rather than the directory containing the *.mmp
file.
2) Added line of code to makpath.pm so that single dot directories
are stripped from paths.
3) Removed repeat occurrence of deffile flag in the link command for
*.wins makefiles.
4) Changed RELGDB path macros for MARM makefiles so that they are prefixed
with ".\" rather than "..\\..<absolute path to makefile directory>".
This is a neater way to get them to expand to something textually different
from REL path macros while still specifying the same path.
5) Changed "ar q" lines within MARM makefiles to include 8 object files maximum
rather than 4 - this should improve efficiency without breaking limits on
command-line lengths.
6) Changed WINS.PM so that the $(LINK_OBJS) macro is used in the link command line
in *.wins makefiles rather than a list of all the objects concerned.
7) Changed MARM.PM so that the first stage of linking (by name) for a dll target
creates the dll in the build directory rather than the release directory.
The second stage of linking (by number) creates a dll in the build directory
rather than the release directory too, overwriting the first dll. Finally,
this target is petranned to the release directory and the dll left in the
build directory is deleted. This change solves the problem of nmake thinking
that the target has been successfully created when the build has failed
anywhere between the first link stage and the petranning stage, because of
the presence of an apparently up-to-date dll in the release directory.
8) Changed WINS.PM similarly so that *.wins makefiles do a two-stage link. Defmake
is called between the two link stages with a "freeze" file if one is specified
with the DEFFILE statement (see below). The defmake-created def file is then
used for the second-stage link (by number). The first stage of linking creates
the target dll in the intermediate directory while the second stage creates the
final target dll in the target directory and the first dll is deleted.
9) Removed /NAME flag from MAKMAKE - no longer necessary due to (8).
10) Radically changed behaviour of MAKMAKE towards DEFFILE and FRZFILE statements
within *.mmp files. There is no longer handling of FRZFILE statements. As
before, if a DEFFILE statement is placed within an #if defined(WINS) ... #endif
block, the statement will be used by both WINS and VC4 makefiles but not MARM
makefiles, and vice versa if a #if defined(MARM) ... #endif block is used. If
the file specified has no path, the file is assumed to be in directory
\<project>\bwins\ for WINS and VC4 makefiles and \<project>\bmarm\ for MARM
makefiles. For VC4 makefiles, the specified file is passed to LINK.EXE as
before. For WINS makefiles, the file is not used in the first stage of linking.
Defmake is called and uses the file as a freeze file in the creation of a new
deffile which will include any new exports produced by changes to the source code
for the project. The new deffile created is used in the second stage of linking.
For MARM makefiles, the specified file works in much the same way as for WINS
makefiles.
In other words, the DEFFILE statement should now be used to specify "freeze"
files. WINS *.def files were in effect "freeze" files anyway. The choice of
"DEFFILE" rather than "FRZFILE" for the new statement within *.mmp file reflects
the widespread understanding of "def" vocabulary outside Psion. For more
information, see the discussion on e32proposals - tools - makmake and frz files.
The STRICTDEF keyword is still required if differently-named "freeze" files
are required for different builds, but this requirement is under review together
with potential default directories for components not using directories
\<project>\bwins and \<project>\bmarm. Note that if these directories are not
being used and files specified with the DEFFILE statement include a path then is
is essential to place DEFFILE statements with #if defines because WINS and VC4
builds should never use the same "freeze" file as MARM builds due to the compilers
mangling function names in different ways.
11) A file specified with the DEFFILE statement is now put in the list of
dependencies for a target in WINS and MARM makefiles, but not yet VC4.
12) Changed MAKMAKE to allow for use of the WINDOWS API. If you are using this API,
specify the windows libraries you wish to link to in *.mmp as follows
START WINS
BASEADDRESS 0x43500000
WIN32_LIBRARY kernel32.lib gdi32.lib user32.lib
END
ie, put the WIN32_LIBRARY statement somewhere in a START WINS ... END block
and list the libraries after it. Please note that these START WINS ... END
blocks are very different from #if defined(WINS) ... #endif blocks. Makmake
always preprocesses the *.mmp file when invoked, and later passes any text within
START ... END blocks onto the perl module specific to the platform in question.
When makmake is invoked with the VC4 argument, the *.mmp file is preprocessed
the WINS macro defined.
13) Fixed bug causing AIF file subroutine to be ignored
14) Fixed bug causing path specified with TARGETPATH statement to be left out of
path to resource target for WINS makefiles.
15) Changed resource file building command so that the base name of the target
resource file is the same as the base name of the releasable rather than
the base name of the file specified with the RESOURCE or SYSTEMRESOURCE
statement.
16) Changed name for target AIF from the base name of the releasable + ".aif" to
the name specified by the AIF statement.
18) Changed code designed to warn the user if the version of perl they are using
is not supported by MAKMAKE so that it is activated before rather than after
compilation - untested.
Version 0.01.074
================
(Made by Alastair, 1st July 1997)
MAKMAKE
1) Fixed egregious error causing the content of LIBRARY
statements in *.MMP files to be ignored. This error
is present in e32tools releases 071, 072 and 073.
Version 0.01.073
================
(Made by Morgan, 18th June 1997)
1) ROMBUILD
Added 'time' keyword for specifying the date/time stamp
in the rom header.
Syntax:
time=dd/mm/yyyy hh:mm:ss
Added 'reloc' file attribute to specify user process
data run address for Exes.
Added 'align' keyword to align files on particular
alignment boundries.
Version 0.01.072
================
(Made by Alastair, 16th June 1997)
MAKMAKE
1) Added line of code to makmake.pl so that makmake will refuse
to work with versions of PERL released prior to version
5.003_07 . To find out what version of PERL you are using,
type perl -v<return> in a DOS box.
Version 0.01.071
================
(Made by Alastair, 9th June 1997)
MAKMAKE
1) Added new preprocessor macro, __PSISOFT32__, defined for all
projects using MAKMAKE regardless of platform or build variant.
Version 0.01.070
================
(Made by Matthew, 4th June 1997)
Added new tool ROMMASK, for generating rom images suitable for masking.
Version 0.01.069
================
(Made by Alastair, 4th June 1997)
MAKMAKE
1) Fixed bugs causing _UNICODE macro to be output
without the initial underscore by marm.pm and
wins.pm.
2) Single call to gcc archiving tool "ar" replaced
by multiple call to avoid overriding of command-line
length limits for projects comprising many source
files.
3) Fixed bug in \e32tools\makmake\mnt.cmd so that
makpath.pm is copied to directory
\epoc32\tools\makmake.
Version 0.01.068
================
(Made by Alastair, 2nd June 1997)
MAKMAKE
1) Removals
makmake.txt - SDK documentation now available
revmak.pl - redundant
winsname.pm - redundant
2) Fixes
a) fixed dependency macro bug for VC4 platform
b) fixed problem with mmp file specification of
multiple subprojects
c) Other minor bug fixes
3) Internal Changes
a) Improved generation of dependencies
b) Improved path utility functions
c) Moved path utility functions out of makmake.pl to
new module "MAKPATH.PM"
d) Other structural changes
4) Command-Line invocation
a) Platform VC4 can now be specified to produce MSVC4.0
compatible makefiles - WINS platform now produces
makefiles incompatible with MSVC4.0 allowing greater
freedom for using nmake to build resource files, etc.
*.MMP files will still be preprocessed with the "WINS"
macro whether the platform is specified as WINS or VC4
b) New flag "/clean" - deletes all non-source files for the
project and platform specified.
c) New flag "/lang [language]" - sets a language for the
project and platform specified except for VC4.
d) New flag "/name" - doesn't add any /def:[deffile]
linker flags to WINS or VC4 makefiles. No effect
on MARM makefiles. This flag makes linking-by-name
builds possible for WINS.
e) Flags can now be specified anywhere on the command-line
5) *.MMP Files
a) New keyword "LANG [language]" - sets a language for
the project and platform specified except VC4.
This setting is overridden if the command-line language
flag is used.
b) New keyword "AIF [*.aif file]" - specifies an application
information file. This keyword is subproject relative,
and merely copies the *.aif file to the target directory
at the moment (except for VC4).
c) New keyword "BITMAP [*.mbm file] [*.bmp files]" - specifies
a protea multi-bitmap target and compiles it to the target
directory using bmconv on the windows bitmap files (except
for VC4). The keyword is subproject relative, so all
windows bitmaps files specified are expected to reside in
the current \PROJECT\SUBPROJECT directory. This may not be
the required behaviour.
d) New "RESOURCE" keyword behaviour - eikrs.bat is invoked
for MARM and WINS platforms to compile the resource specified
to the target directory. VC4 platform uses the keyword
parameter for information only. If a language is specified
it is passed to eikrs.bat, defaults to "SC".
e) New keyword "SYSTEMRESOURCE [*.rss file]" - subproject
relative, behaves exactly as the RESOURCE keyword except
that for WINS the target resource is compiled to directory
\epoc32\release\wins\[build]\Z\system\data. Ignored by
VC4.
f) New "TARGETTYPE" keyword option - "exedll". This option
can be used to specify a target which will be built as
a dll under single-process platform WINS (or VC4), but as
an exe for multi-process platform MARM.
g) New keyword "STRICTDEPEND" - if specified, makmake will
generate dependencies for each source or resource specified
for all builds - DEB,UREL,RELGDB etc. If sources are unlikely
to specify different include header files for different
builds then there is no need to specify this keyword and
dependencies will be generated once only for each source
file.
h) New "DEFFILE" keyword behaviour. This keyword is no longer
platform-specific (within a "START [platform] ... END" block).
If the deffile is specified without a path, then makmake
will expect the deffile to live in directory "\PROJECT\BMARM"
for the MARM platform, and in "\PROJECT\BWINS" for WINS or VC4.
Note that currently the *.def file will be used in a call
to dlltool in MARM makefiles as follows:-
"dlltool --def [deffile] --output-def [created deffile]".
This behaviour is required for at least one project, and
different deffiles can be specified for different platforms
using "#if defined [platform]" within *.mmp files.
i) New keyword "FRZFILE [*.frz file]" - behaves the same as
"DEFFILE" keyword as regards paths. A specified freeze file
is ignored by makmake when producing WINS or VC4 makefiles.
The file is used by MARM makefiles as follows
"ld -z [frzfile] [dlltool-created deffile]".
j) New keyword "STRICTDEF" - if this keyword is specified then
makmake assumes that, for each *.def or *.frz files specified,
there are actually as many of these files as there are
different build configurations for the project. E.G. for
WINS makefiles, if a deffile is secified in a *.mmp file as
"DEFFILE mydef.def", then makmake will assume "mydefd.def",
"mydefu.def" and "mydefud.def" for DEB, UREL, and UDEB builds
respectively. Though for MARM, a RELGDB build would look for
plain "mydef.def".
6) Output
a) Makmake for MARM will produce *.MARM makefiles.
b) Makmake for WINS will produce *.WINS makefiles.
c) Makmake for VC4 will produce *.MAK makefiles.
d) MARM and WINS makefiles are restructured to allow
the following example NMAKE command-line invocations
"NMAKE /f euactiv2.wins UREL"
"NMAKE /f euactiv2.marm UDEB"
"NMAKE /f euactiv2.wins CLEANDEB"
"NMAKE /f euactiv2.marm CLEAN"
e) Macros specifying target directories, language,
build directories and so on are produced at the
top of WINS and MARM makefiles.
f) RELGDB builds for MARM aim to put the executable
produced into \epoc32\release\marm\rel, and also use
\epoc32\build\[project]\marm\rel as their building
directory.
g) Gcc tool OBJCOPY produces a *.sym file for MARM debug
builds, including RELGDB.
Version 0.01.067
================
(Made by Morgan, 19th May 1997)
1) PEDIFF
Recognises time/date stamps in debug and export directories.
Ignores PETRAN version information in the header.
2) PETRAN
Uids take the full 32bits.
3) WVECONV
From \VNOTES\WVECONV. S3a to S5 sound file converter.
Version 0.01.066
================
(Made by Alastair, 9th May 1997)
MAKMAKE
1) Fixed bug causing extra "print " text to be produced
as part of the USERINCLUDES text outputted in verbose mode.
2) Fixed bug causing makmake.pl to fail to produce the extension
of a target filename when requested by *.pm modules
3) Fixed bug causing makmake to fail with an error report if
more than one flag is specified on the command line
MAKSYM
1) Added a few lines of extra code so that the base address of
a dll in the rom is printed to maksym.log when maksym cannot
find the corresponding *.map file.
Version 0.01.065
================
(Made by Alastair, 6th May 1997)
MAKMAKE
1) reorganised to be more easily maintainable and extensible.
2) handles uid keyword in *.mmp file - uid1 is provided automatically,
uid's 2 and 3 are specified ...
UID <uid2> <uid3>
in *.mmp file.
3) dependency generation section calls CPP with flag -MG so that
makmake responds gracefully to missing generated headers
4) *.mdp and *.ncb files are automatically deleted from directories
in which makmake is directed to create a wins makefile with the same
root.
5) petran is invoked from the arm makefile
6) invocation syntax simplified so that makmake is invoked
makmake [flags] [mmp file root] [platform]
rather than
makmake [flags] [mmp file] [destination makefile] [platform]
7) makmake by default operates in quiet mode, verbose mode is invoked
using the new "/V" flag on the command-line
8) makmake will create the work directories rather than the makefile
if the new "/MAKEWORK" flag is used on the command-line
9) the "/q" flag for "del" commands is no longer added to marm makefiles
created with makmake
10) the DEFFILE keyword is no longer searched for within a START WINS ... END
block, now it is platform independent though not yet utilised by the marm
platform.
11) winsname.pm is not currently expected to work
12) PERL is no longer invoked with the -w debugger flag
Version 0.01.064
================
(Made by Morgan, 16th April 1997)
1) ROMBUILD
Removed the checks for unicode-ness of Uid[0] on Exes/Dlls
2) W32REPRO
An NT version of PREPRO written by WilliamR
Version 0.01.063
================
(Made by Morgan, 15th April 1997)
1) MAKTRAN
Changed over to the new (and slightly less mad) Uid scheme
introduced in E32(098).
Dlls now have a Uid[0] of 0x10000079
Exes now have a Uid[0] of 0x1000007A
Everything else is as before.
Version 0.01.062
================
(Made by Graham Asher, 15th April 1997)
READTYPE
Added this new tool, which writes the new file unitable.cpp, which contains
the Unicode character attribute information. I've put a full
explanation of how to use READTYPE in Notes under e32 software design.
Version 0.01.061
================
(Made by Morgan, 13th April 1997)
1) ROMBUILD
1) Bug fix when using the -S switch with Rom patching
2) Added class TRomSectionHeader to the start of the
second section of the Rom so sectioned Roms can have
a separate build time, language variant, and checksum.
3) Added iRomSectionHeader member to TRomHeader to point
at the start of the sectioned Rom and padded TRomHeader
to 256 bytes. This needs a new BOOTROM.BIN which will
be released with E32(098)
4) Fixed a bug in the split rom verify code.
5) Fixed the overriding of Uids.
Version 0.01.060
================
(Made by Morgan, 9th April 1997)
1) PETRAN
Fixed a PETRAN dumping bug when there are no .data relocations.
2) MAKTRAN
Bug fix for -P switch when no uid3 is specified.
3) DEFMAKE
Made the -S switch work when -Z is used.
Version 0.01.059
================
(Made by Morgan, 7th April 1997)
HIGHLIGHTS:
* MAKTRAN now produces PETRANned targets.
* Components should use the new -P switch instead of -U.
* Suggested minimum commandline for Dlls:
MAKTRAN <src .MAK> <dest .ARM> -z<Your .FRZ> -p"-uid2 <Your Uid2> -uid3 <Your Uid3> -nocall"
2) MAKTRAN
1) Overhauled for releasing PETRANned components.
-U switch has been removed and been replaced by new
-P switch for specifying PETRAN command line arguments. Uid1
will default to the correct uid for the build type unless
you specify otherwise.
Version 0.01.058
================
(Made by Morgan, 3rd April 1997)
1) ROMBUILD
1) Filenames can now be quoted ("") to include spaces.
2) More details provided when the Rom overflows.
NOTE: Currently there is a bug that occurs if the Rom
is exactly the correct size (byte for byte) and sectioning
is being used. It's harmless - I'll fix this in a release
soon.
Version 0.01.057
================
(Made by Alastair, 2nd April 1997)
1) MAKMAKE
Fixed bug in wins.pm causing *.def files specified in *.mmp
files to be ignored by MSVC.
Included deftool flag -1 NewApplication__Fv for MARM makefiles
where the target is an APP.
E32TOOLS GROUP MNT.CMD
Added lock, unlock and wholock parameters.
Version 0.01.056
================
(Made by Alastair, 27th March 1997)
Alastair:
1) MAKMAKE
MAKMAKE generates makefiles for WINS or MARM builds.
It is being released because the SDK example projects
now use it, and no longer use MAKTRAN. Makmake is by no
means fully tested and is certainly not intended for
incorporation into Epoc32 projects prior to V1 shipping.
Details of its use are roughly documented in file
\e32tools\makmake\makmake.txt.
Use of makmake requires the installation of Perl
from directory T:\UTIL\PERL.
Version 0.01.055
================
(Made by Morgan, 20th March 1997)
1) ROMBUILD
CheckSum bug fix.
Kernel alignment bug fix.
Version 0.01.054
================
(Made by Morgan, 18th March 1997)
1) ROMBUILD
Removed some unnecesary recurtion and tidied some dodgy code.
Loaded the files to Rom in the order they appear in the obey
file, rather than depth first order.
Roms can now be sectioned into two parts allowing the upper
part of the rom to be switched for language variations and
file patching. Both these processes require the original
releasables, original obey file, and any new releasables.
It is also advisable to supply the original Rom so the lower
section can be verified to be constant.
In a sectioned rom the directory structure, import address
tables, and Dll reference tables of all files in the first Rom
are placed after the section border.
The overhead of sectioning a Rom (over and above an unsectioned
one) is the space required to duplicate the import address
tables of files from the first section.
Last time I counted (B2) the iat's took up 42k.
The 32bit sum of all 32bit words in the second section is
always 0. This means the iChecksum member in TRomHeader is
valid for the rom as a whole and for the first section in
isolation.
It is not possible to patch any files that are listed before
the primary or the secondary. Doing this causes the position
of the kernel's/file-server's entry in the directory table to
move. This may be fixed in a future release.
To section a Rom:
Use the keyword
section <rom offset>
at the point in the obey file where you want the Rom to be
split. All files before this line appear in the first
(constant) section, and files after appear in the second
(patch/language) section.
Patching a file in the second section:
Add file attribute 'patch[ed]' to the file to be patched.
(This will cull the file from the first section).
Supply a replacement file in the top section as required.
Note, the original file is still required to guarantee
consistency in the first section of Rom.
Run ROMBUILD.
Supplying a language dependant file:
Put the file after the section keyword.
Run ROMBUILD.
To verify the lower section of Rom has remained constant:
Specify the original Rom image on the command line with
-r<FileName>
Version 0.01.053
================
(Made by Morgan, 7th March 1997)
1) ROMBUILD
Bug fix to 'screen' keyword
Version 0.01.052
================
(Made by Morgan, 3rd March 1997)
1) ROMBUILD
Bug fix for Exes/Dlls with no relocations in .text or .rdata
Check Uids for exporting .EXEs as well as .DLLs
New 'screen' keyword. Default is: screen = 640x240x4
2) MAKTRAN
Bug fix
Version 0.01.051
================
(Made by Morgan, 13th January 1997)
Alastair:
1) MAKSYM
Generates a list of C++ symbols and their addresses in rom from
ROMBUILD.LOG and accompanying .MAP files.
MAKSYM ? for help.
Version 0.01.050
================
(Made by Morgan, 6th January 1997)
1) ROMBUILD
Incompatable with any E32 before 083.
Added some stuff to TRomHeader for the test department:
A language bitfield (64bits for specifying the languages supported
by the ROM), and a 32bit hardware identifier.
The languages are as defined by TLanguage in E32STD.H. (ie Test
is bit 0, English is bit 1, French is bit 2, etc...)
Added two more obeyfile keywords for this. Usage:
languages = <list of supported languages>
hardware = <n>
Rombuild now has a -? switch.
Version 0.01.049
================
(Made by Morgan, 11th December 1996)
1) MAKTRAN
Object files are now grouped on the ar (archive) command line to
speed up building. By default they are grouped in 4s but this
can be changed by using the new -a<n> switch.
2) ROMBUILD
More informative error information when a dll is exporting by
name.
3) E32UID
Removed.
Version 0.01.048
================
(Made by Morgan, 22nd November 1996)
1) ROMBUILD
Added 128 bytes of space to TRomHeader which appears at the front
of the ROM. This is to allow work on the StrongARM port to
progress.
Naturally, this makes ROMBUILD compatable with absolutely nothing.
So a new bootrom.bin will be released with E32(075).
Version 0.01.047
================
(Made by Morgan, 1st November 1996)
1) MAKTRAN
Another minor fix to deal with unusually shaped .MAK files. This
time it's old link information stored in comment lines.
Added "-Wno-ctor-dtor-privacy" to CPPFLAGS.
2) PEDIFF
Bug fix HA-283. The final section in a PE file may be truncated
to its VirtualSize making the SizeOfRawData field of the header
inaccurate. This was causing a problem in the release build but
not the debug build.
Fixed by padding the section data with zeros up to SizeOfRawData
bytes.
3) ROMBUILD
Added a iTextSize member to TRomImageHeader. Making this version
of rombuild incompatable with any E32 before build 075.
Version 0.01.046
================
(Made by Morgan, 1st November 1996)
1) MAKTRAN
Added support for include directories other than ..\inc and
\epoc32\include
Version 0.01.045
================
(Made by Morgan, 7th October 1996)
1) MAKTRAN
Added a -U<Uid> switch to put the 3rd uid in the target's import
stub so the Dll/Exe exports as DllName[Uid].Ext
This enables you to use the type-safe static linking (based on the
Dll's 3rd Uid) in E32(070)/F32(036) and ROMBUILD(043).
2) ROMBUILD
Officially PVCSed DW's patch to ROMBUILD(044) that disables
type-safe static linking and added a -type-safe-link option to
turn it back on.
I'll leave it that way until people get used to the idea (or until
someone comes up with a better plan).
Also added checks on the first Uid against
KNarrowDebugUid, KNarrowReleaseUid for Ascii builds and
KWideDebugUid, KWideReleaseUid for Unicode builds. I havn't made
this dependent on the -type-safe-link option because executables
and dlls wont load if this Uid is not set correctly.
Version 0.01.044
================
(Made by Morgan, 3rd October 1996)
1) ROMBUILD
ROMBUILD can now take E32 Image (pre-PETRANned) files as well as
PE Format files as input.
Version 0.01.043
================
(Made by Morgan, 2th October 1996)
1) MAKTRAN
Better filename parsing for the -z option.
2) PETRAN
Added a -priority option. This takes a number or one of these
keywords: low, background, foreground, high, windowserver,
fileserver, realtime, supervisor.
3) ROMBUILD
Added 'priority' inline keyword for EXEs.
Added checks for type-safe static linking of DLLs.
5) E32UID
Jal: Displays the psion copyright message and build.
Renumbered Uids to be Uid0, Uid1, and Uid2.
6) ALL
Redirected error output to stderr.
Version 0.01.042
================
(Made by Morgan, 14th September 1996)
1) PREPRO, PEIGER
Changes to MNT.CMD to include the latest versions of
PREPRO and PEIGER in the E32TOOLS release.
2) MAKTRAN
Minor bug fixes for -D defined symbols.
3) E32UID
Added a -Q quiet switch.
Version 0.01.041
================
(Made by Morgan, 14th September 1996)
1) MAKTRAN
Added support for maktranning make files of static libraries.
There are added complications when using static libraries from
GCC:
You may find that any executables linked with a static library
produce reams of "bad relocation" errors from either PETRAN or
ROMBUILD. At the moment, to work around this you will need to
modify 2 lines for each build in the MAKTRANed file.
$(LD) ... --whole-archive my_exe.in --no-whole-archive ... my_lib.lib
becomes:
$(LD) ... --whole-archive my_exe.in my_lib.lib --no-whole-archive ...
this has the effect of including all code from the static library
in your .EXE whether it is used or not, but it fixes the bad
relocations generated by the GCC linker.
MAKTRAN also propogates defined symbols from the MSVC4
Build/Settings dialog excluding:
__WINS__,__VC32__,__EXE__,__DLL__,
_UNICODE,WIN32,_WINDOWS
2) DEFTOOL
No longer truncates your def file if it can't find the specified
freeze file.
Version 0.01.040
================
(Made by Morgan, 2nd September 1996)
!) ROMBUILD
Bug fix: for EXEs/DLLs with no imports.
The tab character is now treated as white space in obey files.
Improved some error messages.
Removed the universally dispised 'nocallentrypoint' directive on
the grounds that it looked silly.
Executables specified with 'file=' do not have the entry points
called. New keyword 'dll=' indicates that the entry points
should be called.
Fixed filename case dependency.
2) MAKTRAN
Added the switches '--whole-archive' and '--no-whole-archive'
around the .in file on the linker command line to keep GCC happy.
This only effects EXEs - as DLLs did it already.
Version 0.01.039
================
(Made by Morgan, 19th August 1996)
1) MAKTRAN
Added Unicode and Debug (U,D) suffixes to DEF files to make the
filenames for each target different under the new directory
structure.
Freeze files have also been given the same treatment: specifying
-z afile.frz
will use afile.frz, afileD.frz, afileU.frz, afileUD.frz
as freeze files for the respective builds.
Version 0.01.038
================
(Made by Morgan, 2nd August 1996)
1) MAKTRAN
New maktran for the new epoc32 directory structure.
-T option removed. Template instantiation is automatic.
Dlls are auto-detected by looking for __DLL__ in the .MAK file,
but this can be overridden with -D (to force a DLL) and -E (to
force an EXE)
Bug fix: MAKTRAN now deals with make files that do not have
their "Win32 Release" target first.
2) ETOUCH
Replacement TOUCH program.
3) ROMBUILD
Bug fix: for data sections with no relocations
4) PETRAN
Added -nocallentrypoints option (can be shortened to -nocall)
and -callentrypoints option ( shortened to -call)
Bug fix: for executable files with no relocations
Version 0.01.037
================
(Made by Morgan, 2nd August 1996)
1) ROMBUILD
Yet another change that will break your rom if you don't pay
attention to the version numbers. This build is intended to
work with E32 (065).
The format of the Dll reference table has changed, and now looks
like this:
class TDllRefTable
{
public:
TUint16 iFlags;
TUint16 iNumberOfEntries;
};
followed by iNumberOfEntries of these:
class TDllRefTableEntry
{
public:
TUint iEntryPoint;
TUint iDllRefTable;
};
Added another inline keyword "nocallentrypoint" to obey files.
When attached to a file it prevents the entry points of linked
Dlls being called. This is used to save time during loading
when the Dll's entry points are trivial (=empty).
2) Fiddled with the -s option.
-S outputs the size summary to the screen and to the log
-SLog outputs the size summary to the log only
-SScreen outputs the size summary to the screen only
3) Forced the primary's code section to start on a 4K page boundry
for obscure operating system reasons.
(ie, Getting the exception/interrupt vectors to land on a page
boundry so they can be easily mapped by the MMU to the address
where they are expected to be.)
4) Added support for building Unicode roms. The implementation for
writing Unicode filenames to ROM is temporarily dubious.
A Unicode rom is made by specifying the keyword 'unicode' in the
first section of the obey file.
5) Added the keyword 'stop' so parsing of an obey file can
be stopped prematurely.
Version 0.01.036
================
(Made by Morgan, 11th July 1996)
1) ROMBUILD
Support for generating split ROM images - added the optional
keywords:
romnameodd=<file name>
romnameeven=<file name>
resulting in two half-roms. one containing all odd numbered
half-words (16bits) and one containing all the even half-words.
Checksums:
Added a checksum member to TRomHeader and an optional keyword
romchecksum=<n>
for obey files. This results in a ROM where summing all 32 bit
words (ignoring overflows) will return n. The default sum of
all ROM words is 0.
Checksums for the ROM and for split ROMs are now calculated and
reported in the log. These checksums are calculated by summing
all 8bit bytes and taking the least significant 32 bits of the
result.
Version 0.01.035
================
(Made by Morgan, 10th June 1996)
1) MAKTRAN
Added a RELGDB target which pretends to be the REL target
while keeping the debug info.
This has the same effect as a REL build when the makefile is
generated with:
MAKTRAN -no-strip-symbols -g"-g -fno-omit-frame-pointer" src dest
2) DEFMAKE, DEFTOOL
Added -2 switch to compliment the -f switch so you can specify
the second ordinal as well as the first without the need to mess
around with freeze files.
This allows us to accomadate DLLs with the UID function at
ordinal 1, and the GateL function at ordinal 2.
Also added -1 switch which is the same as -f to keep things
consistent.
Version 0.01.034
================
(Made by Morgan, 26th June 1996)
1) ROMBUILD
Added facility to output Motorola S format Records.
Use the optional keyword:
srecordfilename=<output filename>
in the first section of the obey file.
2) MAKTRAN
gcc option -mcpu-arm710 is now -mcpu=arm710
Added -strip-symbols and -no-strip-symbols options.
These force the linker to keep or strip all symbol
information (including debug symbol info). If both
are omitted then symbols are striped for release
builds only.
Version 0.01.033
================
(Made by Morgan, 24th June 1996)
1) MAKTRAN
The -m6 flag on the CPPFLAGS line has changed to
-mcpu-arm710 -mapcs-32
added -fvtable-thunks and
removed -fno-implicit-templates
Version 0.01.032
================
(Made by Morgan, 20th June 1996)
1) PETRAN, ROMBUILD
Bug fix: Relocations for the .rdata section were 4 bytes out
when the executable had a .rdata section and no imports.
PETRAN now performs a sanity check on all virtual addresses, and
lists the dubious ones.
2) MAKTRAN
Made the error messages more descriptive when the .MAK file
doesn't contain one of the expected targets.
Version 0.01.031
================
(Made by Morgan, 12th June 1996)
1) PEDIFF
syntax: PEDIFF pefile pefile
PEDIFF -e32 e32imagefile e32imagefile
compares 2 PE/E32Image format files to see if they are identical
ignoring all time/date stamps
2) PETRAN
Another change to the E32Image file format to add a time stamp.
Version 0.01.030
================
(Made by Morgan, 11th June 1996)
1) PETRAN, ROMBUILD
Fixes to supply more information for the ram loader.
(ie. the size of the import section)
Documentation for the E32 Image file format is available from
the 'E32Base' Notes database.
Version 0.01.029
================
(Made by Morgan, 7th June 1996)
1) PETRAN
Added the command line switches:
-stack <stack size>
-uid<n> <uid>
for setting the stack size and the file's uids
The output of PETRAN has changed to the new E32Image file
format giving a (seasonally adjusted) size reduction of between
20 and 40 bytes.
2) ROMBUILD
Uses the new E32Image file format.
Added heap size, and uids to the file modifiers
file = <src PE file> <dest EPOC file> [attributes]*
where 'attributes' is
attrib = [r|s|h|R|S|H]+
stack = <stack size>
reloc = <specific relocation address>
heapmax = <heap size>
heapmin = <heap size>
uid<n> = <uid>
Files in the rom are now read-only (R) by default (use
attrib=r to make them read/write)
Made filename and import/export name compares case insensitive
3) DEFMAKE
DEFMAKE now accepts Alpha CPU PE Files
Version 0.01.028
================
(Made by Morgan, 30th May 1996)
1) MAKTRAN
added a -g flag to pass extra parameters to the gcc command line
eg.
-g-fcheck-new
adds: -fcheck-new to CPPFLAGS and
-g"-fcheck-new -fsigned-char"
adds: -fcheck-new -fsigned-char
Version 0.01.027
================
(Made by Morgan, 29th May 1996)
1) ROMBUILD
Changed the format of the 'file' keyword to allow overriding of
various file attributes.
New format is:
file = <src PE file> <dest EPOC file> [attributes]*
where 'attributes' is
attrib = [r|s|h]+
stack = <stack size>
reloc = <specific relocation address>
The -s switch now lists file sizes in the same order as files
occur in the obey file.
Fixed a problem with reading relocations when the PE format file
lies about the VirtualSize of the section.
2) MAKTRAN
Removed the -s flag from the linking stage of debug builds
to keep gcc generated debug information.
3) DEFTOOL
Improved error reporting.
4) General
Removed the dependencies on TRomExeHeader and TRomDllHeader
(from the header files of E32(059)) which are now defunct
so the tools build properly with E32(060).
Removed some of the dead code left over from E32ROM
Version 0.01.026
================
(Made by Morgan, 24th May 1996)
1) ROMBUILD
Altered the size summary output to include data files.
Currently the files are listed in depth first directory
order. I intend to change this so they appear in the
same order as they appear in the obey file.
2) PETRAN
Fixed a bug that crashed the translator when the size of the
relocation section of an executable was a multiple of 0x200
(the PE format file alignment size.)
3) MAKTRAN
Added a CLEAN target.
Version 0.01.025
================
(Made by Morgan, 23rd May 1996)
1) E32ROM has been killed
2) ROMBUILD replaces E32ROM
Syntax: ROMBUILD [-v] [-s] obeyfilename
-v verbose flag
-s gives a size summary of all executables in the rom
Logged output appears in the file ROMBUILD.LOG
The obey files for ROMBUILD are slightly different:
The keyword 'resource' has been replaced with 'data' for
putting data files in rom.
A manditory keyword 'kernheapmax' has been added.
The 'version' keyword has the syntax Major[.Minor[(Build)]]
3) PETRAN
Produces E32ImageFile format files from PEFiles.
4) Jal,
E32UID
Attaches UIDs to WINS files.
Version 0.01.024
================
(Made by Morgan, 14th May 1996)
1) DEFMAKE, DEFTOOL and MAKTRAN
Added -z switch to specify a frozen def file.
The exports in the frozen def file appear first (and in order)
in the new def file. All additional exports are added to the
end.
A warning will be give if an export in the frozen def file
does not appear in the executable being processed.
Version 0.01.023
================
(Made by Morgan, 3rd May 1996)
1) Jane
Added space for the Uid system to the Rom Exe and DLL headers.
Version 0.01.022
================
(Made by Morgan, 1st May 1996)
1) E32ROM:
Added path checking so now it is not possible to create
directories with the name ""
The version specified by the obey file is now put into the rom.
2) MAKTRAN:
/f switch added to specify the name of the function to use as
the first ordinal in the dll. (only works with /d switch).
More looping bugs fixed. This time in the Archive generation.
Added some meagre form of test suit: DIFs good .ARM files
with files generated from the current version.
Put in the work-around for the "ld hardcoded to C:" problem.
Version 0.01.021
================
(Made by Morgan, 23rd April 1996)
1) MAKTRAN bug fixes:
Added gcc -g option to the debug builds to produce debug output.
Fixed HA-103: Now rules are only output for .cpp files
Having a .. or a . in the path for a source file
(eg SOURCE=.\T_BLOB.CPP) no longer puts MAKTRAN into an endless
loop. Also using system variables in path specifiers
(eg {($INCLUDE)}"\AHeader.H" ) no longer fills your hard disk.
Source files with no dependancies now generate a target.
Version 0.01.020
================
(Made by Morgan, 11th April 1996)
E32ROM:
1) Jal,
The 'resource' option is fixed and the rom is given the correct
date.
2) Jane,
Added an error message if you don't supply enough parameters on
any line in the files section.
Version 0.01.019
================
(Made by Graham, 8th April, 1996)
1) Changed MAKTRAN-created makefile compiler options:
Added -fno-implcit-templates
In the past GCC automatically instantiated template classes and
functions. We now want to take complete control of this, so all
such templates will have to be instantiated by hand. There is an
extra switch (/T) on the command line which enables automatic
template instantiation to be turned back on, but this should only
be used when compiling test programs. Releasable code should take
advantage of the reduction in ROM size which hand-instantiation
brings.
Removed -fvtable-thunks
Those programs which exploit multiple-inheritence should now work.
Added $(USERDEFS)
This enables you to add your own definitions to the build.
e.g. nmake /f elink.mak USERDEFS=-D_USE_LOG
2) Changed MAKTRAN-created makefile linker options:
Added --no-whole-archive option
This should greatly improve the size and linking speed DLL's. In
order to exploit this, you must get the next release of the GCC
tools from the network. Do this by typing TOOLS GCC and making
sure that \GCC\BIN is in your path.
3) Fixed a bug with MSVC .MAK files which contain custom builds
Version 0.01.018
================
(Made by Morgan, 3rd April, 1996)
1) Extended DEFTOOL to take a -f switch (takes the name of the
function to be ordinal 1).
Version 0.01.017
================
(Made by Graham, 26th March, 1996)
1) Fixed a bug in E32ROM which gave "relocation type not handled" in
the presence of .reloc sections which were an exact multiple of
256 bytes in length.
2) Fixed the MAKTRAN "if exist xxx.in del xxx.in" bug
3) Added DEB, UREL and UDEB builds to MAKTRAN make files
Jane:
4) Better error reporting in E32ROM.EXE
Version 0.01.016
================
(Made by Graham, 19th March, 1996)
1) Fixed a bug in targetting some test program make files.
2) Changed "del xxx.in" to "if exist xxx.in del xxx.in"
Lane:
3) Changed the mechanism by which libraries to be linked are found.
Jane:
4) Further improvements to the error reporting for DEFMAKE.
Version 0.01.015
================
(Made by Graham, 8th March, 1996)
1) Changed all tools to display their version and build numbers.
Jane:
2) Fixed a couple of heap problems in E32ROM, and generally increased robustness.
Will now print an error message if there are too many files for the ROM,
rather than scribbling all over your nice memory.
3) Improved some of the error reporting for DEFMAKE.
Version 0.01.014
================
(Made by Graham, 6th March, 1996)
1) Changed MAKTRAN to accept makefiles which have depenencies ..\..\
away from their source directory.
Version 0.01.013
================
(Made by Graham, 5th March, 1996)
1) Changed MAKTRAN to accept makefiles which are completely relative to
the directory in which they reside. NB These makefiles cannot be
correctly translated if they are moved to a different directory.
Version 0.01.012
================
(Made by Graham, 4th March, 1996)
1) Changed MAKTRAN to assume DEFTOOL.EXE is in your path
2) Changed MAKTRAN so that it correctly sets __DLL__ and __EXE__
3) Changed MAKTRAN to handle specially named DLL's - .DEV .MTD etc
4) Changed MAKTRAN to handle projects with non-compilable components
5) Changed the mechanism by which MAKTRAN decides group and project.
Version 0.01.011
================
(Made by Graham, 27th February, 1996)
1) Changed E32ROM to give each .EXE an 8K Stack
2) Fixed bugs in MAKTRAN to do with picking up the name of the target
3) Removed --whole-archive from .EXE make files built by MAKTRAN
Version 0.01.010
================
(Made by Jane, 26th February, 1996)
1) Fixed mnd.cmd for command line builds
Version 0.01.009
================
(Made by Jane, 23rd February, 1996)
1) Switched to Visual C++ 4.0
2) E32ROM - Added support for REM statement in obeyfiles
3) E32ROM - Fixed an obeyfile init bug which became apparent under the new compiler
4) DEFMAKE & E32ROM - added support for export table being in .rdata section, as it is
now with Visual C++. (Export table in .edata is still supported.)
5) DEFMAKE - added -q option which surrounds symbols names in "". This is mostly needed by
gcc builds where all destructors have a full stop in their name.
6) First release of MAKTRAN and DEFTOOL from Lane
MAKTRAN converts msvc .mak files to gcc format.
DEFTOOL is used by MAKTRAN to strip out garbage from .def files
and to insert "NONAME" as required by gcc.
For MAKTRAN usage type "MAKTRAN".
7) E32ROM - in log now displays absolute ROM addresses rather than offsets, and for text only
Version 0.01.008
================
(Made by Jane, 31st January, 1996)
1) Removed support for old time class
Version 0.01.007
================
(Made by Jane, 8th January, 1996)
1) Changed to new time class
Version 0.01.006
================
(Made by Jane, 21st December 1995)
1) Added versions to tools
2) E32ROM - Changed heap min size for apps to 32k.
3) E32ROM - Exits with error if files fail to fixup due to importing by name
Version 0.01.004/005
====================
(Made by Jane, 15th November 1995)
1) Added -R option to DEFMAKE so that the omission of ??__Dbg names in the .DEF
(release 003, (1)) can be optional.
2) DEFMAKE alone now prints the meaning of the switches as well as help text.
Version 0.01.003
================
(Made by Jane, 7th November 1995)
1) Changed DEFMAKE not to write any exports after it hits the first
??__Dbg prefixed name, allowing me to automate the E32 build
completely.
2) E32ROM - Added code to avoid overwriting the first byte of a file if presented
with an invalid RVA of 0. (Bug in Cygnus tools).
Version 0.01.002
================
(Made by Jane, 2nd November 1995)
1) Converted DEFMAKE to the new HOST scheme.
2) Sorted MNT.CMD so E32ROM will actually build.
Version 0.01.001
================
(Made by Jane, 1st November 1995)
1) First release.