]> git.ipfire.org Git - people/ms/ipfire-2.x.git/commitdiff
glibc: Add workaround for broken GCC pragmas
authorMichael Tremer <michael.tremer@ipfire.org>
Sun, 11 Jul 2021 16:36:57 +0000 (12:36 -0400)
committerMichael Tremer <michael.tremer@ipfire.org>
Fri, 13 Aug 2021 11:14:11 +0000 (07:14 -0400)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
lfs/glibc
src/patches/glibc-2.33-string-Work-around-GCC-PR-98512-in-rawmemchr.patch [new file with mode: 0644]

index e110d9c005b6f607a4419d3069c4f7c3ae5e9ffa..b67e0fe44c7999688485e225048c7377abfcd8c8 100644 (file)
--- a/lfs/glibc
+++ b/lfs/glibc
@@ -122,6 +122,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @mkdir $(DIR_SRC)/glibc-build
 
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc-localedef-no-archive.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/glibc-2.33-string-Work-around-GCC-PR-98512-in-rawmemchr.patch
 
 ifneq "$(TOOLCHAIN)" "1"
  ifeq "$(BUILD_ARCH)" "x86_64"
diff --git a/src/patches/glibc-2.33-string-Work-around-GCC-PR-98512-in-rawmemchr.patch b/src/patches/glibc-2.33-string-Work-around-GCC-PR-98512-in-rawmemchr.patch
new file mode 100644 (file)
index 0000000..e904b28
--- /dev/null
@@ -0,0 +1,58 @@
+From 044e603b698093cf48f6e6229e0b66acf05227e4 Mon Sep 17 00:00:00 2001
+From: Florian Weimer <fweimer@redhat.com>
+Date: Fri, 19 Feb 2021 13:29:00 +0100
+Subject: [PATCH] string: Work around GCC PR 98512 in rawmemchr
+
+Upstream-Status: Backport [https://sourceware.org/git/?p=glibc.git;a=commit;h=044e603b698093cf48f6e6229e0b66acf05227e4]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ string/rawmemchr.c | 26 +++++++++++++++-----------
+ 1 file changed, 15 insertions(+), 11 deletions(-)
+
+diff --git a/string/rawmemchr.c b/string/rawmemchr.c
+index 59bbeeaa42..b8523118e5 100644
+--- a/string/rawmemchr.c
++++ b/string/rawmemchr.c
+@@ -22,24 +22,28 @@
+ # define RAWMEMCHR __rawmemchr
+ #endif
+-/* Find the first occurrence of C in S.  */
+-void *
+-RAWMEMCHR (const void *s, int c)
+-{
+-  DIAG_PUSH_NEEDS_COMMENT;
++/* The pragmata should be nested inside RAWMEMCHR below, but that
++   triggers GCC PR 98512.  */
++DIAG_PUSH_NEEDS_COMMENT;
+ #if __GNUC_PREREQ (7, 0)
+-  /* GCC 8 warns about the size passed to memchr being larger than
+-     PTRDIFF_MAX; the use of SIZE_MAX is deliberate here.  */
+-  DIAG_IGNORE_NEEDS_COMMENT (8, "-Wstringop-overflow=");
++/* GCC 8 warns about the size passed to memchr being larger than
++   PTRDIFF_MAX; the use of SIZE_MAX is deliberate here.  */
++DIAG_IGNORE_NEEDS_COMMENT (8, "-Wstringop-overflow=");
+ #endif
+ #if __GNUC_PREREQ (11, 0)
+-  /* Likewise GCC 11, with a different warning option.  */
+-  DIAG_IGNORE_NEEDS_COMMENT (11, "-Wstringop-overread");
++/* Likewise GCC 11, with a different warning option.  */
++DIAG_IGNORE_NEEDS_COMMENT (11, "-Wstringop-overread");
+ #endif
++
++/* Find the first occurrence of C in S.  */
++void *
++RAWMEMCHR (const void *s, int c)
++{
+   if (c != '\0')
+     return memchr (s, c, (size_t)-1);
+-  DIAG_POP_NEEDS_COMMENT;
+   return (char *)s + strlen (s);
+ }
+ libc_hidden_def (__rawmemchr)
+ weak_alias (__rawmemchr, rawmemchr)
++
++DIAG_POP_NEEDS_COMMENT;
+-- 
+2.30.1
+