mirror of
https://github.com/dashpay/dash.git
synced 2024-12-24 19:42:46 +01:00
merge bitcoin#25076: native GCC 10 toolchain for Linux builds
This commit is contained in:
parent
4a36086368
commit
fe4b87cabb
@ -153,9 +153,9 @@ chain for " target " development."))
|
||||
|
||||
(define* (make-bitcoin-cross-toolchain target
|
||||
#:key
|
||||
(base-gcc-for-libc gcc-7)
|
||||
(base-gcc-for-libc base-gcc)
|
||||
(base-kernel-headers base-linux-kernel-headers)
|
||||
(base-libc (make-glibc-without-ssp glibc-2.24))
|
||||
(base-libc (make-glibc-without-ssp (make-glibc-without-werror glibc-2.24)))
|
||||
(base-gcc (make-gcc-rpath-link base-gcc)))
|
||||
"Convenience wrapper around MAKE-CROSS-TOOLCHAIN with default values
|
||||
desirable for building Dash Core release binaries."
|
||||
@ -506,6 +506,9 @@ and endian independent.")
|
||||
inspecting signatures in Mach-O binaries.")
|
||||
(license license:expat))))
|
||||
|
||||
(define (make-glibc-without-werror glibc)
|
||||
(package-with-extra-configure-variable glibc "enable_werror" "no"))
|
||||
|
||||
(define-public glibc-2.24
|
||||
(package
|
||||
(inherit glibc-2.31)
|
||||
@ -522,7 +525,8 @@ inspecting signatures in Mach-O binaries.")
|
||||
(patches (search-our-patches "glibc-ldd-x86_64.patch"
|
||||
"glibc-versioned-locpath.patch"
|
||||
"glibc-2.24-elfm-loadaddr-dynamic-rewrite.patch"
|
||||
"glibc-2.24-no-build-time-cxx-header-run.patch"))))))
|
||||
"glibc-2.24-no-build-time-cxx-header-run.patch"
|
||||
"glibc-2.24-fcommon.patch"))))))
|
||||
|
||||
(define-public glibc-2.27/bitcoin-patched
|
||||
(package
|
||||
@ -538,7 +542,8 @@ inspecting signatures in Mach-O binaries.")
|
||||
(base32
|
||||
"1b2n1gxv9f4fd5yy68qjbnarhf8mf4vmlxk10i3328c1w5pmp0ca"))
|
||||
(patches (search-our-patches "glibc-ldd-x86_64.patch"
|
||||
"glibc-2.27-riscv64-Use-__has_include__-to-include-asm-syscalls.h.patch"))))))
|
||||
"glibc-2.27-riscv64-Use-__has_include-to-include-asm-syscalls.h.patch"
|
||||
"glibc-2.27-dont-redefine-nss-database.patch"))))))
|
||||
|
||||
(define-public lief
|
||||
(package
|
||||
@ -601,6 +606,9 @@ parse, modify and abstract ELF, PE and MachO formats.")
|
||||
automake
|
||||
pkg-config
|
||||
bison
|
||||
;; Native GCC 10 toolchain
|
||||
gcc-toolchain-10
|
||||
(list gcc-toolchain-10 "static")
|
||||
;; Scripting
|
||||
perl
|
||||
python-minimal ;; (3.9)
|
||||
@ -611,26 +619,17 @@ parse, modify and abstract ELF, PE and MachO formats.")
|
||||
(let ((target (getenv "HOST")))
|
||||
(cond ((string-suffix? "-mingw32" target)
|
||||
;; Windows
|
||||
(list ;; Native GCC 10 toolchain
|
||||
gcc-toolchain-10
|
||||
(list gcc-toolchain-10 "static")
|
||||
zip
|
||||
(list zip
|
||||
(make-mingw-pthreads-cross-toolchain "x86_64-w64-mingw32")
|
||||
(make-nsis-for-gcc-10 nsis-x86_64)
|
||||
osslsigncode))
|
||||
((string-contains target "-linux-")
|
||||
(list ;; Native GCC 7 toolchain
|
||||
gcc-toolchain-7
|
||||
(list gcc-toolchain-7 "static")
|
||||
(cond ((string-contains target "riscv64-")
|
||||
(list (cond ((string-contains target "riscv64-")
|
||||
(make-bitcoin-cross-toolchain target
|
||||
#:base-libc glibc-2.27/bitcoin-patched
|
||||
#:base-libc (make-glibc-without-werror glibc-2.27/bitcoin-patched)
|
||||
#:base-kernel-headers base-linux-kernel-headers))
|
||||
(else
|
||||
(make-bitcoin-cross-toolchain target)))))
|
||||
((string-contains target "darwin")
|
||||
(list ;; Native GCC 10 toolchain
|
||||
gcc-toolchain-10
|
||||
(list gcc-toolchain-10 "static")
|
||||
clang-toolchain-10 binutils cmake-minimal xorriso python-signapple))
|
||||
(list clang-toolchain-10 binutils cmake-minimal xorriso python-signapple))
|
||||
(else '())))))
|
||||
|
32
contrib/guix/patches/glibc-2.24-fcommon.patch
Normal file
32
contrib/guix/patches/glibc-2.24-fcommon.patch
Normal file
@ -0,0 +1,32 @@
|
||||
commit 264a4a0dbe1f4369db315080034b500bed66016c
|
||||
Author: fanquake <fanquake@gmail.com>
|
||||
Date: Fri May 6 11:03:04 2022 +0100
|
||||
|
||||
build: use -fcommon to retain legacy behaviour with GCC 10
|
||||
|
||||
GCC 10 started using -fno-common by default, which causes issues with
|
||||
the powerpc builds using gibc 2.24. A patch was commited to glibc to fix
|
||||
the issue, 18363b4f010da9ba459b13310b113ac0647c2fcc but is non-trvial
|
||||
to backport, and was broken in at least one way, see the followup in
|
||||
commit 7650321ce037302bfc2f026aa19e0213b8d02fe6.
|
||||
|
||||
For now, retain the legacy GCC behaviour by passing -fcommon when
|
||||
building glibc.
|
||||
|
||||
https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html.
|
||||
https://sourceware.org/git/?p=glibc.git;a=commit;h=18363b4f010da9ba459b13310b113ac0647c2fcc
|
||||
https://sourceware.org/git/?p=glibc.git;a=commit;h=7650321ce037302bfc2f026aa19e0213b8d02fe6
|
||||
|
||||
diff --git a/Makeconfig b/Makeconfig
|
||||
index ee379f5852..63c4a2f234 100644
|
||||
--- a/Makeconfig
|
||||
+++ b/Makeconfig
|
||||
@@ -824,7 +824,7 @@ ifeq "$(strip $(+cflags))" ""
|
||||
+cflags := $(default_cflags)
|
||||
endif # $(+cflags) == ""
|
||||
|
||||
-+cflags += $(cflags-cpu) $(+gccwarn) $(+merge-constants) $(+math-flags)
|
||||
++cflags += $(cflags-cpu) $(+gccwarn) $(+merge-constants) $(+math-flags) -fcommon
|
||||
+gcc-nowarn := -w
|
||||
|
||||
# Don't duplicate options if we inherited variables from the parent.
|
@ -0,0 +1,87 @@
|
||||
commit 78a90c2f74a2012dd3eff302189e47ff6779a757
|
||||
Author: Andreas Schwab <schwab@linux-m68k.org>
|
||||
Date: Fri Mar 2 23:07:14 2018 +0100
|
||||
|
||||
Fix multiple definitions of __nss_*_database (bug 22918)
|
||||
|
||||
(cherry picked from commit eaf6753f8aac33a36deb98c1031d1bad7b593d2d)
|
||||
|
||||
diff --git a/nscd/gai.c b/nscd/gai.c
|
||||
index d081747797..576fd0045b 100644
|
||||
--- a/nscd/gai.c
|
||||
+++ b/nscd/gai.c
|
||||
@@ -45,3 +45,6 @@
|
||||
#ifdef HAVE_LIBIDN
|
||||
# include <libidn/idn-stub.c>
|
||||
#endif
|
||||
+
|
||||
+/* Some variables normally defined in libc. */
|
||||
+service_user *__nss_hosts_database attribute_hidden;
|
||||
diff --git a/nss/nsswitch.c b/nss/nsswitch.c
|
||||
index d5e655974f..b0f0c11a3e 100644
|
||||
--- a/nss/nsswitch.c
|
||||
+++ b/nss/nsswitch.c
|
||||
@@ -62,7 +62,7 @@ static service_library *nss_new_service (name_database *database,
|
||||
|
||||
/* Declare external database variables. */
|
||||
#define DEFINE_DATABASE(name) \
|
||||
- extern service_user *__nss_##name##_database attribute_hidden; \
|
||||
+ service_user *__nss_##name##_database attribute_hidden; \
|
||||
weak_extern (__nss_##name##_database)
|
||||
#include "databases.def"
|
||||
#undef DEFINE_DATABASE
|
||||
diff --git a/nss/nsswitch.h b/nss/nsswitch.h
|
||||
index eccb535ef5..63573b9ebc 100644
|
||||
--- a/nss/nsswitch.h
|
||||
+++ b/nss/nsswitch.h
|
||||
@@ -226,10 +226,10 @@ libc_hidden_proto (__nss_hostname_digits_dots)
|
||||
#define MAX_NR_ADDRS 48
|
||||
|
||||
/* Prototypes for __nss_*_lookup2 functions. */
|
||||
-#define DEFINE_DATABASE(arg) \
|
||||
- service_user *__nss_##arg##_database attribute_hidden; \
|
||||
- int __nss_##arg##_lookup2 (service_user **, const char *, \
|
||||
- const char *, void **); \
|
||||
+#define DEFINE_DATABASE(arg) \
|
||||
+ extern service_user *__nss_##arg##_database attribute_hidden; \
|
||||
+ int __nss_##arg##_lookup2 (service_user **, const char *, \
|
||||
+ const char *, void **); \
|
||||
libc_hidden_proto (__nss_##arg##_lookup2)
|
||||
#include "databases.def"
|
||||
#undef DEFINE_DATABASE
|
||||
diff --git a/posix/tst-rfc3484-2.c b/posix/tst-rfc3484-2.c
|
||||
index f509534ca9..8c64ac59ff 100644
|
||||
--- a/posix/tst-rfc3484-2.c
|
||||
+++ b/posix/tst-rfc3484-2.c
|
||||
@@ -58,6 +58,7 @@ _res_hconf_init (void)
|
||||
#undef USE_NSCD
|
||||
#include "../sysdeps/posix/getaddrinfo.c"
|
||||
|
||||
+service_user *__nss_hosts_database attribute_hidden;
|
||||
|
||||
/* This is the beginning of the real test code. The above defines
|
||||
(among other things) the function rfc3484_sort. */
|
||||
diff --git a/posix/tst-rfc3484-3.c b/posix/tst-rfc3484-3.c
|
||||
index ae44087a10..1c61aaf844 100644
|
||||
--- a/posix/tst-rfc3484-3.c
|
||||
+++ b/posix/tst-rfc3484-3.c
|
||||
@@ -58,6 +58,7 @@ _res_hconf_init (void)
|
||||
#undef USE_NSCD
|
||||
#include "../sysdeps/posix/getaddrinfo.c"
|
||||
|
||||
+service_user *__nss_hosts_database attribute_hidden;
|
||||
|
||||
/* This is the beginning of the real test code. The above defines
|
||||
(among other things) the function rfc3484_sort. */
|
||||
diff --git a/posix/tst-rfc3484.c b/posix/tst-rfc3484.c
|
||||
index 7f191abbbc..8f45848e44 100644
|
||||
--- a/posix/tst-rfc3484.c
|
||||
+++ b/posix/tst-rfc3484.c
|
||||
@@ -58,6 +58,7 @@ _res_hconf_init (void)
|
||||
#undef USE_NSCD
|
||||
#include "../sysdeps/posix/getaddrinfo.c"
|
||||
|
||||
+service_user *__nss_hosts_database attribute_hidden;
|
||||
|
||||
/* This is the beginning of the real test code. The above defines
|
||||
(among other things) the function rfc3484_sort. */
|
@ -1,3 +1,7 @@
|
||||
Note that this has been modified from the original commit, to use __has_include
|
||||
instead of __has_include__, as the later was causing build failures with GCC 10.
|
||||
See also: http://lists.busybox.net/pipermail/buildroot/2020-July/590376.html.
|
||||
|
||||
https://sourceware.org/git/?p=glibc.git;a=commit;h=0b9c84906f653978fb8768c7ebd0ee14a47e662e
|
||||
|
||||
From 562c52cc81a4e456a62e6455feb32732049e9070 Mon Sep 17 00:00:00 2001
|
||||
@ -59,7 +63,7 @@ index d612ef4c6c..0b2042620b 100644
|
||||
#include <atomic.h>
|
||||
#include <sys/cachectl.h>
|
||||
-#include <asm/syscalls.h>
|
||||
+#if __has_include__ (<asm/syscalls.h>)
|
||||
+#if __has_include (<asm/syscalls.h>)
|
||||
+# include <asm/syscalls.h>
|
||||
+#else
|
||||
+# include <asm/unistd.h>
|
Loading…
Reference in New Issue
Block a user