123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- From: Matthias Schiffer <mschiffer@universe-factory.net>
- Date: Mon, 9 May 2016 00:16:38 +0200
- Subject: toolchain: gcc: fix build with GCC 6
- At least for GCC 4.8, which is used by most targets.
- Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
- diff --git a/toolchain/gcc/patches/4.8-linaro/030-gcc-6-compile.patch b/toolchain/gcc/patches/4.8-linaro/030-gcc-6-compile.patch
- new file mode 100644
- index 0000000..c74f2aa
- --- /dev/null
- +++ b/toolchain/gcc/patches/4.8-linaro/030-gcc-6-compile.patch
- @@ -0,0 +1,130 @@
- +Upstream commit r233721
- +
- +diff --git a/gcc/cp/Make-lang.in b/gcc/cp/Make-lang.in
- +index bd1c1d7..a0ea0d4 100644
- +--- a/gcc/cp/Make-lang.in
- ++++ b/gcc/cp/Make-lang.in
- +@@ -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
- +
- + #
- +diff --git a/gcc/cp/cfns.gperf b/gcc/cp/cfns.gperf
- +index 05ca753..d9b16b8 100644
- +--- a/gcc/cp/cfns.gperf
- ++++ b/gcc/cp/cfns.gperf
- +@@ -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 --git a/gcc/cp/cfns.h b/gcc/cp/cfns.h
- +index c845ddf..65801d1 100644
- +--- a/gcc/cp/cfns.h
- ++++ b/gcc/cp/cfns.h
- +@@ -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 unsigned int len)
- + 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 --git a/gcc/cp/except.c b/gcc/cp/except.c
- +index 221971a..32340f5 100644
- +--- a/gcc/cp/except.c
- ++++ b/gcc/cp/except.c
- +@@ -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
- +--
- +1.7.1
- +
|