Andrew Geissler | 90fd73c | 2021-03-05 15:25:55 -0600 | [diff] [blame] | 1 | From 044e603b698093cf48f6e6229e0b66acf05227e4 Mon Sep 17 00:00:00 2001 |
| 2 | From: Florian Weimer <fweimer@redhat.com> |
| 3 | Date: Fri, 19 Feb 2021 13:29:00 +0100 |
| 4 | Subject: [PATCH] string: Work around GCC PR 98512 in rawmemchr |
| 5 | |
| 6 | Upstream-Status: Backport [https://sourceware.org/git/?p=glibc.git;a=commit;h=044e603b698093cf48f6e6229e0b66acf05227e4] |
| 7 | Signed-off-by: Khem Raj <raj.khem@gmail.com> |
| 8 | --- |
| 9 | string/rawmemchr.c | 26 +++++++++++++++----------- |
| 10 | 1 file changed, 15 insertions(+), 11 deletions(-) |
| 11 | |
| 12 | diff --git a/string/rawmemchr.c b/string/rawmemchr.c |
| 13 | index 59bbeeaa42..b8523118e5 100644 |
| 14 | --- a/string/rawmemchr.c |
| 15 | +++ b/string/rawmemchr.c |
| 16 | @@ -22,24 +22,28 @@ |
| 17 | # define RAWMEMCHR __rawmemchr |
| 18 | #endif |
| 19 | |
| 20 | -/* Find the first occurrence of C in S. */ |
| 21 | -void * |
| 22 | -RAWMEMCHR (const void *s, int c) |
| 23 | -{ |
| 24 | - DIAG_PUSH_NEEDS_COMMENT; |
| 25 | +/* The pragmata should be nested inside RAWMEMCHR below, but that |
| 26 | + triggers GCC PR 98512. */ |
| 27 | +DIAG_PUSH_NEEDS_COMMENT; |
| 28 | #if __GNUC_PREREQ (7, 0) |
| 29 | - /* GCC 8 warns about the size passed to memchr being larger than |
| 30 | - PTRDIFF_MAX; the use of SIZE_MAX is deliberate here. */ |
| 31 | - DIAG_IGNORE_NEEDS_COMMENT (8, "-Wstringop-overflow="); |
| 32 | +/* GCC 8 warns about the size passed to memchr being larger than |
| 33 | + PTRDIFF_MAX; the use of SIZE_MAX is deliberate here. */ |
| 34 | +DIAG_IGNORE_NEEDS_COMMENT (8, "-Wstringop-overflow="); |
| 35 | #endif |
| 36 | #if __GNUC_PREREQ (11, 0) |
| 37 | - /* Likewise GCC 11, with a different warning option. */ |
| 38 | - DIAG_IGNORE_NEEDS_COMMENT (11, "-Wstringop-overread"); |
| 39 | +/* Likewise GCC 11, with a different warning option. */ |
| 40 | +DIAG_IGNORE_NEEDS_COMMENT (11, "-Wstringop-overread"); |
| 41 | #endif |
| 42 | + |
| 43 | +/* Find the first occurrence of C in S. */ |
| 44 | +void * |
| 45 | +RAWMEMCHR (const void *s, int c) |
| 46 | +{ |
| 47 | if (c != '\0') |
| 48 | return memchr (s, c, (size_t)-1); |
| 49 | - DIAG_POP_NEEDS_COMMENT; |
| 50 | return (char *)s + strlen (s); |
| 51 | } |
| 52 | libc_hidden_def (__rawmemchr) |
| 53 | weak_alias (__rawmemchr, rawmemchr) |
| 54 | + |
| 55 | +DIAG_POP_NEEDS_COMMENT; |
| 56 | -- |
| 57 | 2.30.1 |
| 58 | |