all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Thiago Jung Bauermann via Bug reports for GNU Guix <bug-guix@gnu.org>
To: 49935@debbugs.gnu.org
Cc: Thiago Jung Bauermann <bauermann@kolabnow.com>
Subject: bug#49935: [PATCH] gnu: gcc-4.8: Fix build with GCC 6 and later
Date: Sat,  7 Aug 2021 20:23:00 -0300	[thread overview]
Message-ID: <20210807232300.1074458-1-bauermann@kolabnow.com> (raw)
In-Reply-To: <3505131.mCAMElSiHm@popigai>

Versions of GCC earlier than 6 need this change in order to be built by GCC
6 and later. At the time, the fix was backported to GCC 4.9 and GCC 5 but
not GCC 4.8.

Therefore, backport the fix from GCC 4.9 to GCC 4.8.

* gnu/packages/gcc.scm (gcc-4.8)[source]: Apply
gcc-4.8-fix-build-with-newer-gcc.patch.
* gnu/packages/patches/gcc-4.8-fix-build-with-newer-gcc.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add new file.
---

Hi,

This is the patch I mentioned in my previous email. Despite the subject
and the name of the patch file, this change is necessary but unfortunately
not sufficient to make GCC 4.8 build with GCC 6 or later.

This patch solves the same problem as gcc-4-compile-with-gcc-5.patch and
gcc-4.6-gnu-inline.patch (which are actually the exact same patch).

Regards,
Thiago

 gnu/local.mk                                  |   1 +
 gnu/packages/gcc.scm                          |   4 +-
 .../gcc-4.8-fix-build-with-newer-gcc.patch    | 181 ++++++++++++++++++
 3 files changed, 185 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/patches/gcc-4.8-fix-build-with-newer-gcc.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 61ac39618a73..663f48f1833c 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1059,6 +1059,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/gcc-cross-environment-variables.patch	\
   %D%/packages/patches/gcc-fix-texi2pod.patch			\
   %D%/packages/patches/gcc-4.8-libsanitizer-fix.patch		\
+  %D%/packages/patches/gcc-4.8-fix-build-with-newer-gcc.patch	\
   %D%/packages/patches/gcc-4.9-libsanitizer-fix.patch		\
   %D%/packages/patches/gcc-4.9-libsanitizer-ustat.patch		\
   %D%/packages/patches/gcc-libsanitizer-ustat.patch		\
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index 2fe30b13210e..586673042a1c 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -383,7 +383,9 @@ Go.  It also includes runtime support libraries for these languages.")
               (patches (search-patches "gcc-arm-link-spec-fix.patch"
                                        "gcc-4.8-libsanitizer-fix.patch"
                                        "gcc-asan-missing-include.patch"
-                                       "gcc-fix-texi2pod.patch"))
+                                       "gcc-fix-texi2pod.patch"
+                                       ;; See https://gcc.gnu.org/legacy-ml/gcc-patches/2016-02/msg01409.html
+                                       "gcc-4.8-fix-build-with-newer-gcc.patch"))
               (modules '((guix build utils)))
               ;; This is required for building with glibc-2.26.
               ;; https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81712
diff --git a/gnu/packages/patches/gcc-4.8-fix-build-with-newer-gcc.patch b/gnu/packages/patches/gcc-4.8-fix-build-with-newer-gcc.patch
new file mode 100644
index 000000000000..e2fe2af03d08
--- /dev/null
+++ b/gnu/packages/patches/gcc-4.8-fix-build-with-newer-gcc.patch
@@ -0,0 +1,181 @@
+From 4c212bc2507fc8ab8caba7c5afc1257707572c45 Mon Sep 17 00:00:00 2001
+From: Bernd Edlinger <bernd.edlinger@hotmail.de>
+Date: Thu, 25 Feb 2016 15:36:41 +0000
+Subject: [PATCH] backport: Make-lang.in: Invoke gperf with -L C++.
+
+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.
+
+From-SVN: r233721
+---
+
+Obtained from:
+
+https://gcc.gnu.org/git/?p=gcc.git;a=patch;h=4c212bc2507fc8ab8caba7c5afc1257707572c45
+
+The gcc/cp/ChangeLog hunk was modified to apply on top of gcc-4.8's gcc/cp/ChangeLog.
+
+ gcc/cp/ChangeLog    | 12 ++++++++++++
+ gcc/cp/Make-lang.in |  2 +-
+ gcc/cp/cfns.gperf   | 10 ++--------
+ gcc/cp/cfns.h       | 41 ++++++++++++++---------------------------
+ gcc/cp/except.c     |  3 ++-
+ 5 files changed, 31 insertions(+), 37 deletions(-)
+
+diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
+index 02776465da7..8d014bef83c 100644
+--- a/gcc/cp/ChangeLog
++++ b/gcc/cp/ChangeLog
+@@ -1,3 +1,15 @@
++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.
++
+ 2015-06-23  Release Manager
+ 
+ 	* GCC 4.8.5 released.
+diff --git a/gcc/cp/Make-lang.in b/gcc/cp/Make-lang.in
+index bd1c1d78f88..a0ea0d48359 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
+ 
+ #\f
+diff --git a/gcc/cp/cfns.gperf b/gcc/cp/cfns.gperf
+index 05ca753927e..d9b16b800ef 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 c845ddf08ea..65801d1ae31 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 221971ac956..32340f5ae83 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
+-- 
+2.27.0
+




  reply	other threads:[~2021-08-07 23:24 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-08-07 23:07 bug#49935: gcc-4.8 fails to build with recent GCC versions Thiago Jung Bauermann via Bug reports for GNU Guix
2021-08-07 23:23 ` Thiago Jung Bauermann via Bug reports for GNU Guix [this message]
2024-01-19  8:33 ` Thomas Schwinge

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210807232300.1074458-1-bauermann@kolabnow.com \
    --to=bug-guix@gnu.org \
    --cc=49935@debbugs.gnu.org \
    --cc=bauermann@kolabnow.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.