epoc32/include/gcce/gcce.h
branchSymbian3
changeset 4 837f303aceeb
parent 2 2fe1408b6811
--- a/epoc32/include/gcce/gcce.h	Wed Mar 31 12:27:01 2010 +0100
+++ b/epoc32/include/gcce/gcce.h	Wed Mar 31 12:33:34 2010 +0100
@@ -1,9 +1,9 @@
 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
+// under the terms of the License "ARM EABI LICENCE.txt"
 // which accompanies this distribution, and is available
-// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
+// in kernel/eka/compsupp.
 //
 // Initial Contributors:
 // Nokia Corporation - initial contribution.
@@ -17,8 +17,6 @@
 // 
 //
 
-
-
 /**
  @file
  @publishedAll
@@ -30,12 +28,17 @@
 #endif
 
 // stuff from e32def.h
+
 #define __NO_CLASS_CONSTS__
 #define __NORETURN__ __declspec(noreturn)
 #define __NORETURN_TERMINATOR()
+
 #define IMPORT_C __declspec(dllimport) 
 #define EXPORT_C __declspec(dllexport)
 
+#define IMPORT_D __declspec(dllimport) 
+#define EXPORT_D __declspec(dllexport)
+
 
 
 
@@ -92,8 +95,9 @@
 #define __TText_defined
 
 // __NAKED__ from cpudefs.h
-#define __NAKED__ __asm
-#define ____ONLY_USE_NAKED_IN_CIA____ __asm
+#define __NAKED__ __declspec(naked)
+#define ____ONLY_USE_NAKED_IN_CIA____ __declspec(naked)
+#define __WEAK__  __attribute__((weak))
 
 // Int64 and Uint64 from nkern\nklib.h
 typedef long long Int64;
@@ -103,24 +107,29 @@
 // These should be used by e.g. stdlib
 
 #ifdef __cplusplus
-    namespace std {
-        extern "C" {
-#endif  /* __cplusplus */
+    namespace std { extern "C" {
+#endif
 
-typedef struct __va_list { void *__ap; } va_list;
-
+    #if __GNUC__ < 4
+    typedef struct __va_list { void *__ap; } va_list;
+    #else
+    typedef __builtin_va_list va_list;
+    #endif
 
 #ifdef __cplusplus
-	}  /* extern "C" */
-    }  /* namespace std */
-
+	} }
     using ::std::va_list;
 #endif
 
+#if __GNUC__ < 4
 #define va_start(ap, parmN) __builtin_va_start(ap.__ap, parmN)
-#define va_arg(ap, type) __builtin_va_arg(ap.__ap, type)
-#define va_end(ap) __builtin_va_end(ap.__ap)
-
+#define va_arg(ap, type)    __builtin_va_arg(ap.__ap, type)
+#define va_end(ap)          __builtin_va_end(ap.__ap)
+#else
+#define va_start(ap, parmN) __builtin_va_start(ap, parmN)
+#define va_arg(ap, type)    __builtin_va_arg(ap, type)
+#define va_end(ap)          __builtin_va_end(ap)
+#endif
 
 #define VA_LIST va_list
 #define _VA_LIST_DEFINED //To deal with stdarg.h
@@ -151,8 +160,9 @@
 
 //#define __EARLY_DEBUG__
 
-// Deal with operator new issues here
-#include "../symcpp.h"
+#ifndef __SYMBIAN_STDCPP_SUPPORT__
+	#include <symcpp.h>
+#endif
 
 #ifdef __cplusplus
 // Support for throwing exceptions through embedded assembler
@@ -163,3 +173,4 @@
 #define __EH_FRAME_SAVE1(reg,offset) FRAME SAVE {reg}, offset
 
 #endif
+