File sap303956-utf16-mangling.diff of Package gcc43

Index: gcc/cp/mangle.c
===================================================================
--- gcc/cp/mangle.c.orig
+++ gcc/cp/mangle.c
@@ -1787,9 +1787,9 @@ write_builtin_type (tree type)
       if (type == wchar_type_node)
 	write_char ('w');
       else if (type == char16_type_node)
-	write_string ("u8char16_t");
+	write_string ("Ds");
       else if (type == char32_type_node)
-	write_string ("u8char32_t");
+	write_string ("Di");
       else if (TYPE_FOR_JAVA (type))
 	write_java_integer_type_codes (type);
       else
Index: libiberty/testsuite/demangle-expected
===================================================================
--- libiberty/testsuite/demangle-expected.orig
+++ libiberty/testsuite/demangle-expected
@@ -3397,26 +3397,10 @@ f
 _Z3fooc
 foo(char)
 foo
-#
---format=gnu-v3 --no-params
-_Z2f0u8char16_t
-f0(char16_t)
-f0
-#
---format=gnu-v3 --no-params
-_Z2f0Pu8char16_t
-f0(char16_t*)
-f0
-#
---format=gnu-v3 --no-params
-_Z2f0u8char32_t
-f0(char32_t)
-f0
-#
---format=gnu-v3 --no-params
-_Z2f0Pu8char32_t
-f0(char32_t*)
-f0
+# new (2008) built in types test
+--format=gnu-v3
+_Z1fDsDi
+f(char16_t, char32_t)
 #
 --format=gnu-v3 --no-params
 2CBIL_Z3foocEE
Index: libstdc++-v3/config/abi/pre/gnu.ver
===================================================================
--- libstdc++-v3/config/abi/pre/gnu.ver.orig
+++ libstdc++-v3/config/abi/pre/gnu.ver
@@ -913,11 +913,11 @@ CXXABI_1.3.2 {
 CXXABI_1.3.3 {
 
     # typeinfo for char16_t and char32_t
-    _ZTIu8char16_t;
-    _ZTIPu8char16_t;
-    _ZTIPKu8char16_t;
-    _ZTIu8char32_t;
-    _ZTIPu8char32_t;
-    _ZTIPKu8char32_t;
+    _ZTIDs;
+    _ZTIPDs;
+    _ZTIPKDs;
+    _ZTIDi;
+    _ZTIPDi;
+    _ZTIPKDi;
 
 } CXXABI_1.3.2;
Index: gcc/testsuite/g++.dg/ext/utf-mangle.C
===================================================================
--- gcc/testsuite/g++.dg/ext/utf-mangle.C.orig
+++ gcc/testsuite/g++.dg/ext/utf-mangle.C
@@ -8,7 +8,7 @@ void f1 (char32_t c) {}
 void f2 (char16_t *s) {}
 void f3 (char32_t *s) {}
 
-// { dg-final { scan-assembler "_Z2f0u8char16_t:" } }
-// { dg-final { scan-assembler "_Z2f1u8char32_t:" } }
-// { dg-final { scan-assembler "_Z2f2Pu8char16_t:" } }
-// { dg-final { scan-assembler "_Z2f3Pu8char32_t:" } }
+// { dg-final { scan-assembler "_Z2f0Ds:" } }
+// { dg-final { scan-assembler "_Z2f1Di:" } }
+// { dg-final { scan-assembler "_Z2f2PDs:" } }
+// { dg-final { scan-assembler "_Z2f3PDi:" } }
Index: gcc/ginclude/uchar.h
===================================================================
--- /dev/null
+++ gcc/ginclude/uchar.h
@@ -0,0 +1,38 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING.  If not, write to
+the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+Boston, MA 02110-1301, USA.  */
+
+/* As a special exception, if you include this header file into source
+   files compiled by GCC, this header file does not by itself cause
+   the resulting executable to be covered by the GNU General Public
+   License.  This exception does not however invalidate any other
+   reasons why the executable file might be covered by the GNU General
+   Public License.  */
+
+/*
+ * template header so that char16_t and char32_t are available
+ * in C (not only in C++).  This is not a full implementation of <uchar.h>
+ */
+
+#ifndef _UCHAR_H___
+#define _UCHAR_H___
+#ifndef __cplusplus
+typedef __CHAR16_TYPE__ char16_t;
+typedef __CHAR32_TYPE__ char32_t;
+#endif
+#endif
Index: gcc/Makefile.in
===================================================================
--- gcc/Makefile.in.orig
+++ gcc/Makefile.in
@@ -307,6 +307,7 @@ USER_H = $(srcdir)/ginclude/float.h \
 	 $(srcdir)/ginclude/stddef.h \
 	 $(srcdir)/ginclude/varargs.h \
 	 $(srcdir)/ginclude/stdfix.h \
+	 $(srcdir)/ginclude/uchar.h \
 	 $(EXTRA_HEADERS)
 
 UNWIND_H = $(srcdir)/unwind-generic.h