Message ID | tencent_32CBE47252C5F69571B40751DE6054082D05@qq.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | selftests/damon: Fix unnecessary compilation warnings | expand |
Hi Rong, It would be better if you could notice the version of this patch using 'PATCH v2' like subject prefix from next time. On Fri, 11 Nov 2022 10:37:20 +0800 Rong Tao <rtoax@foxmail.com> wrote: > From: Rong Tao <rongtao@cestc.cn> > > When testing overflow and overread, there is no need to keep unnecessary > compilation warnings, we should simply ignore them. > > How to reproduce the problem: > > $ make -C tools/testing/selftests/ > ... > warning: ‘write’ reading 4294967295 bytes from a region of size 1 > [-Wstringop-overread] > warning: ‘read’ writing 4294967295 bytes into a region of size 25 > overflows the destination [-Wstringop-overflow=] Thank you for indenting as I suggested! BTW, I'm ok to violate the line length limit for quoting commands outputs. > > Signed-off-by: Rong Tao <rongtao@cestc.cn> > --- > tools/testing/selftests/damon/huge_count_read_write.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/tools/testing/selftests/damon/huge_count_read_write.c b/tools/testing/selftests/damon/huge_count_read_write.c > index ad7a6b4cf338..8fbe276870e7 100644 > --- a/tools/testing/selftests/damon/huge_count_read_write.c > +++ b/tools/testing/selftests/damon/huge_count_read_write.c > @@ -8,6 +8,11 @@ > #include <unistd.h> > #include <stdio.h> > > +#pragma GCC diagnostic push > +/* Ignore read(2) overflow and write(2) overread compile warnings */ > +#pragma GCC diagnostic ignored "-Wstringop-overread" This still trigger below error on my old gcc. gcc -Wno-stringop-overread -Wno-stringop-overflow huge_count_read_write.c -o /home/sjpark/linux/tools/testing/selftests/damon/huge_count_read_write huge_count_read_write.c:13:32: warning: unknown option after ‘#pragma GCC diagnostic’ kind [-Wpragmas] 13 | #pragma GCC diagnostic ignored "-Wstringop-overread" | ^~~~~~~~~~~~~~~~~~~~~ cc1: warning: unrecognized command line option ‘-Wno-stringop-overread’ I don't think that's a blocker of this patch, but hope to hear your opinion. Thanks, SJ > +#pragma GCC diagnostic ignored "-Wstringop-overflow" > + > void write_read_with_huge_count(char *file) > { > int filedesc = open(file, O_RDWR); > @@ -27,6 +32,8 @@ void write_read_with_huge_count(char *file) > close(filedesc); > } > > +#pragma GCC diagnostic pop > + > int main(int argc, char *argv[]) > { > if (argc != 2) { > -- > 2.31.1 >
Hi, Park, I just search on GCC source code, found GCC support "-Wstringop-overread" at least gcc-11.1.0, commit d14c547abd48("Add -Wstringop-overread for reading past the end by string functions."). AND found a testsuite gcc/gcc/testsuite/gcc.dg/pragma-diag-10.c 10 #pragma GCC diagnostic push 11 #pragma GCC diagnostic ignored "-Wstringop-overflow" 12 #pragma GCC diagnostic ignored "-Wstringop-overread" 13 if (c != 0) 14 return __builtin_memchr (s, c, (unsigned long)-1); 15 #pragma GCC diagnostic pop it's totally same as this PATCH. I think the motivation for this patch is to eliminate the compilation warning, maybe one day we will compile the kernel with "-Werror -Wall", at which point this compilation warning will turn into a compilation error, and in case we already know it, we should fix this error in advance. For old gcc, we can add this? #pragma GCC diagnostic push +#if __GNUC__ >= 11 && __GNUC_MINOR__ >= 1 /* Ignore read(2) overflow and write(2) overread compile warnings */ #pragma GCC diagnostic ignored "-Wstringop-overread" #pragma GCC diagnostic ignored "-Wstringop-overflow" +#endif What do you think? Good day! Rong Tao
Hi Rong, On Sat, 12 Nov 2022 13:01:04 +0800 Rong Tao <rtoax@foxmail.com> wrote: > Hi, Park, I just search on GCC source code, found GCC support > "-Wstringop-overread" at least gcc-11.1.0, commit d14c547abd48("Add > -Wstringop-overread for reading past the end by string functions."). > > AND found a testsuite gcc/gcc/testsuite/gcc.dg/pragma-diag-10.c > > 10 #pragma GCC diagnostic push > 11 #pragma GCC diagnostic ignored "-Wstringop-overflow" > 12 #pragma GCC diagnostic ignored "-Wstringop-overread" > 13 if (c != 0) > 14 return __builtin_memchr (s, c, (unsigned long)-1); > 15 #pragma GCC diagnostic pop > > it's totally same as this PATCH. > > I think the motivation for this patch is to eliminate the compilation > warning, maybe one day we will compile the kernel with "-Werror -Wall", > at which point this compilation warning will turn into a compilation > error, and in case we already know it, we should fix this error in > advance. > > For old gcc, we can add this? > > #pragma GCC diagnostic push > +#if __GNUC__ >= 11 && __GNUC_MINOR__ >= 1 > /* Ignore read(2) overflow and write(2) overread compile warnings */ > #pragma GCC diagnostic ignored "-Wstringop-overread" > #pragma GCC diagnostic ignored "-Wstringop-overflow" > +#endif > > What do you think? I think it looks great! Looking forward to your v3 patch! Thanks, SJ > > Good day! > Rong Tao
diff --git a/tools/testing/selftests/damon/huge_count_read_write.c b/tools/testing/selftests/damon/huge_count_read_write.c index ad7a6b4cf338..8fbe276870e7 100644 --- a/tools/testing/selftests/damon/huge_count_read_write.c +++ b/tools/testing/selftests/damon/huge_count_read_write.c @@ -8,6 +8,11 @@ #include <unistd.h> #include <stdio.h> +#pragma GCC diagnostic push +/* Ignore read(2) overflow and write(2) overread compile warnings */ +#pragma GCC diagnostic ignored "-Wstringop-overread" +#pragma GCC diagnostic ignored "-Wstringop-overflow" + void write_read_with_huge_count(char *file) { int filedesc = open(file, O_RDWR); @@ -27,6 +32,8 @@ void write_read_with_huge_count(char *file) close(filedesc); } +#pragma GCC diagnostic pop + int main(int argc, char *argv[]) { if (argc != 2) {