glibc: update to support 2.36 from offical tag 2022.11.3
Signed-off-by: Andy Hu <andy.hu@starfivetech.com>
This commit is contained in:
@@ -0,0 +1,132 @@
|
||||
From dfda505870f94a7ac8063eb47f622ddc65665ff1 Mon Sep 17 00:00:00 2001
|
||||
From: James Hilliard <james.hilliard1@gmail.com>
|
||||
Date: Tue, 14 Jun 2022 19:42:43 -0600
|
||||
Subject: [PATCH] Revert "Linux: Implement a useful version of _startup_fatal"
|
||||
|
||||
Fixes:
|
||||
csu/libc-tls.c:202: undefined reference to `_startup_fatal_not_constant'
|
||||
|
||||
This reverts commit 2d05ba7f8ef979947e910a37ae8115a816eb4d08.
|
||||
|
||||
Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
|
||||
---
|
||||
sysdeps/unix/sysv/linux/i386/startup.h | 23 ++++++++++++---
|
||||
sysdeps/unix/sysv/linux/ia64/startup.h | 22 ---------------
|
||||
sysdeps/unix/sysv/linux/startup.h | 39 --------------------------
|
||||
3 files changed, 19 insertions(+), 65 deletions(-)
|
||||
delete mode 100644 sysdeps/unix/sysv/linux/ia64/startup.h
|
||||
delete mode 100644 sysdeps/unix/sysv/linux/startup.h
|
||||
|
||||
diff --git a/sysdeps/unix/sysv/linux/i386/startup.h b/sysdeps/unix/sysv/linux/i386/startup.h
|
||||
index 213805d7d2..67c9310f3a 100644
|
||||
--- a/sysdeps/unix/sysv/linux/i386/startup.h
|
||||
+++ b/sysdeps/unix/sysv/linux/i386/startup.h
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Linux/i386 definitions of functions used by static libc main startup.
|
||||
- Copyright (C) 2022 Free Software Foundation, Inc.
|
||||
+ Copyright (C) 2017-2022 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
@@ -16,7 +16,22 @@
|
||||
License along with the GNU C Library; if not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
-/* Can't use "call *%gs:SYSINFO_OFFSET" during startup. */
|
||||
-#define I386_USE_SYSENTER 0
|
||||
+#if BUILD_PIE_DEFAULT
|
||||
+/* Can't use "call *%gs:SYSINFO_OFFSET" during statup in static PIE. */
|
||||
+# define I386_USE_SYSENTER 0
|
||||
|
||||
-#include_next <startup.h>
|
||||
+# include <sysdep.h>
|
||||
+# include <abort-instr.h>
|
||||
+
|
||||
+__attribute__ ((__noreturn__))
|
||||
+static inline void
|
||||
+_startup_fatal (const char *message __attribute__ ((unused)))
|
||||
+{
|
||||
+ /* This is only called very early during startup in static PIE.
|
||||
+ FIXME: How can it be improved? */
|
||||
+ ABORT_INSTRUCTION;
|
||||
+ __builtin_unreachable ();
|
||||
+}
|
||||
+#else
|
||||
+# include_next <startup.h>
|
||||
+#endif
|
||||
diff --git a/sysdeps/unix/sysv/linux/ia64/startup.h b/sysdeps/unix/sysv/linux/ia64/startup.h
|
||||
deleted file mode 100644
|
||||
index 77f29f15a2..0000000000
|
||||
--- a/sysdeps/unix/sysv/linux/ia64/startup.h
|
||||
+++ /dev/null
|
||||
@@ -1,22 +0,0 @@
|
||||
-/* Linux/ia64 definitions of functions used by static libc main startup.
|
||||
- Copyright (C) 2022 Free Software Foundation, Inc.
|
||||
- This file is part of the GNU C Library.
|
||||
-
|
||||
- The GNU C Library is free software; you can redistribute it and/or
|
||||
- modify it under the terms of the GNU Lesser General Public
|
||||
- License as published by the Free Software Foundation; either
|
||||
- version 2.1 of the License, or (at your option) any later version.
|
||||
-
|
||||
- The GNU C Library is distributed in the hope that it will be useful,
|
||||
- but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
- Lesser General Public License for more details.
|
||||
-
|
||||
- You should have received a copy of the GNU Lesser General Public
|
||||
- License along with the GNU C Library; if not, see
|
||||
- <https://www.gnu.org/licenses/>. */
|
||||
-
|
||||
-/* This code is used before the TCB is set up. */
|
||||
-#define IA64_USE_NEW_STUB 0
|
||||
-
|
||||
-#include_next <startup.h>
|
||||
diff --git a/sysdeps/unix/sysv/linux/startup.h b/sysdeps/unix/sysv/linux/startup.h
|
||||
deleted file mode 100644
|
||||
index 39859b404a..0000000000
|
||||
--- a/sysdeps/unix/sysv/linux/startup.h
|
||||
+++ /dev/null
|
||||
@@ -1,39 +0,0 @@
|
||||
-/* Linux definitions of functions used by static libc main startup.
|
||||
- Copyright (C) 2017-2022 Free Software Foundation, Inc.
|
||||
- This file is part of the GNU C Library.
|
||||
-
|
||||
- The GNU C Library is free software; you can redistribute it and/or
|
||||
- modify it under the terms of the GNU Lesser General Public
|
||||
- License as published by the Free Software Foundation; either
|
||||
- version 2.1 of the License, or (at your option) any later version.
|
||||
-
|
||||
- The GNU C Library is distributed in the hope that it will be useful,
|
||||
- but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
- Lesser General Public License for more details.
|
||||
-
|
||||
- You should have received a copy of the GNU Lesser General Public
|
||||
- License along with the GNU C Library; if not, see
|
||||
- <https://www.gnu.org/licenses/>. */
|
||||
-
|
||||
-#ifdef SHARED
|
||||
-# include_next <startup.h>
|
||||
-#else
|
||||
-# include <sysdep.h>
|
||||
-
|
||||
-/* Avoid a run-time invocation of strlen. */
|
||||
-#define _startup_fatal(message) \
|
||||
- do \
|
||||
- { \
|
||||
- size_t __message_length = __builtin_strlen (message); \
|
||||
- if (! __builtin_constant_p (__message_length)) \
|
||||
- { \
|
||||
- extern void _startup_fatal_not_constant (void); \
|
||||
- _startup_fatal_not_constant (); \
|
||||
- } \
|
||||
- INTERNAL_SYSCALL_CALL (write, STDERR_FILENO, (message), \
|
||||
- __message_length); \
|
||||
- INTERNAL_SYSCALL_CALL (exit_group, 127); \
|
||||
- } \
|
||||
- while (0)
|
||||
-#endif /* !SHARED */
|
||||
--
|
||||
2.25.1
|
||||
|
||||
@@ -0,0 +1,117 @@
|
||||
From 2d7ed98add14f75041499ac189696c9bd3d757fe Mon Sep 17 00:00:00 2001
|
||||
From: Sergei Trofimovich <slyich@gmail.com>
|
||||
Date: Tue, 13 Sep 2022 13:39:13 -0400
|
||||
Subject: [PATCH] Makerules: fix MAKEFLAGS assignment for upcoming make-4.4
|
||||
[BZ# 29564]
|
||||
|
||||
make-4.4 will add long flags to MAKEFLAGS variable:
|
||||
|
||||
* WARNING: Backward-incompatibility!
|
||||
Previously only simple (one-letter) options were added to the MAKEFLAGS
|
||||
variable that was visible while parsing makefiles. Now, all options
|
||||
are available in MAKEFLAGS.
|
||||
|
||||
This causes locale builds to fail when long options are used:
|
||||
|
||||
$ make --shuffle
|
||||
...
|
||||
make -C localedata install-locales
|
||||
make: invalid shuffle mode: '1662724426r'
|
||||
|
||||
The change fixes it by passing eash option via whitespace and dashes.
|
||||
That way option is appended to both single-word form and whitespace
|
||||
separated form.
|
||||
|
||||
While at it fixed --silent mode detection in $(MAKEFLAGS) by filtering
|
||||
out --long-options. Otherwise options like --shuffle flag enable silent
|
||||
mode unintentionally. $(silent-make) variable consolidates the checks.
|
||||
|
||||
Resolves: BZ# 29564
|
||||
|
||||
CC: Paul Smith <psmith@gnu.org>
|
||||
CC: Siddhesh Poyarekar <siddhesh@gotplt.org>
|
||||
Signed-off-by: Sergei Trofimovich <slyich@gmail.com>
|
||||
Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
|
||||
Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
|
||||
[james.hilliard1@gmail.com: backport from upstream commit
|
||||
2d7ed98add14f75041499ac189696c9bd3d757fe]
|
||||
---
|
||||
Makeconfig | 18 +++++++++++++++++-
|
||||
Makerules | 4 ++--
|
||||
elf/rtld-Rules | 2 +-
|
||||
3 files changed, 20 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/Makeconfig b/Makeconfig
|
||||
index f8164a0025..842f49eb58 100644
|
||||
--- a/Makeconfig
|
||||
+++ b/Makeconfig
|
||||
@@ -43,6 +43,22 @@ else
|
||||
$(error objdir must be defined by the build-directory Makefile)
|
||||
endif
|
||||
|
||||
+# Did we request 'make -s' run? "yes" or "no".
|
||||
+# Starting from make-4.4 MAKEFLAGS now contains long
|
||||
+# options like '--shuffle'. To detect presence of 's'
|
||||
+# we pick first word with short options. Long options
|
||||
+# are guaranteed to come after whitespace. We use '-'
|
||||
+# prefix to always have a word before long options
|
||||
+# even if no short options were passed.
|
||||
+# Typical MAKEFLAGS values to watch for:
|
||||
+# "rs --shuffle=42" (silent)
|
||||
+# " --shuffle" (not silent)
|
||||
+ifeq ($(findstring s, $(firstword -$(MAKEFLAGS))),)
|
||||
+silent-make := no
|
||||
+else
|
||||
+silent-make := yes
|
||||
+endif
|
||||
+
|
||||
# Root of the sysdeps tree.
|
||||
sysdep_dir := $(..)sysdeps
|
||||
export sysdep_dir := $(sysdep_dir)
|
||||
@@ -917,7 +933,7 @@ endif
|
||||
# umpteen zillion filenames along with it (we use `...' instead)
|
||||
# but we don't want this echoing done when the user has said
|
||||
# he doesn't want to see commands echoed by using -s.
|
||||
-ifneq "$(findstring s,$(MAKEFLAGS))" "" # if -s
|
||||
+ifeq ($(silent-make),yes) # if -s
|
||||
+cmdecho := echo >/dev/null
|
||||
else # not -s
|
||||
+cmdecho := echo
|
||||
diff --git a/Makerules b/Makerules
|
||||
index d1e139d03c..09c0cf8357 100644
|
||||
--- a/Makerules
|
||||
+++ b/Makerules
|
||||
@@ -794,7 +794,7 @@ endif
|
||||
# Maximize efficiency by minimizing the number of rules.
|
||||
.SUFFIXES: # Clear the suffix list. We don't use suffix rules.
|
||||
# Don't define any builtin rules.
|
||||
-MAKEFLAGS := $(MAKEFLAGS)r
|
||||
+MAKEFLAGS := $(MAKEFLAGS) -r
|
||||
|
||||
# Generic rule for making directories.
|
||||
%/:
|
||||
@@ -811,7 +811,7 @@ MAKEFLAGS := $(MAKEFLAGS)r
|
||||
.PRECIOUS: $(foreach l,$(libtypes),$(patsubst %,$(common-objpfx)$l,c))
|
||||
|
||||
# Use the verbose option of ar and tar when not running silently.
|
||||
-ifeq "$(findstring s,$(MAKEFLAGS))" "" # if not -s
|
||||
+ifeq ($(silent-make),no) # if not -s
|
||||
verbose := v
|
||||
else # -s
|
||||
verbose :=
|
||||
diff --git a/elf/rtld-Rules b/elf/rtld-Rules
|
||||
index ca00dd1fe2..3c5e273f2b 100644
|
||||
--- a/elf/rtld-Rules
|
||||
+++ b/elf/rtld-Rules
|
||||
@@ -52,7 +52,7 @@ $(objpfx)rtld-libc.a: $(foreach dir,$(rtld-subdirs),\
|
||||
mv -f $@T $@
|
||||
|
||||
# Use the verbose option of ar and tar when not running silently.
|
||||
-ifeq "$(findstring s,$(MAKEFLAGS))" "" # if not -s
|
||||
+ifeq ($(silent-make),no) # if not -s
|
||||
verbose := v
|
||||
else # -s
|
||||
verbose :=
|
||||
--
|
||||
2.34.1
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
From 3935b543adcb9a46ab79f8931bc489068b049378 Mon Sep 17 00:00:00 2001
|
||||
From: Adhemerval Zanella Netto <adhemerval.zanella@linaro.org>
|
||||
Date: Wed, 21 Sep 2022 10:51:08 -0300
|
||||
Subject: [PATCH] x86: Fix -Os build (BZ #29576)
|
||||
|
||||
The compiler might transform __stpcpy calls (which are routed to
|
||||
__builtin_stpcpy as an optimization) to strcpy and x86_64 strcpy
|
||||
multiarch implementation does not build any working symbol due
|
||||
ISA_SHOULD_BUILD not being evaluated for IS_IN(rtld).
|
||||
|
||||
Checked on x86_64-linux-gnu.
|
||||
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
|
||||
Tested-by: Carlos O'Donell <carlos@redhat.com>
|
||||
|
||||
(cherry picked from commit 9dc4e29f630c6ef8299120b275e503321dc0c8c7)
|
||||
Signed-off-by: Romain Naour <romain.naour@gmail.com>
|
||||
---
|
||||
sysdeps/x86_64/multiarch/rtld-strcpy.S | 18 ++++++++++++++++++
|
||||
1 file changed, 18 insertions(+)
|
||||
create mode 100644 sysdeps/x86_64/multiarch/rtld-strcpy.S
|
||||
|
||||
diff --git a/sysdeps/x86_64/multiarch/rtld-strcpy.S b/sysdeps/x86_64/multiarch/rtld-strcpy.S
|
||||
new file mode 100644
|
||||
index 0000000000..19439c553d
|
||||
--- /dev/null
|
||||
+++ b/sysdeps/x86_64/multiarch/rtld-strcpy.S
|
||||
@@ -0,0 +1,18 @@
|
||||
+/* Copyright (C) 2022 Free Software Foundation, Inc.
|
||||
+ This file is part of the GNU C Library.
|
||||
+
|
||||
+ The GNU C Library is free software; you can redistribute it and/or
|
||||
+ modify it under the terms of the GNU Lesser General Public
|
||||
+ License as published by the Free Software Foundation; either
|
||||
+ version 2.1 of the License, or (at your option) any later version.
|
||||
+
|
||||
+ The GNU C Library is distributed in the hope that it will be useful,
|
||||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
+ Lesser General Public License for more details.
|
||||
+
|
||||
+ You should have received a copy of the GNU Lesser General Public
|
||||
+ License along with the GNU C Library; if not, see
|
||||
+ <https://www.gnu.org/licenses/>. */
|
||||
+
|
||||
+#include "../strcpy.S"
|
||||
--
|
||||
2.34.3
|
||||
|
||||
@@ -1,3 +1,44 @@
|
||||
config BR2_PACKAGE_GLIBC_ARCH_SUPPORTS
|
||||
bool
|
||||
default y if BR2_arm
|
||||
default y if BR2_armeb
|
||||
default y if BR2_aarch64
|
||||
default y if BR2_aarch64_be
|
||||
default y if BR2_i386
|
||||
default y if BR2_mips
|
||||
default y if BR2_mipsel
|
||||
default y if BR2_mips64
|
||||
default y if BR2_mips64el
|
||||
default y if BR2_or1k
|
||||
default y if BR2_powerpc
|
||||
default y if BR2_powerpc64
|
||||
default y if BR2_powerpc64le
|
||||
default y if BR2_riscv
|
||||
default y if BR2_s390x
|
||||
default y if BR2_sh
|
||||
default y if BR2_sparc64
|
||||
default y if BR2_x86_64
|
||||
default y if BR2_microblaze
|
||||
default y if BR2_nios2
|
||||
default y if BR2_arc && BR2_ARC_ATOMIC_EXT
|
||||
depends on !BR2_powerpc_SPE
|
||||
depends on BR2_RISCV_ISA_RVA || !BR2_riscv
|
||||
depends on BR2_USE_MMU
|
||||
|
||||
config BR2_PACKAGE_GLIBC_SUPPORTS
|
||||
bool
|
||||
default y if BR2_PACKAGE_GLIBC_ARCH_SUPPORTS
|
||||
# Make sure to keep these dependencies in sync with the
|
||||
# Config.in comments in
|
||||
# toolchain/toolchain-buildroot/Config.in
|
||||
depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2
|
||||
depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10 || !BR2_powerpc64le
|
||||
depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5 || !BR2_MIPS_NAN_2008
|
||||
depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4 || !BR2_RISCV_32
|
||||
depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0 || !BR2_RISCV_64
|
||||
depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_1 || !BR2_arc
|
||||
depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4 || !BR2_or1k
|
||||
|
||||
if BR2_TOOLCHAIN_BUILDROOT_GLIBC
|
||||
|
||||
comment "Glibc Options"
|
||||
@@ -10,6 +51,18 @@ config BR2_PACKAGE_GLIBC
|
||||
help
|
||||
https://www.gnu.org/software/libc/
|
||||
|
||||
config BR2_PACKAGE_GLIBC_KERNEL_COMPAT
|
||||
bool "Enable compatibility shims to run on older kernels"
|
||||
help
|
||||
Say 'y' here if you plan on running your system on a kernel
|
||||
older than the version used for the toolchain headers.
|
||||
|
||||
Enabling those compatibility shims may generate a slightly
|
||||
bigger and slightly slower glibc library.
|
||||
|
||||
The oldest supported kernel version depends on the
|
||||
architecture.
|
||||
|
||||
config BR2_PACKAGE_GLIBC_UTILS
|
||||
bool "Install glibc utilities"
|
||||
help
|
||||
|
||||
@@ -1,2 +1,7 @@
|
||||
# This hash file is not used; instead, update the
|
||||
# hash files in the per-version sub-directories.
|
||||
# Locally calculated (fetched from Github)
|
||||
sha256 51b946f6c8dddd2b0c9902f7792ecf594497da6b0cc8fb9246fa30f108cbb422 glibc-2.36-66-ga1dc0be03c9dd850b864bd7a9c03cf8e396eb7ca.tar.gz
|
||||
|
||||
# Hashes for license files
|
||||
sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING
|
||||
sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LIB
|
||||
sha256 b33d0bd9f685b46853548814893a6135e74430d12f6d94ab3eba42fc591f83bc LICENSES
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
# Generate version string using:
|
||||
# git describe --match 'glibc-*' --abbrev=40 origin/release/MAJOR.MINOR/master | cut -d '-' -f 2-
|
||||
# When updating the version, please also update localedef
|
||||
GLIBC_VERSION = 2.32-50-g737efa27fca5c97f566a2005687fda7d6659cd2e
|
||||
GLIBC_VERSION = 2.36-66-ga1dc0be03c9dd850b864bd7a9c03cf8e396eb7ca
|
||||
# Upstream doesn't officially provide an https download link.
|
||||
# There is one (https://sourceware.org/git/glibc.git) but it's not reliable,
|
||||
# sometimes the connection times out. So use an unofficial github mirror.
|
||||
@@ -53,6 +53,11 @@ ifeq ($(BR2_ENABLE_DEBUG),y)
|
||||
GLIBC_EXTRA_CFLAGS += -g
|
||||
endif
|
||||
|
||||
# glibc explicitly requires compile barriers between files
|
||||
ifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_4_7),y)
|
||||
GLIBC_EXTRA_CFLAGS += -fno-lto
|
||||
endif
|
||||
|
||||
# The stubs.h header is not installed by install-headers, but is
|
||||
# needed for the gcc build. An empty stubs.h will work, as explained
|
||||
# in http://gcc.gnu.org/ml/gcc/2002-01/msg00900.html. The same trick
|
||||
|
||||
Reference in New Issue
Block a user