Re: 4.9.208 regression in perf building

Sasha Levin
2020-01-05T18:29:34Z

On Sun, Jan 05, 2020 at 05:01:00PM +0000, Gordan Bobic wrote:
>It looks like 4.9.208 introduces a build regression for perf:
>
>make -f /builddir/build/BUILD/kernel-4.9.208/linux-4.9.208-1.el7.x86_64/tools/build/Makefile.build
>dir=. obj=perf
> gcc -Wp,-MD,./.builtin-report.o.d,-MT,builtin-report.o
>-Wbad-function-cast -Wdeclaration-after-statement -Wformat-security
>-Wformat-y2k -Winit-self -Wmissing-declarations -Wmissing-prototypes
>-Wnested-externs -Wno-system-headers -Wold-style-definition -Wpacked
>-Wredundant-decls -Wshadow -Wstrict-aliasing=3 -Wstrict-prototypes
>-Wswitch-default -Wswitch-enum -Wundef -Wwrite-strings -Wformat
>-DHAVE_ARCH_X86_64_SUPPORT -DHAVE_SYSCALL_TABLE
>-Iarch/x86/include/generated -DHAVE_PERF_REGS_SUPPORT
>-DHAVE_ARCH_REGS_QUERY_REGISTER_OFFSET -O6 -fno-omit-frame-pointer
>-ggdb3 -funwind-tables -Wall -Wextra -std=gnu99 -fstack-protector-all
>-D_FORTIFY_SOURCE=2
>-I/builddir/build/BUILD/kernel-4.9.208/linux-4.9.208-1.el7.x86_64/tools/perf/util/include
>-I/builddir/build/BUILD/kernel-4.9.208/linux-4.9.208-1.el7.x86_64/tools/perf/arch/x86/include
>-I/builddir/build/BUILD/kernel-4.9.208/linux-4.9.208-1.el7.x86_64/tools/include/uapi
>-I/builddir/build/BUILD/kernel-4.9.208/linux-4.9.208-1.el7.x86_64/tools/include/
>-I/builddir/build/BUILD/kernel-4.9.208/linux-4.9.208-1.el7.x86_64/tools/arch/x86/include/uapi
>-I/builddir/build/BUILD/kernel-4.9.208/linux-4.9.208-1.el7.x86_64/tools/arch/x86/include/
>-I/builddir/build/BUILD/kernel-4.9.208/linux-4.9.208-1.el7.x86_64/tools/arch/x86/
>-I/builddir/build/BUILD/kernel-4.9.208/linux-4.9.208-1.el7.x86_64/tools/perf/util
>-I/builddir/build/BUILD/kernel-4.9.208/linux-4.9.208-1.el7.x86_64/tools/perf
>-I/builddir/build/BUILD/kernel-4.9.208/linux-4.9.208-1.el7.x86_64/tools/lib/
>-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
>-DHAVE_SYNC_COMPARE_AND_SWAP_SUPPORT
>-DHAVE_PTHREAD_ATTR_SETAFFINITY_NP -DHAVE_DWARF_GETLOCATIONS
>-DHAVE_LIBELF_SUPPORT -DHAVE_LIBELF_MMAP_SUPPORT
>-DHAVE_ELF_GETPHDRNUM_SUPPORT -DHAVE_GELF_GETNOTE_SUPPORT
>-DHAVE_ELF_GETSHDRSTRNDX_SUPPORT -DHAVE_DWARF_SUPPORT
>-DHAVE_LIBBPF_SUPPORT -DHAVE_BPF_PROLOGUE -DHAVE_SDT_EVENT
>-DHAVE_JITDUMP -DHAVE_DWARF_UNWIND_SUPPORT -DHAVE_LIBAUDIT_SUPPORT
>-DHAVE_LIBCRYPTO_SUPPORT -I/usr/include/slang -DHAVE_SLANG_SUPPORT
>-DHAVE_TIMERFD_SUPPORT -DHAVE_LIBBFD_SUPPORT -DHAVE_ZLIB_SUPPORT
>-DHAVE_LZMA_SUPPORT -DHAVE_BACKTRACE_SUPPORT -DHAVE_LIBNUMA_SUPPORT
>-DHAVE_KVM_STAT_SUPPORT -DHAVE_AUXTRACE_SUPPORT -D"BUILD_STR(s)=#s"
>-DTIPDIR="BUILD_STR(share/doc/perf-tip)"
>-DDOCDIR="BUILD_STR(/builddir/build/BUILD/kernel-4.9.208/linux-4.9.208-1.el7.x86_64/tools/perf/Documentation)"
> -c -o builtin-report.o builtin-report.c
>builtin-report.c: In function ‘report__setup_sample_type’:
>builtin-report.c:296:6: error: ‘dwarf_callchain_users’ undeclared
>(first use in this function)
> if (dwarf_callchain_users) {
> ^
>builtin-report.c:296:6: note: each undeclared identifier is reported
>only once for each function it appears in
>mv: cannot stat ‘./.builtin-report.o.tmp’: No such file or directory
>make[3]: *** [builtin-report.o] Error 1
>make[2]: *** [perf-in.o] Error 2
>make[1]: *** [sub-make] Error 2
>make: *** [all] Error 2
>
>4,9.207 works fine.

Looks like 59b706ce44db ("perf report: Add warning when libunwind not
compiled in") depends on eabad8c6856f ("perf unwind: Do not look just at
the global callchain_param.record_mode") which is tricky to backport.
I'll just drop 59b706ce44db from 4.9 and 4.4. Thanks for the report!

--
Thanks,
Sasha