* [REGRESSION] perf build failed after 5cf6e76e4f4f ("libperf: Don't remove -g when EXTRA_CFLAGS are used") on riscv64 with gcc 13
@ 2026-03-19 1:56 Haixiao Yan
2026-03-19 8:21 ` Ian Rogers
0 siblings, 1 reply; 3+ messages in thread
From: Haixiao Yan @ 2026-03-19 1:56 UTC (permalink / raw)
To: peterz, mingo, acme, namhyung, mark.rutland, alexander.shishkin,
jolsa, irogers, adrian.hunter, james.clark, linux-perf-users, pjw,
palmer, aou, alex, linux-riscv, linux-kernel
Cc: stable
Hi,
Commit[5cf6e76e4f4f](https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/tools/lib/perf/Makefile?h=linux-6.6.y&id=5cf6e76e4f4fee54c0056758b639cf4919cffba9)
changed the libperf Makefile to preserve external CFLAGS instead of overriding them. As a result, the -O6 optimization flags from perf's
build system are now inherited by libperf during compilation. This triggers a false positive -Walloc-size-larger-than= warning in GCC 13 on
riscv64, causing the build to fail with -Werror.
| cpumap.c: In function 'perf_cpu_map__merge':
| cpumap.c:422:20: error: argument 1 range [18446744065119617024, 18446744073709551612] exceeds maximum objec
t size 9223372036854775807 [-Werror=alloc-size-larger-than=]
| 422 | tmp_cpus = malloc(tmp_len * sizeof(struct perf_cpu));
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| In file included from cpumap.c:3:
| /buildarea5/hyan-cn/project_yocto/poky/build-riscv64/tmp/work/qemuriscv64-poky-linux/perf/1.0/recipe-sysroo
t/usr/include/stdlib.h:672:14: note: in a call to allocation function 'malloc' declared here
| 672 | extern void *malloc (size_t __size) __THROW __attribute_malloc__
| | ^~~~~~
| rm -f /buildarea5/hyan-cn/project_yocto/poky/build-riscv64/tmp/work/qemuriscv64-poky-linux/perf/1.0/perf-1.
0/libapi/libapi.a && riscv64-poky-linux-gcc-ar rcs /buildarea5/hyan-cn/project_yocto/poky/build-riscv64/tmp/w
ork/qemuriscv64-poky-linux/perf/1.0/perf-1.0/libapi/libapi.a /buildarea5/hyan-cn/project_yocto/poky/build-ris
cv64/tmp/work/qemuriscv64-poky-linux/perf/1.0/perf-1.0/libapi/libapi-in.o
| cc1: all warnings being treated as errors
Steps to reproduce:
git clone -b scarthgap https://git.yoctoproject.org/poky
cd poky
sed -i 's/af240d7d57ebf66e87bc2dff34855e630a97ead1/5cf6e76e4f4fee54c0056758b639cf4919cffba9/' meta/recipes-kernel/linux/linux-yocto_6.6.bb
source oe-init-build-env build-riscv64
cat >> conf/local.conf << 'EOF'
MACHINE = "qemuriscv64"
'KERNEL_VERSION_SANITY_SKIP = "1"'
EOF
bitbake perf
I have confirmed that:
Known to fail: gcc 13.3.0, 13.4.0
Known to work: gcc 11.5.0, 12.5.0, 14.3.0, 15.2.0
Not sure whether this is a gcc bug.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=124549 filed to gcc.
Thanks,
Haixiao
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [REGRESSION] perf build failed after 5cf6e76e4f4f ("libperf: Don't remove -g when EXTRA_CFLAGS are used") on riscv64 with gcc 13
2026-03-19 1:56 [REGRESSION] perf build failed after 5cf6e76e4f4f ("libperf: Don't remove -g when EXTRA_CFLAGS are used") on riscv64 with gcc 13 Haixiao Yan
@ 2026-03-19 8:21 ` Ian Rogers
2026-03-20 3:28 ` Yan, Haixiao (CN)
0 siblings, 1 reply; 3+ messages in thread
From: Ian Rogers @ 2026-03-19 8:21 UTC (permalink / raw)
To: Haixiao Yan, Chingbin Li
Cc: peterz, mingo, acme, namhyung, mark.rutland, alexander.shishkin,
jolsa, adrian.hunter, james.clark, linux-perf-users, pjw, palmer,
aou, alex, linux-riscv, linux-kernel, stable
On Wed, Mar 18, 2026 at 6:57 PM Haixiao Yan
<haixiao.yan.cn@windriver.com> wrote:
>
> Hi,
>
> Commit[5cf6e76e4f4f](https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/tools/lib/perf/Makefile?h=linux-6.6.y&id=5cf6e76e4f4fee54c0056758b639cf4919cffba9)
> changed the libperf Makefile to preserve external CFLAGS instead of overriding them. As a result, the -O6 optimization flags from perf's
> build system are now inherited by libperf during compilation. This triggers a false positive -Walloc-size-larger-than= warning in GCC 13 on
> riscv64, causing the build to fail with -Werror.
>
> | cpumap.c: In function 'perf_cpu_map__merge':
> | cpumap.c:422:20: error: argument 1 range [18446744065119617024, 18446744073709551612] exceeds maximum objec
> t size 9223372036854775807 [-Werror=alloc-size-larger-than=]
> | 422 | tmp_cpus = malloc(tmp_len * sizeof(struct perf_cpu));
> | | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> | In file included from cpumap.c:3:
> | /buildarea5/hyan-cn/project_yocto/poky/build-riscv64/tmp/work/qemuriscv64-poky-linux/perf/1.0/recipe-sysroo
> t/usr/include/stdlib.h:672:14: note: in a call to allocation function 'malloc' declared here
> | 672 | extern void *malloc (size_t __size) __THROW __attribute_malloc__
> | | ^~~~~~
> | rm -f /buildarea5/hyan-cn/project_yocto/poky/build-riscv64/tmp/work/qemuriscv64-poky-linux/perf/1.0/perf-1.
> 0/libapi/libapi.a && riscv64-poky-linux-gcc-ar rcs /buildarea5/hyan-cn/project_yocto/poky/build-riscv64/tmp/w
> ork/qemuriscv64-poky-linux/perf/1.0/perf-1.0/libapi/libapi.a /buildarea5/hyan-cn/project_yocto/poky/build-ris
> cv64/tmp/work/qemuriscv64-poky-linux/perf/1.0/perf-1.0/libapi/libapi-in.o
> | cc1: all warnings being treated as errors
Hi Haixiao,
this was raised before by Chingbin in:
https://lore.kernel.org/lkml/20260212025127.841090-1-liqb365@163.com/
I was concerned about the introduction of volatile to avoid this
warning. I've mailed out what is hopefully a fix without volatile in
it:
https://lore.kernel.org/lkml/20260319081843.1650640-1-irogers@google.com/
If you could take a look.
Thanks,
Ian
> Steps to reproduce:
>
> git clone -b scarthgap https://git.yoctoproject.org/poky
> cd poky
> sed -i 's/af240d7d57ebf66e87bc2dff34855e630a97ead1/5cf6e76e4f4fee54c0056758b639cf4919cffba9/' meta/recipes-kernel/linux/linux-yocto_6.6.bb
>
> source oe-init-build-env build-riscv64
>
> cat >> conf/local.conf << 'EOF'
> MACHINE = "qemuriscv64"
> 'KERNEL_VERSION_SANITY_SKIP = "1"'
> EOF
>
> bitbake perf
>
> I have confirmed that:
> Known to fail: gcc 13.3.0, 13.4.0
> Known to work: gcc 11.5.0, 12.5.0, 14.3.0, 15.2.0
>
> Not sure whether this is a gcc bug.
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=124549 filed to gcc.
>
> Thanks,
> Haixiao
>
>
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [REGRESSION] perf build failed after 5cf6e76e4f4f ("libperf: Don't remove -g when EXTRA_CFLAGS are used") on riscv64 with gcc 13
2026-03-19 8:21 ` Ian Rogers
@ 2026-03-20 3:28 ` Yan, Haixiao (CN)
0 siblings, 0 replies; 3+ messages in thread
From: Yan, Haixiao (CN) @ 2026-03-20 3:28 UTC (permalink / raw)
To: Ian Rogers, Chingbin Li
Cc: peterz, mingo, acme, namhyung, mark.rutland, alexander.shishkin,
jolsa, adrian.hunter, james.clark, linux-perf-users, pjw, palmer,
aou, alex, linux-riscv, linux-kernel, stable
On 3/19/2026 4:21 PM, Ian Rogers wrote:
> CAUTION: This email comes from a non Wind River email account!
> Do not click links or open attachments unless you recognize the sender and know the content is safe.
>
> On Wed, Mar 18, 2026 at 6:57 PM Haixiao Yan
> <haixiao.yan.cn@windriver.com> wrote:
>> Hi,
>>
>> Commit[5cf6e76e4f4f](https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/tools/lib/perf/Makefile?h=linux-6.6.y&id=5cf6e76e4f4fee54c0056758b639cf4919cffba9)
>> changed the libperf Makefile to preserve external CFLAGS instead of overriding them. As a result, the -O6 optimization flags from perf's
>> build system are now inherited by libperf during compilation. This triggers a false positive -Walloc-size-larger-than= warning in GCC 13 on
>> riscv64, causing the build to fail with -Werror.
>>
>> | cpumap.c: In function 'perf_cpu_map__merge':
>> | cpumap.c:422:20: error: argument 1 range [18446744065119617024, 18446744073709551612] exceeds maximum objec
>> t size 9223372036854775807 [-Werror=alloc-size-larger-than=]
>> | 422 | tmp_cpus = malloc(tmp_len * sizeof(struct perf_cpu));
>> | | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> | In file included from cpumap.c:3:
>> | /buildarea5/hyan-cn/project_yocto/poky/build-riscv64/tmp/work/qemuriscv64-poky-linux/perf/1.0/recipe-sysroo
>> t/usr/include/stdlib.h:672:14: note: in a call to allocation function 'malloc' declared here
>> | 672 | extern void *malloc (size_t __size) __THROW __attribute_malloc__
>> | | ^~~~~~
>> | rm -f /buildarea5/hyan-cn/project_yocto/poky/build-riscv64/tmp/work/qemuriscv64-poky-linux/perf/1.0/perf-1.
>> 0/libapi/libapi.a && riscv64-poky-linux-gcc-ar rcs /buildarea5/hyan-cn/project_yocto/poky/build-riscv64/tmp/w
>> ork/qemuriscv64-poky-linux/perf/1.0/perf-1.0/libapi/libapi.a /buildarea5/hyan-cn/project_yocto/poky/build-ris
>> cv64/tmp/work/qemuriscv64-poky-linux/perf/1.0/perf-1.0/libapi/libapi-in.o
>> | cc1: all warnings being treated as errors
> Hi Haixiao,
>
> this was raised before by Chingbin in:
> https://lore.kernel.org/lkml/20260212025127.841090-1-liqb365@163.com/
> I was concerned about the introduction of volatile to avoid this
> warning. I've mailed out what is hopefully a fix without volatile in
> it:
> https://lore.kernel.org/lkml/20260319081843.1650640-1-irogers@google.com/
> If you could take a look.
Hi Ian,
I have verified this patch on the master branch using gcc 13.4.0 for
both riscv64 and ppc64 targets, and
can confirm the issue is resolved.
It would be greatly appreciated if this could be backported to the
linux-6.6.y stable branch.
Thanks,
Haixiao
>
> Thanks,
> Ian
>
>> Steps to reproduce:
>>
>> git clone -b scarthgap https://git.yoctoproject.org/poky
>> cd poky
>> sed -i 's/af240d7d57ebf66e87bc2dff34855e630a97ead1/5cf6e76e4f4fee54c0056758b639cf4919cffba9/' meta/recipes-kernel/linux/linux-yocto_6.6.bb
>>
>> source oe-init-build-env build-riscv64
>>
>> cat >> conf/local.conf << 'EOF'
>> MACHINE = "qemuriscv64"
>> 'KERNEL_VERSION_SANITY_SKIP = "1"'
>> EOF
>>
>> bitbake perf
>>
>> I have confirmed that:
>> Known to fail: gcc 13.3.0, 13.4.0
>> Known to work: gcc 11.5.0, 12.5.0, 14.3.0, 15.2.0
>>
>> Not sure whether this is a gcc bug.
>> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=124549 filed to gcc.
>>
>> Thanks,
>> Haixiao
>>
>>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-03-20 3:30 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-19 1:56 [REGRESSION] perf build failed after 5cf6e76e4f4f ("libperf: Don't remove -g when EXTRA_CFLAGS are used") on riscv64 with gcc 13 Haixiao Yan
2026-03-19 8:21 ` Ian Rogers
2026-03-20 3:28 ` Yan, Haixiao (CN)
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox