Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Linaro 4.9 does not have a fix for build with GCC5/6.
.. and 4.8 needs it, too. Signed-off-by: Alexey Neyman <stilor@att.net>
- Loading branch information
Showing
2 changed files
with
259 additions
and
0 deletions.
There are no files selected for viewing
138 changes: 138 additions & 0 deletions
138
patches/gcc/linaro-4.8-2015.06/132-build_gcc-5_with_gcc-6.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,138 @@ | ||
From 1e5f1089dec3af328fd03125d6778f666d0bd4e4 Mon Sep 17 00:00:00 2001 | ||
From: edlinger <edlinger@138bc75d-0d04-0410-961f-82ee72b054a4> | ||
Date: Thu, 25 Feb 2016 15:33:50 +0000 | ||
Subject: [PATCH 1/1] 2016-02-25 Bernd Edlinger <bernd.edlinger@hotmail.de> | ||
|
||
Backported from mainline | ||
2016-02-19 Jakub Jelinek <jakub@redhat.com> | ||
Bernd Edlinger <bernd.edlinger@hotmail.de> | ||
|
||
* Make-lang.in: Invoke gperf with -L C++. | ||
* cfns.gperf: Remove prototypes for hash and libc_name_p | ||
inlines. | ||
* cfns.h: Regenerated. | ||
* except.c (nothrow_libfn_p): Adjust. | ||
|
||
|
||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@233720 138bc75d-0d04-0410-961f-82ee72b054a4 | ||
diff -urpN a/gcc/cp/cfns.gperf b/gcc/cp/cfns.gperf | ||
--- a/gcc/cp/cfns.gperf 2013-01-10 12:38:27.000000000 -0800 | ||
+++ b/gcc/cp/cfns.gperf 2016-12-05 13:55:20.331616274 -0800 | ||
@@ -1,3 +1,5 @@ | ||
+%language=C++ | ||
+%define class-name libc_name | ||
%{ | ||
/* Copyright (C) 2000-2013 Free Software Foundation, Inc. | ||
|
||
@@ -16,14 +18,6 @@ for more details. | ||
You should have received a copy of the GNU General Public License | ||
along with GCC; see the file COPYING3. If not see | ||
<http://www.gnu.org/licenses/>. */ | ||
-#ifdef __GNUC__ | ||
-__inline | ||
-#endif | ||
-static unsigned int hash (const char *, unsigned int); | ||
-#ifdef __GNUC__ | ||
-__inline | ||
-#endif | ||
-const char * libc_name_p (const char *, unsigned int); | ||
%} | ||
%% | ||
# The standard C library functions, for feeding to gperf; the result is used | ||
diff -urpN a/gcc/cp/cfns.h b/gcc/cp/cfns.h | ||
--- a/gcc/cp/cfns.h 2013-01-10 12:38:27.000000000 -0800 | ||
+++ b/gcc/cp/cfns.h 2016-12-05 13:55:20.331616274 -0800 | ||
@@ -1,5 +1,5 @@ | ||
-/* ANSI-C code produced by gperf version 3.0.3 */ | ||
-/* Command-line: gperf -o -C -E -k '1-6,$' -j1 -D -N libc_name_p -L ANSI-C cfns.gperf */ | ||
+/* C++ code produced by gperf version 3.0.4 */ | ||
+/* Command-line: gperf -o -C -E -k '1-6,$' -j1 -D -N libc_name_p -L C++ --output-file cfns.h cfns.gperf */ | ||
|
||
#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ | ||
&& ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ | ||
@@ -28,7 +28,7 @@ | ||
#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>." | ||
#endif | ||
|
||
-#line 1 "cfns.gperf" | ||
+#line 3 "cfns.gperf" | ||
|
||
/* Copyright (C) 2000-2013 Free Software Foundation, Inc. | ||
|
||
@@ -47,25 +47,18 @@ for more details. | ||
You should have received a copy of the GNU General Public License | ||
along with GCC; see the file COPYING3. If not see | ||
<http://www.gnu.org/licenses/>. */ | ||
-#ifdef __GNUC__ | ||
-__inline | ||
-#endif | ||
-static unsigned int hash (const char *, unsigned int); | ||
-#ifdef __GNUC__ | ||
-__inline | ||
-#endif | ||
-const char * libc_name_p (const char *, unsigned int); | ||
/* maximum key range = 391, duplicates = 0 */ | ||
|
||
-#ifdef __GNUC__ | ||
-__inline | ||
-#else | ||
-#ifdef __cplusplus | ||
-inline | ||
-#endif | ||
-#endif | ||
-static unsigned int | ||
-hash (register const char *str, register unsigned int len) | ||
+class libc_name | ||
+{ | ||
+private: | ||
+ static inline unsigned int hash (const char *str, unsigned int len); | ||
+public: | ||
+ static const char *libc_name_p (const char *str, unsigned int len); | ||
+}; | ||
+ | ||
+inline unsigned int | ||
+libc_name::hash (register const char *str, register unsigned int len) | ||
{ | ||
static const unsigned short asso_values[] = | ||
{ | ||
@@ -122,14 +115,8 @@ hash (register const char *str, register | ||
return hval + asso_values[(unsigned char)str[len - 1]]; | ||
} | ||
|
||
-#ifdef __GNUC__ | ||
-__inline | ||
-#ifdef __GNUC_STDC_INLINE__ | ||
-__attribute__ ((__gnu_inline__)) | ||
-#endif | ||
-#endif | ||
const char * | ||
-libc_name_p (register const char *str, register unsigned int len) | ||
+libc_name::libc_name_p (register const char *str, register unsigned int len) | ||
{ | ||
enum | ||
{ | ||
diff -urpN a/gcc/cp/except.c b/gcc/cp/except.c | ||
--- a/gcc/cp/except.c 2013-10-25 06:49:48.000000000 -0700 | ||
+++ b/gcc/cp/except.c 2016-12-05 13:55:20.331616274 -0800 | ||
@@ -1025,7 +1025,8 @@ nothrow_libfn_p (const_tree fn) | ||
unless the system headers are playing rename tricks, and if | ||
they are, we don't want to be confused by them. */ | ||
id = DECL_NAME (fn); | ||
- return !!libc_name_p (IDENTIFIER_POINTER (id), IDENTIFIER_LENGTH (id)); | ||
+ return !!libc_name::libc_name_p (IDENTIFIER_POINTER (id), | ||
+ IDENTIFIER_LENGTH (id)); | ||
} | ||
|
||
/* Returns nonzero if an exception of type FROM will be caught by a | ||
diff -urpN a/gcc/cp/Make-lang.in b/gcc/cp/Make-lang.in | ||
--- a/gcc/cp/Make-lang.in 2013-01-10 12:38:27.000000000 -0800 | ||
+++ b/gcc/cp/Make-lang.in 2016-12-05 13:55:20.331616274 -0800 | ||
@@ -115,7 +115,7 @@ else | ||
# deleting the $(srcdir)/cp/cfns.h file. | ||
$(srcdir)/cp/cfns.h: | ||
endif | ||
- gperf -o -C -E -k '1-6,$$' -j1 -D -N 'libc_name_p' -L ANSI-C \ | ||
+ gperf -o -C -E -k '1-6,$$' -j1 -D -N 'libc_name_p' -L C++ \ | ||
$(srcdir)/cp/cfns.gperf --output-file $(srcdir)/cp/cfns.h | ||
|
||
# |
121 changes: 121 additions & 0 deletions
121
patches/gcc/linaro-4.9-2016.02/132-build_gcc-5_with_gcc-6.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,121 @@ | ||
diff -urpN gcc-linaro-4.9-2016.02.orig/gcc/cp/cfns.gperf gcc-linaro-4.9-2016.02/gcc/cp/cfns.gperf | ||
--- gcc-linaro-4.9-2016.02.orig/gcc/cp/cfns.gperf 2016-03-28 16:19:20.000000000 -0700 | ||
+++ gcc-linaro-4.9-2016.02/gcc/cp/cfns.gperf 2017-01-16 22:13:18.071864436 -0800 | ||
@@ -1,3 +1,5 @@ | ||
+%language=C++ | ||
+%define class-name libc_name | ||
%{ | ||
/* Copyright (C) 2000-2014 Free Software Foundation, Inc. | ||
|
||
@@ -16,14 +18,6 @@ for more details. | ||
You should have received a copy of the GNU General Public License | ||
along with GCC; see the file COPYING3. If not see | ||
<http://www.gnu.org/licenses/>. */ | ||
-#ifdef __GNUC__ | ||
-__inline | ||
-#endif | ||
-static unsigned int hash (const char *, unsigned int); | ||
-#ifdef __GNUC__ | ||
-__inline | ||
-#endif | ||
-const char * libc_name_p (const char *, unsigned int); | ||
%} | ||
%% | ||
# The standard C library functions, for feeding to gperf; the result is used | ||
diff -urpN gcc-linaro-4.9-2016.02.orig/gcc/cp/cfns.h gcc-linaro-4.9-2016.02/gcc/cp/cfns.h | ||
--- gcc-linaro-4.9-2016.02.orig/gcc/cp/cfns.h 2016-03-28 16:19:20.000000000 -0700 | ||
+++ gcc-linaro-4.9-2016.02/gcc/cp/cfns.h 2017-01-16 22:13:18.071864436 -0800 | ||
@@ -1,5 +1,5 @@ | ||
-/* ANSI-C code produced by gperf version 3.0.3 */ | ||
-/* Command-line: gperf -o -C -E -k '1-6,$' -j1 -D -N libc_name_p -L ANSI-C cfns.gperf */ | ||
+/* C++ code produced by gperf version 3.0.4 */ | ||
+/* Command-line: gperf -o -C -E -k '1-6,$' -j1 -D -N libc_name_p -L C++ --output-file cfns.h cfns.gperf */ | ||
|
||
#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ | ||
&& ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ | ||
@@ -28,7 +28,7 @@ | ||
#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>." | ||
#endif | ||
|
||
-#line 1 "cfns.gperf" | ||
+#line 3 "cfns.gperf" | ||
|
||
/* Copyright (C) 2000-2014 Free Software Foundation, Inc. | ||
|
||
@@ -47,25 +47,18 @@ for more details. | ||
You should have received a copy of the GNU General Public License | ||
along with GCC; see the file COPYING3. If not see | ||
<http://www.gnu.org/licenses/>. */ | ||
-#ifdef __GNUC__ | ||
-__inline | ||
-#endif | ||
-static unsigned int hash (const char *, unsigned int); | ||
-#ifdef __GNUC__ | ||
-__inline | ||
-#endif | ||
-const char * libc_name_p (const char *, unsigned int); | ||
/* maximum key range = 391, duplicates = 0 */ | ||
|
||
-#ifdef __GNUC__ | ||
-__inline | ||
-#else | ||
-#ifdef __cplusplus | ||
-inline | ||
-#endif | ||
-#endif | ||
-static unsigned int | ||
-hash (register const char *str, register unsigned int len) | ||
+class libc_name | ||
+{ | ||
+private: | ||
+ static inline unsigned int hash (const char *str, unsigned int len); | ||
+public: | ||
+ static const char *libc_name_p (const char *str, unsigned int len); | ||
+}; | ||
+ | ||
+inline unsigned int | ||
+libc_name::hash (register const char *str, register unsigned int len) | ||
{ | ||
static const unsigned short asso_values[] = | ||
{ | ||
@@ -122,14 +115,8 @@ hash (register const char *str, register | ||
return hval + asso_values[(unsigned char)str[len - 1]]; | ||
} | ||
|
||
-#ifdef __GNUC__ | ||
-__inline | ||
-#ifdef __GNUC_STDC_INLINE__ | ||
-__attribute__ ((__gnu_inline__)) | ||
-#endif | ||
-#endif | ||
const char * | ||
-libc_name_p (register const char *str, register unsigned int len) | ||
+libc_name::libc_name_p (register const char *str, register unsigned int len) | ||
{ | ||
enum | ||
{ | ||
diff -urpN gcc-linaro-4.9-2016.02.orig/gcc/cp/except.c gcc-linaro-4.9-2016.02/gcc/cp/except.c | ||
--- gcc-linaro-4.9-2016.02.orig/gcc/cp/except.c 2016-03-28 16:19:20.000000000 -0700 | ||
+++ gcc-linaro-4.9-2016.02/gcc/cp/except.c 2017-01-16 22:13:18.071864436 -0800 | ||
@@ -1030,7 +1030,8 @@ nothrow_libfn_p (const_tree fn) | ||
unless the system headers are playing rename tricks, and if | ||
they are, we don't want to be confused by them. */ | ||
id = DECL_NAME (fn); | ||
- return !!libc_name_p (IDENTIFIER_POINTER (id), IDENTIFIER_LENGTH (id)); | ||
+ return !!libc_name::libc_name_p (IDENTIFIER_POINTER (id), | ||
+ IDENTIFIER_LENGTH (id)); | ||
} | ||
|
||
/* Returns nonzero if an exception of type FROM will be caught by a | ||
diff -urpN gcc-linaro-4.9-2016.02.orig/gcc/cp/Make-lang.in gcc-linaro-4.9-2016.02/gcc/cp/Make-lang.in | ||
--- gcc-linaro-4.9-2016.02.orig/gcc/cp/Make-lang.in 2016-03-28 16:19:20.000000000 -0700 | ||
+++ gcc-linaro-4.9-2016.02/gcc/cp/Make-lang.in 2017-01-16 22:13:18.071864436 -0800 | ||
@@ -111,7 +111,7 @@ else | ||
# deleting the $(srcdir)/cp/cfns.h file. | ||
$(srcdir)/cp/cfns.h: | ||
endif | ||
- gperf -o -C -E -k '1-6,$$' -j1 -D -N 'libc_name_p' -L ANSI-C \ | ||
+ gperf -o -C -E -k '1-6,$$' -j1 -D -N 'libc_name_p' -L C++ \ | ||
$(srcdir)/cp/cfns.gperf --output-file $(srcdir)/cp/cfns.h | ||
|
||
# |