# HG changeset patch # User Tom Sutcliffe # Date 1278944603 -3600 # Node ID 257450419d10810de23060177efd60abaaa6997d # Parent eb5f524dc31d5814f062f5fcb0db5e6cbe9ba937 Fixes for GCC-E 4.4.1 and updated docs. diff -r eb5f524dc31d -r 257450419d10 documentation/getting_started.pod --- a/documentation/getting_started.pod Fri Jul 09 17:31:42 2010 +0100 +++ b/documentation/getting_started.pod Mon Jul 12 15:23:23 2010 +0100 @@ -50,7 +50,7 @@ =item * C -Used for running fshell on either physical or simulated ARM hardware. Requires an installation of the GCC crosscompiler (for arm-none-symbianelf) - see here for more information: http://developer.symbian.org/wiki/index.php/The_GCCE_toolchain_initiative +Used for running fshell on either physical or simulated ARM hardware. Requires an installation of the GCC crosscompiler (for arm-none-symbianelf) - see here for more information: http://developer.symbian.org/wiki/index.php/The_GCCE_toolchain_initiative. =back @@ -67,7 +67,22 @@ M:\fshell\build\sf\2>sbs -c armv5_urel M:\fshell\build\sf\2>sbs -c winscw_udeb -I There are currently some concurrency issues in the build process that mean we don't recommend building multiple platforms in a single invocation of sbs. Ie do the above rather than C. We'll fix this as soon as we can! +I There are currently some concurrency issues in the build process that mean we don't recommend building multiple platforms in a single invocation of sbs. Ie do the above rather than C. In some cases you may even need to add the option C<-j 1> to sbs to have it run completely single-threaded. We'll fix this as soon as we can! + +=head2 Notes on building for GCC + +Fshell has only been tested to build with GCC-E 4.4.1, and the legacy 3.4.2. + +I The SF website appears to be out of date with regards to how to build with GCC-E on Raptor - at the time of writing the way to build is as follows: + + S:\fshell\build\sf\3>set SBS_GCCE432BIN=Nothing + S:\fshell\build\sf\3>set SBS_GCCE433BIN=Nothing + S:\fshell\build\sf\3>set SBS_GCCE441BIN=c:/apps/gcce/bin + S:\fshell\build\sf\3>sbs -c arm.v5.urel.gcce4_4_1 + +You may also need to update the compiler support libraries - I had to unzip rt_3_1_bin.zip from \sf\os\kernelhwsrv\kernel\eka\compsupp from a different baseline. (Unzip over \epoc32\release\armv5). The working libraries I used had datestamp of 28/1/2009, the non-working ones were 1/1/2009. + +There's one final gotcha if you want to build with GCC-E - at the time of writing the makefiles produced by SBS for PIPS executables is incorrect, therefore you need to add C<#define FSHELL_NO_PIPS_SUPPORT> to \fshell\build\sf\platform_shared.mmh. Hopefully this is a temporary measure. =head1 Installation diff -r eb5f524dc31d -r 257450419d10 libraries/memoryaccess/MemoryAccess.mmp --- a/libraries/memoryaccess/MemoryAccess.mmp Fri Jul 09 17:31:42 2010 +0100 +++ b/libraries/memoryaccess/MemoryAccess.mmp Mon Jul 12 15:23:23 2010 +0100 @@ -36,7 +36,9 @@ source hwbreak.cia #endif -#ifdef EABI +#if defined(EABI) && !defined(GCCE) +macro SUPPORT_BREAKPOINT_STUFF +// This doesn't build with GCC-E source TrkNextInstructionAfterPC.cpp #endif diff -r eb5f524dc31d -r 257450419d10 libraries/memoryaccess/fdebuggerkernel.cpp --- a/libraries/memoryaccess/fdebuggerkernel.cpp Fri Jul 09 17:31:42 2010 +0100 +++ b/libraries/memoryaccess/fdebuggerkernel.cpp Mon Jul 12 15:23:23 2010 +0100 @@ -1496,7 +1496,7 @@ TInt DDebuggerEventHandler::MoveBreakpointToNextInstructionForThread(DThread* aThread, SBreakpoint* aBreakpoint) { -#ifdef __EABI__ +#ifdef SUPPORT_BREAKPOINT_STUFF ASSERT_BREAKPOINT_LOCKED(); TUint32 notUsed = 0; TBool aModeChange = EFalse; diff -r eb5f524dc31d -r 257450419d10 libraries/spcre/inc/tregexarg.h --- a/libraries/spcre/inc/tregexarg.h Fri Jul 09 17:31:42 2010 +0100 +++ b/libraries/spcre/inc/tregexarg.h Mon Jul 12 15:23:23 2010 +0100 @@ -51,8 +51,8 @@ // Type-specific parsers #define PCRE_MAKE_PARSER(type,name) \ - IMPORT_C TRegExArg(type* aType) : iArg(aType), iParser(name) { } \ - IMPORT_C TRegExArg(type* aType, Parser aParser) : iArg(aType), iParser(aParser) { } + inline TRegExArg(type* aType) : iArg(aType), iParser(name) { } \ + inline TRegExArg(type* aType, Parser aParser) : iArg(aType), iParser(aParser) { } PCRE_MAKE_PARSER(TChar, ParseTChar) PCRE_MAKE_PARSER(TInt8, ParseTInt8)