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