From patchwork Mon Jun 17 16:02:56 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Stefan Liebler X-Patchwork-Id: 33164 Received: (qmail 77597 invoked by alias); 17 Jun 2019 16:03:07 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 77573 invoked by uid 89); 17 Jun 2019 16:03:06 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-23.9 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=ham version=3.3.1 spammy= X-HELO: mx0a-001b2d01.pphosted.com Subject: Re: [PATCH] Fix gcc 9 build errors for make xcheck. To: Andreas Schwab Cc: Yann Droneaud , GNU C Library References: <027cc32e-e9cd-fe3d-d45c-d11a8200c5cd@linux.ibm.com> <71d0460c-f8ea-bd3f-2221-ab680731c53c@linux.ibm.com> From: Stefan Liebler Date: Mon, 17 Jun 2019 18:02:56 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 MIME-Version: 1.0 In-Reply-To: x-cbid: 19061716-0020-0000-0000-0000034ADEBC X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 19061716-0021-0000-0000-0000219E2587 Message-Id: On 6/17/19 4:59 PM, Andreas Schwab wrote: > On Jun 17 2019, Stefan Liebler wrote: > >> On 6/17/19 4:07 PM, Andreas Schwab wrote: >>> On Jun 17 2019, Stefan Liebler wrote: >>> >>>> diff --git a/benchtests/bench-strstr.c b/benchtests/bench-strstr.c >>>> index 2cbe13e9ac..14053e7a22 100644 >>>> --- a/benchtests/bench-strstr.c >>>> +++ b/benchtests/bench-strstr.c >>>> @@ -147,7 +147,7 @@ do_one_test (impl_t *impl, const char *s1, const char *s2, char *exp_result) >>>> if (res != exp_result) >>>> { >>>> error (0, 0, "Wrong result in function %s %s %s", impl->name, >>>> - res, exp_result); >>>> + res, (exp_result == NULL) ? "NULL" : exp_result); >>> >>> res can be NULL too. >>> >>>> diff --git a/string/test-strcasestr.c b/string/test-strcasestr.c >>>> index 0a16f85dcd..1773581a3e 100644 >>>> --- a/string/test-strcasestr.c >>>> +++ b/string/test-strcasestr.c >>>> @@ -67,7 +67,7 @@ check_result (impl_t *impl, const char *s1, const char *s2, >>>> if (result != exp_result) >>>> { >>>> error (0, 0, "Wrong result in function %s %s %s", impl->name, >>>> - result, exp_result); >>>> + result, (exp_result == NULL) ? "NULL" : exp_result); >>> >>> result can be NULL too. >>> >>> Andreas. >>> >> >> That's true. >> The compiler does not emit a warning for those. >> Shall we nevertheless add a check? > > Either check both or none. If NULL is a problem then it needs to be > checked everywhere. > > Andreas. > Okay I've added the two mentioned occurrences and also added checks in string/test-strstr.c. Bye Stefan commit 22e4ba39c88bcb2c75e8f038551cd75362c17298 Author: Stefan Liebler Date: Fri Jun 14 12:54:38 2019 +0200 Fix gcc 9 build errors for make xcheck. [BZ #24556] This patch fixes the following gcc 9 warnings for "make xcheck" / "make bench": -string/tst-strcasestr.c: ../include/bits/../../misc/bits/error.h:42:5: error: ‘%s’ directive argument is null [-Werror=format-overflow=] -argp/argp-test.c: argp-test.c:130:20: error: ‘%d’ directive writing between 1 and 11 bytes into a region of size 10 [-Werror=format-overflow=] argp-test.c:130:19: note: directive argument in the range [-2147483648, 122] argp-test.c:130:5: note: ‘sprintf’ output between 2 and 12 bytes into a destination of size 10 -nss/tst-field.c: tst-field.c:52:7: error: ‘%s’ directive argument is null [-Werror=format-overflow=] Please enter the commit message for your changes. Lines starting -benchtests/bench-strstr.c: ../include/bits/../../misc/bits/error.h:42:5: error: ‘%s’ directive argument is null [-Werror=format-overflow=] -benchtests/bench-malloc-simple.c: bench-malloc-simple.c:93:16: error: iteration 3 invokes undefined behavior [-Werror=aggressive-loop-optimizations] ChangeLog: [BZ #24556] * string/test-strcasestr.c (check_result): Add NULL check. * nss/tst-field.c (check_rewrite): Likewise. * benchtests/bench-strstr.c (do_one_test): Likewise. * string/test-strstr.c (check_result): Likewise. * argp/argp-test.c (popt): Increase size of buf to 12. * benchtests/bench-malloc-simple.c (bench): Do not initialize tests array out of bounds. meld diff --git a/argp/argp-test.c b/argp/argp-test.c index cb2976ddad..13e0c6df14 100644 --- a/argp/argp-test.c +++ b/argp/argp-test.c @@ -123,7 +123,7 @@ static const char doc[] = "Test program for argp." static void popt (int key, char *arg) { - char buf[10]; + char buf[12]; if (isprint (key)) sprintf (buf, "%c", key); else diff --git a/benchtests/bench-malloc-simple.c b/benchtests/bench-malloc-simple.c index b8bb2cc116..c4f06f6999 100644 --- a/benchtests/bench-malloc-simple.c +++ b/benchtests/bench-malloc-simple.c @@ -87,7 +87,7 @@ bench (unsigned long size) size_t iters = NUM_ITERS; int **arr = (int**) malloc (MAX_ALLOCS * sizeof (void*)); - for (int t = 0; t <= 3; t++) + for (int t = 0; t < 3; t++) for (int i = 0; i < NUM_ALLOCS; i++) { tests[t][i].n = allocs[i]; diff --git a/benchtests/bench-strstr.c b/benchtests/bench-strstr.c index 2cbe13e9ac..c1cdcdd5bb 100644 --- a/benchtests/bench-strstr.c +++ b/benchtests/bench-strstr.c @@ -147,7 +147,8 @@ do_one_test (impl_t *impl, const char *s1, const char *s2, char *exp_result) if (res != exp_result) { error (0, 0, "Wrong result in function %s %s %s", impl->name, - res, exp_result); + (res == NULL) ? "NULL" : res, + (exp_result == NULL) ? "NULL" : exp_result); ret = 1; } } diff --git a/nss/tst-field.c b/nss/tst-field.c index 23d2f2abf6..5c553e5f46 100644 --- a/nss/tst-field.c +++ b/nss/tst-field.c @@ -50,7 +50,7 @@ check_rewrite (const char *input, const char *expected) if (result != NULL && strcmp (result, expected) != 0) { printf ("FAIL: rewrite \"%s\" -> \"%s\", expected \"%s\"\n", - input, result, expected); + (input == NULL) ? "NULL" : input, result, expected); errors = true; } free (to_free); diff --git a/string/test-strcasestr.c b/string/test-strcasestr.c index 0a16f85dcd..f7cbcc14ef 100644 --- a/string/test-strcasestr.c +++ b/string/test-strcasestr.c @@ -67,7 +67,8 @@ check_result (impl_t *impl, const char *s1, const char *s2, if (result != exp_result) { error (0, 0, "Wrong result in function %s %s %s", impl->name, - result, exp_result); + (result == NULL) ? "NULL" : result, + (exp_result == NULL) ? "NULL" : exp_result); ret = 1; return -1; } diff --git a/string/test-strstr.c b/string/test-strstr.c index 031aff5534..17d505a228 100644 --- a/string/test-strstr.c +++ b/string/test-strstr.c @@ -66,7 +66,8 @@ check_result (impl_t *impl, const char *s1, const char *s2, if (result != exp_result) { error (0, 0, "Wrong result in function %s %s %s", impl->name, - result, exp_result); + (result == NULL) ? "NULL" : result, + (exp_result == NULL) ? "NULL" : exp_result); ret = 1; return -1; }