Some build fixes
Arnaldo Carvalho de Melo
maintainercover Some build fixes
From: Arnaldo Carvalho de Melo <[email protected]>
Hi Namhyung,
Some fixes I noticed while building with my set of containers.
Best regards,
- Arnaldo
Arnaldo Carvalho de Melo (3):
libapi: Add missing header with NAME_MAX define to io_dir.h
perf units: Fix insufficient array space
perf hist stdio: Do bounds check when printing callchains to avoid UB with new gcc versions
tools/lib/api/io_dir.h | 1 + tools/perf/ui/stdio/hist.c | 4 ++++ tools/perf/util/units.c | 2 +- 3 files changed, 6 insertions(+), 1 deletion(-)
Signature · 1 line
2.48.1
Arnaldo Carvalho de Melo
maintainerPATCH 1/3 libapi: Add missing header with NAME_MAX define to io_dir.h
From: Arnaldo Carvalho de Melo <[email protected]>
Most systems get this indirectly, but some odd cases (some musl libc systems) can't find it, so just add the header where NAME_MAX is defined to avoid that.
--- tools/lib/api/io_dir.h | 1 + 1 file changed, 1 insertion(+)
tools/lib/api/io_dir.h +1 -0
@@ -11,6 +11,7 @@#include <unistd.h> #include <sys/stat.h> #include <sys/syscall.h> +#include <linux/limits.h> #if !defined(SYS_getdents64)#if defined(__x86_64__) || defined(__arm__)
Signature · 1 line
2.48.1
Arnaldo Carvalho de Melo
maintainerPATCH 2/3 perf units: Fix insufficient array space
In reply to Arnaldo Carvalho de MeloFrom: Arnaldo Carvalho de Melo <[email protected]>
No need to specify the array size, let the compiler figure that out.
This addresses this compiler warning that was noticed while build testing on fedora rawhide:
31 15.81 fedora:rawhide : FAIL gcc version 15.0.1 20250225 (Red Hat 15.0.1-0) (GCC)
util/units.c: In function 'unit_number__scnprintf':
util/units.c:67:24: error: initializer-string for array of 'char' is too long [-Werror=unterminated-string-initialization]
67 | char unit[4] = "BKMG";
| ^~~~~~
cc1: all warnings being treated as errors
--- tools/perf/util/units.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
tools/perf/util/units.c +1 -1
@@ -64,7 +64,7 @@ unsigned long convert_unit(unsigned long value, char *unit)int unit_number__scnprintf (char *buf,size_t size,u64 n) { -char unit[4 ] ="BKMG" ; +char unit[] ="BKMG" ;int i =0 ;while (((n /1024 ) >1 ) && (i <3 )) {
Signature · 1 line
2.48.1
Arnaldo Carvalho de Melo
maintainerPATCH 3/3 perf hist stdio: Do bounds check when printing callchains to avoid UB with new gcc versions
In reply to Arnaldo Carvalho de MeloFrom: Arnaldo Carvalho de Melo <[email protected]>
Do a simple bounds check to avoid this on new gcc versions:
31 15.81 fedora:rawhide : FAIL gcc version 15.0.1 20250225 (Red Hat 15.0.1-0) (GCC)
In function 'callchain__fprintf_left_margin',
inlined from 'callchain__fprintf_graph.constprop' at ui/stdio/hist.c:246:12:
ui/stdio/hist.c:27:39: error: iteration 2147483647 invokes undefined behavior [-Werror=aggressive-loop-optimizations]
27 | for (i = 0; i < left_margin; i++)
| ~^~
ui/stdio/hist.c:27:23: note: within this loop
27 | for (i = 0; i < left_margin; i++)
| ~~^~~~~~~~~~~~~
cc1: all warnings being treated as errors
--
util/units.c: In function 'unit_number__scnprintf':
util/units.c:67:24: error: initializer-string for array of 'char' is too long [-Werror=unterminated-string-initialization]
67 | char unit[4] = "BKMG";
| ^~~~~~
cc1: all warnings being treated as errors
--- tools/perf/ui/stdio/hist.c | 4 ++++ 1 file changed, 4 insertions(+)
tools/perf/ui/stdio/hist.c +4 -0
@@ -1,4 +1,5 @@// SPDX-License-Identifier: GPL-2.0 +#include <limits.h> #include <stdio.h> #include <stdlib.h> #include <linux/string.h>
@@ -24,6 +25,9 @@ static size_t callchain__fprintf_left_margin(FILE *fp, int left_margin)int i;int ret =fprintf (fp," " ); +if (left_margin >USHRT_MAX ) + left_margin =USHRT_MAX ; +for (i =0 ; i < left_margin; i++) ret +=fprintf (fp," " );
Signature · 1 line
2.48.1
Namhyung Kim
maintainerRe: [PATCH 3/3] perf hist stdio: Do bounds check when printing callchains to avoid UB with new gcc versions
Quoted 8 lines · Arnaldo Carvalho de Melo
From: Arnaldo Carvalho de Melo <[email protected]>
Do a simple bounds check to avoid this on new gcc versions:
31 15.81 fedora:rawhide : FAIL gcc version 15.0.1 20250225 (Red Hat 15.0.1-0) (GCC)
In function 'callchain__fprintf_left_margin',
inlined from 'callchain__fprintf_graph.constprop' atui/stdio/hist.c:246:12:
ui/stdio/hist.c:27:39: error: iteration 2147483647 invokes undefined behavior [-Werror=aggressive-loop-optimizations]
Hmm.. does it warn about a signed integer overflow?
2147483647 is 0x7fffffff in hex and it should be INT_MAX. I'm not sure what is the problem.
Quoted 4 lines
27 | for (i = 0; i <
left_margin; i++)
| ~^~
ui/stdio/hist.c:27:23: note: within this loop
27 | for (i = 0; i <left_margin; i++)
Quoted 8 lines
| ~~^~~~~~~~~~~~~
cc1: all warnings being treated as errors
--
util/units.c: In function 'unit_number__scnprintf':
util/units.c:67:24: error: initializer-string for array of 'char' is too long [-Werror=unterminated-string-initialization]
67 | char unit[4] = "BKMG";
| ^~~~~~
cc1: all warnings being treated as errors
This part belongs to the previous commit. :)
Quoted 35 lines
Cc Adrian Hunter <[email protected]>Cc Ian Rogers <[email protected]>Cc James Clark <[email protected]>Cc Jiri Olsa <[email protected]>Cc Kan Liang <[email protected]>Cc Namhyung Kim <[email protected]>Signed-off-by Arnaldo Carvalho de Melo <[email protected]>--- tools/perf/ui/stdio/hist.c | 4 ++++ 1 file changed, 4 insertions(+)tools/perf/ui/stdio/hist.c +4
-0@@ -1,4 +1,5 @@// SPDX-License-Identifier: GPL-2.0 +#include <limits.h> #include <stdio.h> #include <stdlib.h> #include <linux/string.h> @@ -24,6 +25,9 @@ static size_t callchain__fprintf_left_margin(FILE *fp, int left_margin)int i;int ret =fprintf (fp," " ); +if (left_margin >USHRT_MAX ) + left_margin =USHRT_MAX ; +for (i =0 ; i < left_margin; i++) ret +=fprintf (fp," " );Signature · 1 line
2.48.1
Namhyung Kim
maintainerRe: [PATCH 3/3] perf hist stdio: Do bounds check when printing callchains to avoid UB with new gcc versions
Quoted 10 lines · Namhyung Kim
Quoted 8 lines · Arnaldo Carvalho de Melo
From: Arnaldo Carvalho de Melo <[email protected]>
Do a simple bounds check to avoid this on new gcc versions:
31 15.81 fedora:rawhide : FAIL gcc version 15.0.1 20250225 (Red Hat 15.0.1-0) (GCC)
In function 'callchain__fprintf_left_margin',
inlined from 'callchain__fprintf_graph.constprop' atui/stdio/hist.c:246:12:
ui/stdio/hist.c:27:39: error: iteration 2147483647 invokes undefined behavior [-Werror=aggressive-loop-optimizations]
Quoted 4 lines
Hmm.. does it warn about a signed integer overflow?
2147483647 is
0x7fffffffin hex and it should beINT_MAX. I'm not sure what is the problem.
Maybe the aggressive loop optimization can unroll the loop more than the INT_MAX...? Anyway the fix is simple and makes sense.
Quoted 15 lines
Quoted 14 lines
27 | for (i = 0; i <
left_margin; i++)
| ~^~
ui/stdio/hist.c:27:23: note: within this loop
27 | for (i = 0; i <left_margin; i++)
| ~~^~~~~~~~~~~~~
cc1: all warnings being treated as errors
--
util/units.c: In function 'unit_number__scnprintf':
util/units.c:67:24: error: initializer-string for array of 'char' is too long [-Werror=unterminated-string-initialization]
67 | char unit[4] = "BKMG";
| ^~~~~~
cc1: all warnings being treated as errors
Quoted 1 line
This part belongs to the previous commit. :)
I'll drop this part.
Thanks,
Namhyung
Quoted 36 lines
Quoted 36 lines
Cc Adrian Hunter <[email protected]>Cc Ian Rogers <[email protected]>Cc James Clark <[email protected]>Cc Jiri Olsa <[email protected]>Cc Kan Liang <[email protected]>Cc Namhyung Kim <[email protected]>Signed-off-by Arnaldo Carvalho de Melo <[email protected]>--- tools/perf/ui/stdio/hist.c | 4 ++++ 1 file changed, 4 insertions(+)tools/perf/ui/stdio/hist.c +4
-0@@ -1,4 +1,5 @@// SPDX-License-Identifier: GPL-2.0 +#include <limits.h> #include <stdio.h> #include <stdlib.h> #include <linux/string.h> @@ -24,6 +25,9 @@ static size_t callchain__fprintf_left_margin(FILE *fp, int left_margin)int i;int ret =fprintf (fp," " ); +if (left_margin >USHRT_MAX ) + left_margin =USHRT_MAX ; +for (i =0 ; i < left_margin; i++) ret +=fprintf (fp," " );Signature · 1 line
2.48.1
Quoted 9 lines · Arnaldo Carvalho de Melo
From: Arnaldo Carvalho de Melo <[email protected]>
Hi Namhyung,
Some fixes I noticed while building with my set of containers.
Best regards,
[...]
Applied to perf-tools-next, thanks!
Best regards,
Namhyung