Fixes for GCC-E 4.4.1 and updated docs.
authorTom Sutcliffe <thomas.sutcliffe@accenture.com>
Mon, 12 Jul 2010 15:23:23 +0100
changeset 9 257450419d10
parent 8 eb5f524dc31d
child 10 ba0a96c1cc51
Fixes for GCC-E 4.4.1 and updated docs.
documentation/getting_started.pod
libraries/memoryaccess/MemoryAccess.mmp
libraries/memoryaccess/fdebuggerkernel.cpp
libraries/spcre/inc/tregexarg.h
--- 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<gcce>
 
-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<Note:> 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<sbs -c armv5_urel -c winscw_udeb>. We'll fix this as soon as we can!
+I<Note:> 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<sbs -c armv5_urel -c winscw_udeb>. 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<Note:> 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
 
--- 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
 
--- 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;
--- 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)