mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-02 09:46:52 -05:00
Merge bitcoin/bitcoin#27029: guix: consolidate to glibc 2.27 for Linux builds
d5d4b75840
guix: combine glibc hardening options into hardened-glibc (fanquake)c49f2b8eb5
guix: remove no-longer needed powerpc workaround (fanquake)74c9893989
guix: use glibc 2.27 for all Linux builds (fanquake) Pull request description: Build against glibc 2.27 for all Linux builds (previously only used for RISC-V), and at the same time, increase our minimum required glibc to 2.27 (2018). This would drop support for Ubuntu Xenial (16.04) & Debian Stretch (9), from the produced release binaries. Compiling from source on those systems may be possible, assuming you can install a recent enough compiler/toolchain etc. ACKs for top commit: hebasto: ACKd5d4b75840
, I have reviewed the code and it looks OK, I agree it can be merged. Tree-SHA512: 910f0ef45b4558f2a45d35a5c1c39aaac97e8aff086dc4fc1eddbb80c0b6e4bd23667d64e21d0fd42e4db37b6f26f447ca5d1150bb861128af7e71fb42835cf8
This commit is contained in:
commit
fe1b325688
12 changed files with 33 additions and 365 deletions
|
@ -15,19 +15,19 @@ from typing import List, Dict
|
||||||
|
|
||||||
import lief #type:ignore
|
import lief #type:ignore
|
||||||
|
|
||||||
# Debian 9 (Stretch) EOL: 2022. https://wiki.debian.org/DebianReleases#Production_Releases
|
# Debian 10 (Buster) EOL: 2024. https://wiki.debian.org/LTS
|
||||||
#
|
#
|
||||||
# - g++ version 6.3.0 (https://packages.debian.org/search?suite=stretch&arch=any&searchon=names&keywords=g%2B%2B)
|
# - libgcc version 8.3.0 (https://packages.debian.org/search?suite=buster&arch=any&searchon=names&keywords=libgcc1)
|
||||||
# - libc version 2.24 (https://packages.debian.org/search?suite=stretch&arch=any&searchon=names&keywords=libc6)
|
# - libc version 2.28 (https://packages.debian.org/search?suite=buster&arch=any&searchon=names&keywords=libc6)
|
||||||
#
|
#
|
||||||
# Ubuntu 16.04 (Xenial) EOL: 2026. https://wiki.ubuntu.com/Releases
|
# Ubuntu 18.04 (Bionic) EOL: 2028. https://wiki.ubuntu.com/ReleaseTeam
|
||||||
#
|
#
|
||||||
# - g++ version 5.3.1
|
# - libgcc version 8.4.0 (https://packages.ubuntu.com/bionic/libgcc1)
|
||||||
# - libc version 2.23
|
# - libc version 2.27 (https://packages.ubuntu.com/bionic/libc6)
|
||||||
#
|
#
|
||||||
# CentOS Stream 8 EOL: 2024. https://wiki.centos.org/About/Product
|
# CentOS Stream 8 EOL: 2024. https://wiki.centos.org/About/Product
|
||||||
#
|
#
|
||||||
# - g++ version 8.5.0 (http://mirror.centos.org/centos/8-stream/AppStream/x86_64/os/Packages/)
|
# - libgcc version 8.5.0 (http://mirror.centos.org/centos/8-stream/AppStream/x86_64/os/Packages/)
|
||||||
# - libc version 2.28 (http://mirror.centos.org/centos/8-stream/AppStream/x86_64/os/Packages/)
|
# - libc version 2.28 (http://mirror.centos.org/centos/8-stream/AppStream/x86_64/os/Packages/)
|
||||||
#
|
#
|
||||||
# See https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html for more info.
|
# See https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html for more info.
|
||||||
|
@ -35,10 +35,10 @@ import lief #type:ignore
|
||||||
MAX_VERSIONS = {
|
MAX_VERSIONS = {
|
||||||
'GCC': (4,8,0),
|
'GCC': (4,8,0),
|
||||||
'GLIBC': {
|
'GLIBC': {
|
||||||
lief.ELF.ARCH.x86_64: (2,18),
|
lief.ELF.ARCH.x86_64: (2,27),
|
||||||
lief.ELF.ARCH.ARM: (2,18),
|
lief.ELF.ARCH.ARM: (2,27),
|
||||||
lief.ELF.ARCH.AARCH64:(2,18),
|
lief.ELF.ARCH.AARCH64:(2,27),
|
||||||
lief.ELF.ARCH.PPC64: (2,18),
|
lief.ELF.ARCH.PPC64: (2,27),
|
||||||
lief.ELF.ARCH.RISCV: (2,27),
|
lief.ELF.ARCH.RISCV: (2,27),
|
||||||
},
|
},
|
||||||
'LIBATOMIC': (1,0),
|
'LIBATOMIC': (1,0),
|
||||||
|
|
|
@ -38,31 +38,6 @@ class TestSymbolChecks(unittest.TestCase):
|
||||||
executable = 'test1'
|
executable = 'test1'
|
||||||
cc = determine_wellknown_cmd('CC', 'gcc')
|
cc = determine_wellknown_cmd('CC', 'gcc')
|
||||||
|
|
||||||
# there's no way to do this test for RISC-V at the moment; we build for
|
|
||||||
# RISC-V in a glibc 2.27 environment and we allow all symbols from 2.27.
|
|
||||||
if 'riscv' in get_machine(cc):
|
|
||||||
self.skipTest("test not available for RISC-V")
|
|
||||||
|
|
||||||
# nextup was introduced in GLIBC 2.24, so is newer than our supported
|
|
||||||
# glibc (2.18), and available in our release build environment (2.24).
|
|
||||||
with open(source, 'w', encoding="utf8") as f:
|
|
||||||
f.write('''
|
|
||||||
#define _GNU_SOURCE
|
|
||||||
#include <math.h>
|
|
||||||
|
|
||||||
double nextup(double x);
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
nextup(3.14);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
''')
|
|
||||||
|
|
||||||
self.assertEqual(call_symbol_check(cc, source, executable, ['-lm']),
|
|
||||||
(1, executable + ': symbol nextup from unsupported version GLIBC_2.24(3)\n' +
|
|
||||||
executable + ': failed IMPORTED_SYMBOLS'))
|
|
||||||
|
|
||||||
# -lutil is part of the libc6 package so a safe bet that it's installed
|
# -lutil is part of the libc6 package so a safe bet that it's installed
|
||||||
# it's also out of context enough that it's unlikely to ever become a real dependency
|
# it's also out of context enough that it's unlikely to ever become a real dependency
|
||||||
source = 'test2.c'
|
source = 'test2.c'
|
||||||
|
|
|
@ -238,13 +238,6 @@ case "$HOST" in
|
||||||
*mingw*) HOST_LDFLAGS="-Wl,--no-insert-timestamp" ;;
|
*mingw*) HOST_LDFLAGS="-Wl,--no-insert-timestamp" ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# Using --no-tls-get-addr-optimize retains compatibility with glibc 2.18, by
|
|
||||||
# avoiding a PowerPC64 optimisation available in glibc 2.22 and later.
|
|
||||||
# https://sourceware.org/binutils/docs-2.35/ld/PowerPC64-ELF64.html
|
|
||||||
case "$HOST" in
|
|
||||||
*powerpc64*) HOST_LDFLAGS="${HOST_LDFLAGS} -Wl,--no-tls-get-addr-optimize" ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# Make $HOST-specific native binaries from depends available in $PATH
|
# Make $HOST-specific native binaries from depends available in $PATH
|
||||||
export PATH="${BASEPREFIX}/${HOST}/native/bin:${PATH}"
|
export PATH="${BASEPREFIX}/${HOST}/native/bin:${PATH}"
|
||||||
mkdir -p "$DISTSRC"
|
mkdir -p "$DISTSRC"
|
||||||
|
|
|
@ -147,7 +147,7 @@ chain for " target " development."))
|
||||||
#:key
|
#:key
|
||||||
(base-gcc-for-libc base-gcc)
|
(base-gcc-for-libc base-gcc)
|
||||||
(base-kernel-headers base-linux-kernel-headers)
|
(base-kernel-headers base-linux-kernel-headers)
|
||||||
(base-libc (make-glibc-with-bind-now (make-glibc-without-werror glibc-2.24)))
|
(base-libc (hardened-glibc (make-glibc-without-werror glibc-2.27)))
|
||||||
(base-gcc (make-gcc-rpath-link (hardened-gcc base-gcc))))
|
(base-gcc (make-gcc-rpath-link (hardened-gcc base-gcc))))
|
||||||
"Convenience wrapper around MAKE-CROSS-TOOLCHAIN with default values
|
"Convenience wrapper around MAKE-CROSS-TOOLCHAIN with default values
|
||||||
desirable for building Bitcoin Core release binaries."
|
desirable for building Bitcoin Core release binaries."
|
||||||
|
@ -537,33 +537,14 @@ inspecting signatures in Mach-O binaries.")
|
||||||
(define (make-glibc-without-werror glibc)
|
(define (make-glibc-without-werror glibc)
|
||||||
(package-with-extra-configure-variable glibc "enable_werror" "no"))
|
(package-with-extra-configure-variable glibc "enable_werror" "no"))
|
||||||
|
|
||||||
(define (make-glibc-with-stack-protector glibc)
|
;; https://www.gnu.org/software/libc/manual/html_node/Configuring-and-compiling.html
|
||||||
(package-with-extra-configure-variable glibc "--enable-stack-protector" "all"))
|
(define (hardened-glibc glibc)
|
||||||
|
(package-with-extra-configure-variable (
|
||||||
|
package-with-extra-configure-variable glibc
|
||||||
|
"--enable-stack-protector" "all")
|
||||||
|
"--enable-bind-now" "yes"))
|
||||||
|
|
||||||
(define (make-glibc-with-bind-now glibc)
|
(define-public glibc-2.27
|
||||||
(package-with-extra-configure-variable glibc "--enable-bind-now" "yes"))
|
|
||||||
|
|
||||||
(define-public glibc-2.24
|
|
||||||
(package
|
|
||||||
(inherit glibc-2.31)
|
|
||||||
(version "2.24")
|
|
||||||
(source (origin
|
|
||||||
(method git-fetch)
|
|
||||||
(uri (git-reference
|
|
||||||
(url "https://sourceware.org/git/glibc.git")
|
|
||||||
(commit "0d7f1ed30969886c8dde62fbf7d2c79967d4bace")))
|
|
||||||
(file-name (git-file-name "glibc" "0d7f1ed30969886c8dde62fbf7d2c79967d4bace"))
|
|
||||||
(sha256
|
|
||||||
(base32
|
|
||||||
"0g5hryia5v1k0qx97qffgwzrz4lr4jw3s5kj04yllhswsxyjbic3"))
|
|
||||||
(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-fcommon.patch"
|
|
||||||
"glibc-2.24-guix-prefix.patch"))))))
|
|
||||||
|
|
||||||
(define-public glibc-2.27/bitcoin-patched
|
|
||||||
(package
|
(package
|
||||||
(inherit glibc-2.31)
|
(inherit glibc-2.31)
|
||||||
(version "2.27")
|
(version "2.27")
|
||||||
|
@ -571,14 +552,15 @@ inspecting signatures in Mach-O binaries.")
|
||||||
(method git-fetch)
|
(method git-fetch)
|
||||||
(uri (git-reference
|
(uri (git-reference
|
||||||
(url "https://sourceware.org/git/glibc.git")
|
(url "https://sourceware.org/git/glibc.git")
|
||||||
(commit "23158b08a0908f381459f273a984c6fd328363cb")))
|
(commit "73886db6218e613bd6d4edf529f11e008a6c2fa6")))
|
||||||
(file-name (git-file-name "glibc" "23158b08a0908f381459f273a984c6fd328363cb"))
|
(file-name (git-file-name "glibc" "73886db6218e613bd6d4edf529f11e008a6c2fa6"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"1b2n1gxv9f4fd5yy68qjbnarhf8mf4vmlxk10i3328c1w5pmp0ca"))
|
"0azpb9cvnbv25zg8019rqz48h8i2257ngyjg566dlnp74ivrs9vq"))
|
||||||
(patches (search-our-patches "glibc-ldd-x86_64.patch"
|
(patches (search-our-patches "glibc-ldd-x86_64.patch"
|
||||||
|
"glibc-versioned-locpath.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"
|
"glibc-2.27-fcommon.patch"
|
||||||
"glibc-2.27-guix-prefix.patch"))))))
|
"glibc-2.27-guix-prefix.patch"))))))
|
||||||
|
|
||||||
(packages->manifest
|
(packages->manifest
|
||||||
|
@ -627,12 +609,7 @@ inspecting signatures in Mach-O binaries.")
|
||||||
(make-nsis-for-gcc-10 nsis-x86_64)
|
(make-nsis-for-gcc-10 nsis-x86_64)
|
||||||
osslsigncode))
|
osslsigncode))
|
||||||
((string-contains target "-linux-")
|
((string-contains target "-linux-")
|
||||||
(list (cond ((string-contains target "riscv64-")
|
(list (make-bitcoin-cross-toolchain target)))
|
||||||
(make-bitcoin-cross-toolchain target
|
|
||||||
#:base-libc (make-glibc-with-stack-protector
|
|
||||||
(make-glibc-with-bind-now (make-glibc-without-werror glibc-2.27/bitcoin-patched)))))
|
|
||||||
(else
|
|
||||||
(make-bitcoin-cross-toolchain target)))))
|
|
||||||
((string-contains target "darwin")
|
((string-contains target "darwin")
|
||||||
(list clang-toolchain-10 binutils cmake xorriso python-signapple))
|
(list clang-toolchain-10 binutils cmake xorriso python-signapple))
|
||||||
(else '())))))
|
(else '())))))
|
||||||
|
|
|
@ -1,62 +0,0 @@
|
||||||
https://sourceware.org/git/?p=glibc.git;a=commit;h=a68ba2f3cd3cbe32c1f31e13c20ed13487727b32
|
|
||||||
|
|
||||||
commit 6b02af31e9a721bb15a11380cd22d53b621711f8
|
|
||||||
Author: Szabolcs Nagy <szabolcs.nagy@arm.com>
|
|
||||||
Date: Wed Oct 18 17:26:23 2017 +0100
|
|
||||||
|
|
||||||
[AARCH64] Rewrite elf_machine_load_address using _DYNAMIC symbol
|
|
||||||
|
|
||||||
This patch rewrites aarch64 elf_machine_load_address to use special _DYNAMIC
|
|
||||||
symbol instead of _dl_start.
|
|
||||||
|
|
||||||
The static address of _DYNAMIC symbol is stored in the first GOT entry.
|
|
||||||
Here is the change which makes this solution work (part of binutils 2.24):
|
|
||||||
https://sourceware.org/ml/binutils/2013-06/msg00248.html
|
|
||||||
|
|
||||||
i386, x86_64 targets use the same method to do this as well.
|
|
||||||
|
|
||||||
The original implementation relies on a trick that R_AARCH64_ABS32 relocation
|
|
||||||
being resolved at link time and the static address fits in the 32bits.
|
|
||||||
However, in LP64, normally, the address is defined to be 64 bit.
|
|
||||||
|
|
||||||
Here is the C version one which should be portable in all cases.
|
|
||||||
|
|
||||||
* sysdeps/aarch64/dl-machine.h (elf_machine_load_address): Use
|
|
||||||
_DYNAMIC symbol to calculate load address.
|
|
||||||
|
|
||||||
diff --git a/sysdeps/aarch64/dl-machine.h b/sysdeps/aarch64/dl-machine.h
|
|
||||||
index e86d8b5b63..5a5b8a5de5 100644
|
|
||||||
--- a/sysdeps/aarch64/dl-machine.h
|
|
||||||
+++ b/sysdeps/aarch64/dl-machine.h
|
|
||||||
@@ -49,26 +49,11 @@ elf_machine_load_address (void)
|
|
||||||
/* To figure out the load address we use the definition that for any symbol:
|
|
||||||
dynamic_addr(symbol) = static_addr(symbol) + load_addr
|
|
||||||
|
|
||||||
- The choice of symbol is arbitrary. The static address we obtain
|
|
||||||
- by constructing a non GOT reference to the symbol, the dynamic
|
|
||||||
- address of the symbol we compute using adrp/add to compute the
|
|
||||||
- symbol's address relative to the PC.
|
|
||||||
- This depends on 32bit relocations being resolved at link time
|
|
||||||
- and that the static address fits in the 32bits. */
|
|
||||||
-
|
|
||||||
- ElfW(Addr) static_addr;
|
|
||||||
- ElfW(Addr) dynamic_addr;
|
|
||||||
-
|
|
||||||
- asm (" \n"
|
|
||||||
-" adrp %1, _dl_start; \n"
|
|
||||||
-" add %1, %1, #:lo12:_dl_start \n"
|
|
||||||
-" ldr %w0, 1f \n"
|
|
||||||
-" b 2f \n"
|
|
||||||
-"1: \n"
|
|
||||||
-" .word _dl_start \n"
|
|
||||||
-"2: \n"
|
|
||||||
- : "=r" (static_addr), "=r" (dynamic_addr));
|
|
||||||
- return dynamic_addr - static_addr;
|
|
||||||
+ _DYNAMIC sysmbol is used here as its link-time address stored in
|
|
||||||
+ the special unrelocated first GOT entry. */
|
|
||||||
+
|
|
||||||
+ extern ElfW(Dyn) _DYNAMIC[] attribute_hidden;
|
|
||||||
+ return (ElfW(Addr)) &_DYNAMIC - elf_machine_dynamic ();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Set up the loaded object described by L so its unrelocated PLT
|
|
|
@ -1,25 +0,0 @@
|
||||||
Without ffile-prefix-map, the debug symbols will contain paths for the
|
|
||||||
guix store which will include the hashes of each package. However, the
|
|
||||||
hash for the same package will differ when on different architectures.
|
|
||||||
In order to be reproducible regardless of the architecture used to build
|
|
||||||
the package, map all guix store prefixes to something fixed, e.g. /usr.
|
|
||||||
|
|
||||||
We might be able to drop this in favour of using --with-nonshared-cflags
|
|
||||||
when we being using newer versions of glibc.
|
|
||||||
|
|
||||||
--- a/Makeconfig
|
|
||||||
+++ b/Makeconfig
|
|
||||||
@@ -950,6 +950,10 @@ object-suffixes-for-libc += .oS
|
|
||||||
# shared objects. We don't want to use CFLAGS-os because users may, for
|
|
||||||
# example, make that processor-specific.
|
|
||||||
CFLAGS-.oS = $(CFLAGS-.o) $(PIC-ccflag)
|
|
||||||
+
|
|
||||||
+# Map Guix store paths to /usr
|
|
||||||
+CFLAGS-.oS += `find /gnu/store -maxdepth 1 -mindepth 1 -type d -exec echo -n " -ffile-prefix-map={}=/usr" \;`
|
|
||||||
+
|
|
||||||
CPPFLAGS-.oS = $(CPPFLAGS-.o) -DPIC -DLIBC_NONSHARED=1
|
|
||||||
libtype.oS = lib%_nonshared.a
|
|
||||||
endif
|
|
||||||
--
|
|
||||||
2.35.1
|
|
||||||
|
|
|
@ -1,100 +0,0 @@
|
||||||
https://sourceware.org/git/?p=glibc.git;a=commit;h=fc3e1337be1c6935ab58bd13520f97a535cf70cc
|
|
||||||
|
|
||||||
commit dc23a45db566095e83ff0b7a57afc87fb5ca89a1
|
|
||||||
Author: Florian Weimer <fweimer@redhat.com>
|
|
||||||
Date: Wed Sep 21 10:45:32 2016 +0200
|
|
||||||
|
|
||||||
Avoid running $(CXX) during build to obtain header file paths
|
|
||||||
|
|
||||||
This reduces the build time somewhat and is particularly noticeable
|
|
||||||
during rebuilds with few code changes.
|
|
||||||
|
|
||||||
diff --git a/Makerules b/Makerules
|
|
||||||
index 7e4077ee50..c338850de5 100644
|
|
||||||
--- a/Makerules
|
|
||||||
+++ b/Makerules
|
|
||||||
@@ -121,14 +121,10 @@ ifneq (,$(CXX))
|
|
||||||
# will be used instead of /usr/include/stdlib.h and /usr/include/math.h.
|
|
||||||
before-compile := $(common-objpfx)cstdlib $(common-objpfx)cmath \
|
|
||||||
$(before-compile)
|
|
||||||
-cstdlib=$(shell echo "\#include <cstdlib>" | $(CXX) -M -MP -x c++ - \
|
|
||||||
- | sed -n "/cstdlib:/{s/:$$//;p}")
|
|
||||||
-$(common-objpfx)cstdlib: $(cstdlib)
|
|
||||||
+$(common-objpfx)cstdlib: $(c++-cstdlib-header)
|
|
||||||
$(INSTALL_DATA) $< $@T
|
|
||||||
$(move-if-change) $@T $@
|
|
||||||
-cmath=$(shell echo "\#include <cmath>" | $(CXX) -M -MP -x c++ - \
|
|
||||||
- | sed -n "/cmath:/{s/:$$//;p}")
|
|
||||||
-$(common-objpfx)cmath: $(cmath)
|
|
||||||
+$(common-objpfx)cmath: $(c++-cmath-header)
|
|
||||||
$(INSTALL_DATA) $< $@T
|
|
||||||
$(move-if-change) $@T $@
|
|
||||||
endif
|
|
||||||
diff --git a/config.make.in b/config.make.in
|
|
||||||
index 95c6f36876..04a8b3ed7f 100644
|
|
||||||
--- a/config.make.in
|
|
||||||
+++ b/config.make.in
|
|
||||||
@@ -45,6 +45,8 @@ defines = @DEFINES@
|
|
||||||
sysheaders = @sysheaders@
|
|
||||||
sysincludes = @SYSINCLUDES@
|
|
||||||
c++-sysincludes = @CXX_SYSINCLUDES@
|
|
||||||
+c++-cstdlib-header = @CXX_CSTDLIB_HEADER@
|
|
||||||
+c++-cmath-header = @CXX_CMATH_HEADER@
|
|
||||||
all-warnings = @all_warnings@
|
|
||||||
enable-werror = @enable_werror@
|
|
||||||
|
|
||||||
diff --git a/configure b/configure
|
|
||||||
index 17625e1041..6ff252744b 100755
|
|
||||||
--- a/configure
|
|
||||||
+++ b/configure
|
|
||||||
@@ -635,6 +635,8 @@ BISON
|
|
||||||
INSTALL_INFO
|
|
||||||
PERL
|
|
||||||
BASH_SHELL
|
|
||||||
+CXX_CMATH_HEADER
|
|
||||||
+CXX_CSTDLIB_HEADER
|
|
||||||
CXX_SYSINCLUDES
|
|
||||||
SYSINCLUDES
|
|
||||||
AUTOCONF
|
|
||||||
@@ -5054,6 +5056,18 @@ fi
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+# Obtain some C++ header file paths. This is used to make a local
|
|
||||||
+# copy of those headers in Makerules.
|
|
||||||
+if test -n "$CXX"; then
|
|
||||||
+ find_cxx_header () {
|
|
||||||
+ echo "#include <$1>" | $CXX -M -MP -x c++ - | sed -n "/$1:/{s/:\$//;p}"
|
|
||||||
+ }
|
|
||||||
+ CXX_CSTDLIB_HEADER="$(find_cxx_header cstdlib)"
|
|
||||||
+ CXX_CMATH_HEADER="$(find_cxx_header cmath)"
|
|
||||||
+fi
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+
|
|
||||||
# Test if LD_LIBRARY_PATH contains the notation for the current directory
|
|
||||||
# since this would lead to problems installing/building glibc.
|
|
||||||
# LD_LIBRARY_PATH contains the current directory if one of the following
|
|
||||||
diff --git a/configure.ac b/configure.ac
|
|
||||||
index 33bcd62180..9938ab0dc2 100644
|
|
||||||
--- a/configure.ac
|
|
||||||
+++ b/configure.ac
|
|
||||||
@@ -1039,6 +1039,18 @@ fi
|
|
||||||
AC_SUBST(SYSINCLUDES)
|
|
||||||
AC_SUBST(CXX_SYSINCLUDES)
|
|
||||||
|
|
||||||
+# Obtain some C++ header file paths. This is used to make a local
|
|
||||||
+# copy of those headers in Makerules.
|
|
||||||
+if test -n "$CXX"; then
|
|
||||||
+ find_cxx_header () {
|
|
||||||
+ echo "#include <$1>" | $CXX -M -MP -x c++ - | sed -n "/$1:/{s/:\$//;p}"
|
|
||||||
+ }
|
|
||||||
+ CXX_CSTDLIB_HEADER="$(find_cxx_header cstdlib)"
|
|
||||||
+ CXX_CMATH_HEADER="$(find_cxx_header cmath)"
|
|
||||||
+fi
|
|
||||||
+AC_SUBST(CXX_CSTDLIB_HEADER)
|
|
||||||
+AC_SUBST(CXX_CMATH_HEADER)
|
|
||||||
+
|
|
||||||
# Test if LD_LIBRARY_PATH contains the notation for the current directory
|
|
||||||
# since this would lead to problems installing/building glibc.
|
|
||||||
# LD_LIBRARY_PATH contains the current directory if one of the following
|
|
|
@ -1,87 +0,0 @@
|
||||||
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. */
|
|
|
@ -18,15 +18,15 @@ Date: Fri May 6 11:03:04 2022 +0100
|
||||||
https://sourceware.org/git/?p=glibc.git;a=commit;h=7650321ce037302bfc2f026aa19e0213b8d02fe6
|
https://sourceware.org/git/?p=glibc.git;a=commit;h=7650321ce037302bfc2f026aa19e0213b8d02fe6
|
||||||
|
|
||||||
diff --git a/Makeconfig b/Makeconfig
|
diff --git a/Makeconfig b/Makeconfig
|
||||||
index ee379f5852..63c4a2f234 100644
|
index 86a71e5802..aa2166be60 100644
|
||||||
--- a/Makeconfig
|
--- a/Makeconfig
|
||||||
+++ b/Makeconfig
|
+++ b/Makeconfig
|
||||||
@@ -824,7 +824,7 @@ ifeq "$(strip $(+cflags))" ""
|
@@ -896,7 +896,7 @@ ifeq "$(strip $(+cflags))" ""
|
||||||
+cflags := $(default_cflags)
|
|
||||||
endif # $(+cflags) == ""
|
endif # $(+cflags) == ""
|
||||||
|
|
||||||
-+cflags += $(cflags-cpu) $(+gccwarn) $(+merge-constants) $(+math-flags)
|
+cflags += $(cflags-cpu) $(+gccwarn) $(+merge-constants) $(+math-flags) \
|
||||||
++cflags += $(cflags-cpu) $(+gccwarn) $(+merge-constants) $(+math-flags) -fcommon
|
- $(+stack-protector)
|
||||||
|
+ $(+stack-protector) -fcommon
|
||||||
+gcc-nowarn := -w
|
+gcc-nowarn := -w
|
||||||
|
|
||||||
# Don't duplicate options if we inherited variables from the parent.
|
# Don't duplicate options if we inherited variables from the parent.
|
|
@ -20,6 +20,3 @@ when we being using newer versions of glibc.
|
||||||
libtype.o := lib%.a
|
libtype.o := lib%.a
|
||||||
object-suffixes += .o
|
object-suffixes += .o
|
||||||
ifeq (yes,$(build-shared))
|
ifeq (yes,$(build-shared))
|
||||||
--
|
|
||||||
2.35.1
|
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
By default, 'RTDLLIST' in 'ldd' refers to 'lib64/ld-linux-x86-64.so', whereas
|
By default, 'RTDLLIST' in 'ldd' refers to 'lib64/ld-linux-x86-64.so', whereas
|
||||||
it's in 'lib/' for us. This patch fixes that.
|
it's in 'lib/' for us. This patch fixes that.
|
||||||
|
|
||||||
--- glibc-2.17/sysdeps/unix/sysv/linux/x86_64/ldd-rewrite.sed 2012-12-25 04:02:13.000000000 +0100
|
--- a/sysdeps/unix/sysv/linux/x86_64/ldd-rewrite.sed
|
||||||
+++ glibc-2.17/sysdeps/unix/sysv/linux/x86_64/ldd-rewrite.sed 2013-09-15 23:08:03.000000000 +0200
|
+++ b/sysdeps/unix/sysv/linux/x86_64/ldd-rewrite.sed
|
||||||
@@ -1,3 +1,3 @@
|
@@ -1,3 +1,3 @@
|
||||||
/LD_TRACE_LOADED_OBJECTS=1/a\
|
/LD_TRACE_LOADED_OBJECTS=1/a\
|
||||||
add_env="$add_env LD_LIBRARY_VERSION=\\$verify_out"
|
add_env="$add_env LD_LIBRARY_VERSION=\\$verify_out"
|
||||||
|
|
|
@ -19,7 +19,7 @@ You can find installation instructions in the `build-*.md` file for your platfor
|
||||||
| --- | --- | --- | --- | --- |
|
| --- | --- | --- | --- | --- |
|
||||||
| [Boost](../depends/packages/boost.mk) | [link](https://www.boost.org/users/download/) | [1.81.0](https://github.com/bitcoin/bitcoin/pull/26557) | [1.64.0](https://github.com/bitcoin/bitcoin/pull/22320) | No |
|
| [Boost](../depends/packages/boost.mk) | [link](https://www.boost.org/users/download/) | [1.81.0](https://github.com/bitcoin/bitcoin/pull/26557) | [1.64.0](https://github.com/bitcoin/bitcoin/pull/22320) | No |
|
||||||
| [libevent](../depends/packages/libevent.mk) | [link](https://github.com/libevent/libevent/releases) | [2.1.12-stable](https://github.com/bitcoin/bitcoin/pull/21991) | [2.1.8](https://github.com/bitcoin/bitcoin/pull/24681) | No |
|
| [libevent](../depends/packages/libevent.mk) | [link](https://github.com/libevent/libevent/releases) | [2.1.12-stable](https://github.com/bitcoin/bitcoin/pull/21991) | [2.1.8](https://github.com/bitcoin/bitcoin/pull/24681) | No |
|
||||||
| glibc | [link](https://www.gnu.org/software/libc/) | N/A | [2.18](https://github.com/bitcoin/bitcoin/pull/23511) | Yes |
|
| glibc | [link](https://www.gnu.org/software/libc/) | N/A | [2.27](https://github.com/bitcoin/bitcoin/pull/27029) | Yes |
|
||||||
| Linux Kernel | [link](https://www.kernel.org/) | N/A | 3.2.0 | Yes |
|
| Linux Kernel | [link](https://www.kernel.org/) | N/A | 3.2.0 | Yes |
|
||||||
|
|
||||||
## Optional
|
## Optional
|
||||||
|
|
Loading…
Add table
Reference in a new issue