From c2dc8ab6a5a4e67f96ddd3f6bfdf2c991385ec38 Mon Sep 17 00:00:00 2001 From: Adhemerval Zanella Netto Date: Fri, 21 Jul 2023 09:18:17 -0300 Subject: [PATCH] string: Fix tester with fortify enabled MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If fortify is enabled, the truncated output warning is issued by the wrapper itself: In function ‘strncpy’, inlined from ‘test_strncpy’ at tester.c:505:10: ../string/bits/string_fortified.h:95:10: error: ‘__builtin_strncpy’ destination unchanged after copying no bytes from a string of length 3 [-Werror=stringop-truncation] 95 | return __builtin___strncpy_chk (__dest, __src, __len, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 96 | __glibc_objsize (__dest)); | ~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../include/bits/string_fortified.h:1, from ../string/string.h:548, from ../include/string.h:60, from tester.c:33, from inl-tester.c:6: In function ‘strncpy’, inlined from ‘test_strncpy’ at tester.c:505:10: Checked on x86_64-linux-gnu. Reviewed-by: Carlos O'Donell --- string/tester.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/string/tester.c b/string/tester.c index 8de70ad3ce..da42c72141 100644 --- a/string/tester.c +++ b/string/tester.c @@ -26,6 +26,14 @@ #undef __USE_STRING_INLINES #endif +#include +#include + +/* Triggered by strncpy fortify wrapper when it is enabled. */ +#if __GNUC_PREREQ (8, 0) +DIAG_IGNORE_NEEDS_COMMENT (8, "-Wstringop-truncation"); +#endif + #include #include #include @@ -33,7 +41,6 @@ #include #include #include -#include /* This file tests a range of corner cases of string functions, including cases where truncation occurs or where sizes specified @@ -45,9 +52,6 @@ DIAG_IGNORE_NEEDS_COMMENT (5.0, "-Wmemset-transposed-args"); DIAG_IGNORE_NEEDS_COMMENT (9, "-Wrestrict"); DIAG_IGNORE_NEEDS_COMMENT (7, "-Wstringop-overflow="); #endif -#if __GNUC_PREREQ (8, 0) -DIAG_IGNORE_NEEDS_COMMENT (8, "-Wstringop-truncation"); -#endif #if __GNUC_PREREQ (11, 0) DIAG_IGNORE_NEEDS_COMMENT (11, "-Wstringop-overread"); #endif