mirror of
https://codeberg.org/guix/guix.git
synced 2025-10-02 02:15:12 +00:00
gnu: gcc: Fix compilation of libstdc++ for GCC 7 to 13.
With the introduction of GCC 14 as the default compiler, compilation of libstdc++ of all previous versions would fail due to a different signature for ‘__cxa_call_terminate’ (a builtin in GCC 14). This fixes it. * gnu/packages/patches/gcc-libstdc++-newer-gcc.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. * gnu/packages/gcc.scm (gcc-7, gcc-8, gcc-9, gcc-10) (gcc-11, gcc-12, gcc-13): Use it. Change-Id: I84dc26e46d56259d7d610f19b0521fa9c5499d5e
This commit is contained in:
parent
ca8e8e206b
commit
42f7c1bb17
3 changed files with 48 additions and 8 deletions
|
@ -1370,6 +1370,7 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/gcc-cross-environment-variables.patch \
|
||||
%D%/packages/patches/gcc-cross-gxx-include-dir.patch \
|
||||
%D%/packages/patches/gcc-fix-texi2pod.patch \
|
||||
%D%/packages/patches/gcc-libstdc++-newer-gcc.patch \
|
||||
%D%/packages/patches/gcc-4.8-libsanitizer-fix.patch \
|
||||
%D%/packages/patches/gcc-4.9-inline.patch \
|
||||
%D%/packages/patches/gcc-4.9-libsanitizer-fix.patch \
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2012-2024 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2012-2025 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw@netris.org>
|
||||
;;; Copyright © 2014, 2015, 2016, 2017, 2019, 2021 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2015, 2023 Andreas Enge <andreas@enge.fr>
|
||||
|
@ -695,7 +695,8 @@ Go. It also includes runtime support libraries for these languages.")
|
|||
(patches (search-patches "gcc-strmov-store-file-names.patch"
|
||||
"gcc-7-libsanitizer-mode-size.patch"
|
||||
"gcc-7-libsanitizer-fsconfig-command.patch"
|
||||
"gcc-5.0-libvtv-runpath.patch"))))
|
||||
"gcc-5.0-libvtv-runpath.patch"
|
||||
"gcc-libstdc++-newer-gcc.patch"))))
|
||||
(description
|
||||
"GCC is the GNU Compiler Collection. It provides compiler front-ends
|
||||
for several languages, including C, C++, Objective-C, Fortran, Ada, and Go.
|
||||
|
@ -722,7 +723,8 @@ It also includes runtime support libraries for these languages.")
|
|||
(patches (search-patches "gcc-8-strmov-store-file-names.patch"
|
||||
"gcc-7-libsanitizer-fsconfig-command.patch"
|
||||
"gcc-5.0-libvtv-runpath.patch"
|
||||
"gcc-8-sort-libtool-find-output.patch"))
|
||||
"gcc-8-sort-libtool-find-output.patch"
|
||||
"gcc-libstdc++-newer-gcc.patch"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet gcc-canadian-cross-objdump-snippet)))))
|
||||
|
||||
|
@ -742,7 +744,8 @@ It also includes runtime support libraries for these languages.")
|
|||
"gcc-13.2.0-libstdc++-info-install-fix.patch"
|
||||
"gcc-9-strmov-store-file-names.patch"
|
||||
"gcc-9-asan-fix-limits-include.patch"
|
||||
"gcc-5.0-libvtv-runpath.patch"))
|
||||
"gcc-5.0-libvtv-runpath.patch"
|
||||
"gcc-libstdc++-newer-gcc.patch"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet gcc-canadian-cross-objdump-snippet)))))
|
||||
|
||||
|
@ -759,7 +762,8 @@ It also includes runtime support libraries for these languages.")
|
|||
"1h87lcfaga0ydsf4pkhwlnjr8mky5ix8npbv6iy3jvzlzm1ra415"))
|
||||
(patches (search-patches "gcc-9-strmov-store-file-names.patch"
|
||||
"gcc-5.0-libvtv-runpath.patch"
|
||||
"gcc-10-libsanitizer-no-crypt.patch"))
|
||||
"gcc-10-libsanitizer-no-crypt.patch"
|
||||
"gcc-libstdc++-newer-gcc.patch"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet gcc-canadian-cross-objdump-snippet)))
|
||||
(properties
|
||||
|
@ -785,7 +789,8 @@ It also includes runtime support libraries for these languages.")
|
|||
(patches (search-patches "gcc-9-strmov-store-file-names.patch"
|
||||
"gcc-5.0-libvtv-runpath.patch"
|
||||
"gcc-10-libsanitizer-no-crypt.patch"
|
||||
"gcc-11-libstdc++-hurd-libpthread.patch"))
|
||||
"gcc-11-libstdc++-hurd-libpthread.patch"
|
||||
"gcc-libstdc++-newer-gcc.patch"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet gcc-canadian-cross-objdump-snippet)))
|
||||
(properties
|
||||
|
@ -811,7 +816,8 @@ It also includes runtime support libraries for these languages.")
|
|||
(patches (search-patches "gcc-12-strmov-store-file-names.patch"
|
||||
"gcc-5.0-libvtv-runpath.patch"
|
||||
"gcc-12-libsanitizer-no-crypt.patch"
|
||||
"gcc-11-libstdc++-hurd-libpthread.patch"))
|
||||
"gcc-11-libstdc++-hurd-libpthread.patch"
|
||||
"gcc-libstdc++-newer-gcc.patch"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet gcc-canadian-cross-objdump-snippet)))
|
||||
(properties
|
||||
|
@ -836,7 +842,8 @@ It also includes runtime support libraries for these languages.")
|
|||
"10y0l1hx1haz4cj4d4g9f2ci5h7z9555i52f90zs2hwm3iifji88"))
|
||||
(patches (search-patches "gcc-12-strmov-store-file-names.patch"
|
||||
"gcc-5.0-libvtv-runpath.patch"
|
||||
"gcc-13-libsanitizer-no-crypt.patch"))
|
||||
"gcc-13-libsanitizer-no-crypt.patch"
|
||||
"gcc-libstdc++-newer-gcc.patch"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet gcc-canadian-cross-objdump-snippet)))
|
||||
(arguments
|
||||
|
|
32
gnu/packages/patches/gcc-libstdc++-newer-gcc.patch
Normal file
32
gnu/packages/patches/gcc-libstdc++-newer-gcc.patch
Normal file
|
@ -0,0 +1,32 @@
|
|||
Building this file with GCC 14 leads to this error:
|
||||
|
||||
../../libstdc++-v3/libsupc++/eh_call.cc:39:1: warning: new declaration ‘void __cxa_call_terminate(_Unwind_Exception*)’ ambiguates built-in declaration ‘void __cxa_call_terminate(void*)’ [-Wbuiltin-declaration-mismatch]
|
||||
39 | __cxa_call_terminate(_Unwind_Exception* ue_header) throw ()
|
||||
| ^~~~~~~~~~~~~~~~~~~~
|
||||
../../libstdc++-v3/libsupc++/eh_call.cc: In function ‘void __cxa_call_terminate(_Unwind_Exception*)’:
|
||||
../../libstdc++-v3/libsupc++/eh_call.cc:39:1: internal compiler error: in gimple_build_eh_must_not_throw, at gimple.cc:730
|
||||
0x7fbc43241bd6 __libc_start_call_main
|
||||
???:0
|
||||
0x7fbc43241c94 __libc_start_main_alias_1
|
||||
???:0
|
||||
Please submit a full bug report, with preprocessed source.
|
||||
Please include the complete backtrace with any bug report.
|
||||
See <https://gcc.gnu.org/bugs/> for instructions.
|
||||
|
||||
Work around it.
|
||||
|
||||
diff --git a/libstdc++-v3/libsupc++/eh_call.cc b/libstdc++-v3/libsupc++/eh_call.cc
|
||||
index bf864f692..4f7ade71e 100644
|
||||
--- a/libstdc++-v3/libsupc++/eh_call.cc
|
||||
+++ b/libstdc++-v3/libsupc++/eh_call.cc
|
||||
@@ -36,8 +36,9 @@ using namespace __cxxabiv1;
|
||||
// terminate.
|
||||
|
||||
extern "C" void
|
||||
-__cxa_call_terminate(_Unwind_Exception* ue_header) throw ()
|
||||
+__cxa_call_terminate(void *arg) throw ()
|
||||
{
|
||||
+ _Unwind_Exception *ue_header = (_Unwind_Exception *) arg;
|
||||
|
||||
if (ue_header)
|
||||
{
|
Loading…
Add table
Add a link
Reference in a new issue