mirror of
https://git.savannah.gnu.org/git/guix.git
synced 2025-01-31 14:56:54 +01:00
gnu: gcc-4.7: Fix build with gcc-14.
This gets us past the ucontext_t problem, next up: In file included from /tmp/guix-build-gcc-fixed-4.7.4.drv-0/build/x86_64-unknown-linux-gnu/libstdc++-v3/include/cstdlib:66:0, from ../../../../gcc-4.7.4/libstdc++-v3/libsupc++/eh_catch.cc:25: /gnu/store/d0x6p8327didrav23b1xq9gdawn0b906-gcc-14.2.0/include/c++/stdlib.h:38:12: error: ‘std::abort’ has not been declared * gnu/packages/patches/gcc-4.7-ucontext-type-confusion.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it. * gnu/packages/gcc.scm (gcc-4.7): Use it. [arguments]: Use CXX="g++ c++03" in #:configure-flags. Change-Id: I9c43d5371aa491bb47eaba26f2d21e8500dc1955
This commit is contained in:
parent
4f7d8022f7
commit
b23e55912e
3 changed files with 30 additions and 2 deletions
|
@ -1345,6 +1345,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-4.7-ucontext-type-confusion.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 \
|
||||
|
|
|
@ -177,7 +177,8 @@ (define-public gcc-4.7
|
|||
(base32
|
||||
"10k2k71kxgay283ylbbhhs51cl55zn2q38vj5pk4k950qdnirrlj"))
|
||||
(patches (search-patches "gcc-4-compile-with-gcc-5.patch"
|
||||
"gcc-fix-texi2pod.patch"))))
|
||||
"gcc-fix-texi2pod.patch"
|
||||
"gcc-4.7-ucontext-type-confusion.patch"))))
|
||||
(build-system gnu-build-system)
|
||||
|
||||
;; Separate out the run-time support libraries because all the
|
||||
|
@ -201,7 +202,8 @@ (define-public gcc-4.7
|
|||
;; incompatible with some earlier versions.
|
||||
;; Force an earlier C++ standard while building.
|
||||
(cond
|
||||
((version-prefix? "4.8" version)
|
||||
((or (version-prefix? "4.7" version)
|
||||
(version-prefix? "4.8" version))
|
||||
`(cons "CXX=g++ -std=c++03" ,flags))
|
||||
((or (version-prefix? "4.9" version)
|
||||
(version-prefix? "5" version))
|
||||
|
|
25
gnu/packages/patches/gcc-4.7-ucontext-type-confusion.patch
Normal file
25
gnu/packages/patches/gcc-4.7-ucontext-type-confusion.patch
Normal file
|
@ -0,0 +1,25 @@
|
|||
From ef0d1ac2580b43535965eb4b31f077f355660215 Mon Sep 17 00:00:00 2001
|
||||
From: Ekaitz Zarraga <ekaitz@elenq.tech>
|
||||
Date: Wed, 30 Mar 2022 13:41:15 +0200
|
||||
Subject: [PATCH] Fix ucontext_t issue
|
||||
|
||||
---
|
||||
libgcc/config/i386/linux-unwind.h | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libgcc/config/i386/linux-unwind.h b/libgcc/config/i386/linux-unwind.h
|
||||
index cd9a9a1e2b6..62ce4e44d54 100644
|
||||
--- a/libgcc/config/i386/linux-unwind.h
|
||||
+++ b/libgcc/config/i386/linux-unwind.h
|
||||
@@ -53,7 +53,7 @@ x86_64_fallback_frame_state (struct _Unwind_Context *context,
|
||||
if (*(unsigned char *)(pc+0) == 0x48
|
||||
&& *(unsigned long long *)(pc+1) == RT_SIGRETURN_SYSCALL)
|
||||
{
|
||||
- struct ucontext *uc_ = context->cfa;
|
||||
+ struct ucontext_t *uc_ = context->cfa;
|
||||
/* The void * cast is necessary to avoid an aliasing warning.
|
||||
The aliasing warning is correct, but should not be a problem
|
||||
because it does not alias anything. */
|
||||
--
|
||||
2.46.0
|
||||
|
Loading…
Reference in a new issue