Em Thu, Jan 04, 2024 at 09:27:11AM -0300, Arnaldo Carvalho de Melo escreveu: > Em Thu, Jan 04, 2024 at 10:33:58AM +0100, Jiri Olsa escreveu: > > On Thu, Jan 04, 2024 at 12:04:17AM -0300, Arnaldo Carvalho de Melo wrote: > > > The header with the prototype for basename() is missing in the gen.c > > > file, which breaks the build in distros where that header doesn't get > > > include by some of the other includes present in gen.c, by luck, fix it. > > > > > > Noticed when build perf on the Alpine Linux edge. > > > > > > Signed-off-by: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx> > > > > > > --- > > > > > > diff --git a/tools/bpf/bpftool/gen.c b/tools/bpf/bpftool/gen.c > > > index ee3ce2b8000d75d2..0e50722588b48fa0 100644 > > > --- a/tools/bpf/bpftool/gen.c > > > +++ b/tools/bpf/bpftool/gen.c > > > @@ -7,6 +7,7 @@ > > > #include <ctype.h> > > > #include <errno.h> > > > #include <fcntl.h> > > > +#include <libgen.h> > > > #include <linux/err.h> > > > this gives me compile warning on fedora: > > Oh well, I looked at perf files and found: > > ⬢[acme@toolbox perf-tools-next]$ git grep basename tools/perf > tools/perf/builtin-daemon.c: base = basename(basen); > > And on alpine:edge: > > / $ grep '\<basename(' /usr/include/*.h > /usr/include/libgen.h:char *basename(char *); > / $ cat /usr/include/libgen.h > #ifndef _LIBGEN_H > #define _LIBGEN_H > > #ifdef __cplusplus > extern "C" { > #endif > > char *dirname(char *); > char *basename(char *); > > #ifdef __cplusplus > } > #endif > > #endif > / $ > > And in tools/perf/builtin-daemon.c we have: > > ⬢[acme@toolbox perf-tools-next]$ grep libgen tools/perf/builtin-daemon.c > #include <libgen.h> > ⬢[acme@toolbox perf-tools-next]$ > > And the error on alpine: > > gen.c: In function 'get_obj_name': > gen.c:60:23: warning: implicit declaration of function 'basename' [-Wimplicit-function-declaration] > 60 | strncpy(name, basename(file), MAX_OBJ_NAME_LEN - 1); > | ^~~~~~~~ > > the libgen.h include wasn't there, looks trivial. > > Was late at night, thought about leaving for tomorrow for further tests > but seemed so obvious... duh ;-) And then... perfbuilder@number:~$ export BUILD_TARBALL=http://192.168.86.5/perf/perf-6.7.0-rc6.tar.xz perfbuilder@number:~$ time dm 1 71.62 almalinux:8 : Ok gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-20) , clang version 16.0.6 (Red Hat 16.0.6-2.module_el8.9.0+3621+df7f7146) flex 2.6.1 2 71.37 almalinux:9 : Ok gcc (GCC) 11.4.1 20230605 (Red Hat 11.4.1-2) , clang version 16.0.6 (Red Hat 16.0.6-1.el9) flex 2.6.4 3 87.83 alpine:3.15 : Ok gcc (Alpine 10.3.1_git20211027) 10.3.1 20211027 , Alpine clang version 12.0.1 flex 2.6.4 4 83.05 alpine:3.16 : Ok gcc (Alpine 11.2.1_git20220219) 11.2.1 20220219 , Alpine clang version 13.0.1 flex 2.6.4 5 74.18 alpine:3.17 : Ok gcc (Alpine 12.2.1_git20220924-r4) 12.2.1 20220924 , Alpine clang version 15.0.7 flex 2.6.4 6 68.24 alpine:3.18 : Ok gcc (Alpine 12.2.1_git20220924-r10) 12.2.1 20220924 , Alpine clang version 16.0.6 flex 2.6.4 7 71.32 alpine:3.19 : Ok gcc (Alpine 13.2.1_git20231014) 13.2.1 20231014 , Alpine clang version 17.0.5 flex 2.6.4 8 6.91 alpine:edge : FAIL gcc version 13.2.1 20231014 (Alpine 13.2.1_git20231014) 60 | strncpy(name, basename(file), MAX_OBJ_NAME_LEN - 1); | ^~~~~~~~~~~~~~ | | | int In file included from gen.c:13: /usr/include/fortify/string.h:139:48: note: expected 'const char *' but argument is of type 'int' 139 | const char *__s, size_t __n) | ~~~~~~~~~~~~^~~ LINK /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/bpftool CLANG /tmp/build/perf/util/bpf_skel/.tmp/bpf_prog_profiler.bpf.o CLANG /tmp/build/perf/util/bpf_skel/.tmp/bperf_leader.bpf.o CLANG /tmp/build/perf/util/bpf_skel/.tmp/bperf_follower.bpf.o CLANG /tmp/build/perf/util/bpf_skel/.tmp/bperf_cgroup.bpf.o CLANG /tmp/build/perf/util/bpf_skel/.tmp/func_latency.bpf.o CLANG /tmp/build/perf/util/bpf_skel/.tmp/off_cpu.bpf.o 9 51.66 amazonlinux:2 : Ok gcc (GCC) 7.3.1 20180712 (Red Hat 7.3.1-17) , clang version 11.1.0 (Amazon Linux 2 11.1.0-1.amzn2.0.2) flex 2.5.37 10 60.77 amazonlinux:2023 : Ok gcc (GCC) 11.4.1 20230605 (Red Hat 11.4.1-2) , clang version 15.0.7 (Amazon Linux 15.0.7-3.amzn2023.0.1) flex 2.6.4 11 61.29 amazonlinux:devel : Ok gcc (GCC) 11.3.1 20221121 (Red Hat 11.3.1-4) , clang version 15.0.6 (Amazon Linux 15.0.6-3.amzn2023.0.2) flex 2.6.4 12 74.72 archlinux:base : Ok gcc (GCC) 13.2.1 20230801 , clang version 16.0.6 flex 2.6.4 / $ grep -B8 -A2 -w basename /usr/include/string.h #ifdef _GNU_SOURCE #define strdupa(x) strcpy(alloca(strlen(x)+1),x) int strverscmp (const char *, const char *); char *strchrnul(const char *, int); char *strcasestr(const char *, const char *); void *memrchr(const void *, int, size_t); void *mempcpy(void *, const void *, size_t); #ifndef __cplusplus char *basename(); #endif #endif / $ cat /etc/os-release NAME="Alpine Linux" ID=alpine VERSION_ID=3.19.0 PRETTY_NAME="Alpine Linux v3.19" HOME_URL="https://alpinelinux.org/" BUG_REPORT_URL="https://gitlab.alpinelinux.org/alpine/aports/-/issues" / $ Weird, they had it and now removed the _GNU_SOURCE bits (edge is their devel distro, like rawhide is for fedora, tumbleweed for opensuse, etc). - Arnaldo > > gen.c: In function ‘get_obj_name’: > > gen.c:61:32: warning: passing argument 1 of ‘__xpg_basename’ discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers] > > 61 | strncpy(name, basename(file), MAX_OBJ_NAME_LEN - 1); > > | ^~~~ > > In file included from gen.c:10: > > /usr/include/libgen.h:34:36: note: expected ‘char *’ but argument is of type ‘const char *’ > > 34 | extern char *__xpg_basename (char *__path) __THROW; > > | ~~~~~~^~~~~~ > > > > > > looks like there are 2 versions of basename (man 3 basename): > > > > VERSIONS > > There are two different versions of basename() - the POSIX version described above, and the GNU version, which one gets after > > > > #define _GNU_SOURCE /* See feature_test_macros(7) */ > > #include <string.h> > > > > The GNU version never modifies its argument, and returns the empty string when path has a trailing slash, and in particular also when it is "/". > > There is no GNU version of dirname(). > > > > With glibc, one gets the POSIX version of basename() when <libgen.h> is included, and the GNU version otherwise. > > > > > > I think we want to keep the GNU version declaration, but not sure how > > to fix the bpftool on Alpine Linux edge, what's the exact build error? > > BUILD_TARBALL_HEAD=ec5257d99e6894d65fae772ca43c53b3d6855115 > Using built-in specs. > COLLECT_GCC=gcc > COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-alpine-linux-musl/13.2.1/lto-wrapper > Target: x86_64-alpine-linux-musl > Configured with: /home/buildozer/aports/main/gcc/src/gcc-13-20231014/configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --build=x86_64-alpine-linux-musl --host=x86_64-alpine-linux-musl --target=x86_64-alpine-linux-musl --enable-checking=release --disable-cet --disable-fixed-point --disable-libstdcxx-pch --disable-multilib --disable-nls --disable-werror --disable-symvers --enable-__cxa_atexit --enable-default-pie --enable-default-ssp --enable-languages=c,c++,d,objc,go,fortran,ada --enable-link-serialization=2 --enable-linker-build-id --disable-libssp --disable-libsanitizer --enable-shared --enable-threads --enable-tls --with-bugurl=https://gitlab.alpinelinux.org/alpine/aports/-/issues --with-system-zlib --with-linker-hash-style=gnu --with-pkgversion='Alpine 13.2.1_git20231014' > Thread model: posix > Supported LTO compression algorithms: zlib > gcc version 13.2.1 20231014 (Alpine 13.2.1_git20231014) > + make 'PYTHON=python3' 'ARCH=' 'CROSS_COMPILE=' 'EXTRA_CFLAGS=' -C tools/perf 'O=/tmp/build/perf' > make: Entering directory '/git/perf-6.7.0-rc6/tools/perf' > BUILD: Doing 'make -j28' parallel build > HOSTCC /tmp/build/perf/fixdep.o > HOSTLD /tmp/build/perf/fixdep-in.o > LINK /tmp/build/perf/fixdep > Warning: Skipped check-headers due to missing ../../include > Makefile.config:612: No sys/sdt.h found, no SDT events are defined, please install systemtap-sdt-devel or systemtap-sdt-dev > Makefile.config:1093: No libbabeltrace found, disables 'perf data' CTF format support, please install libbabeltrace-dev[el]/libbabeltrace-ctf-dev > Makefile.config:1127: No alternatives command found, you need to set JDIR= to point to the root of your Java directory > Makefile.config:1158: libpfm4 not found, disables libpfm4 support. Please install libpfm4-dev > > Auto-detecting system features: > ... dwarf: [ on ] > ... dwarf_getlocations: [ on ] > ... glibc: [ OFF ] > ... libbfd: [ on ] > ... libbfd-buildid: [ on ] > ... libcap: [ on ] > ... libelf: [ on ] > ... libnuma: [ on ] > ... numa_num_possible_cpus: [ on ] > ... libperl: [ on ] > ... libpython: [ on ] > ... libcrypto: [ on ] > ... libunwind: [ on ] > ... libdw-dwarf-unwind: [ on ] > ... zlib: [ on ] > ... lzma: [ on ] > ... get_cpuid: [ on ] > ... bpf: [ on ] > ... libaio: [ on ] > ... libzstd: [ on ] > > GEN /tmp/build/perf/common-cmds.h > PERF_VERSION = 6.7.rc6.gec5257d99e68 > GEN perf-archive > GEN perf-iostat > CC /tmp/build/perf/dlfilters/dlfilter-test-api-v2.o > CC /tmp/build/perf/dlfilters/dlfilter-test-api-v0.o > CC /tmp/build/perf/dlfilters/dlfilter-show-cycles.o > GEN /tmp/build/perf/arch/arm64/include/generated/asm/sysreg-defs.h > INSTALL /tmp/build/perf/libsubcmd/include/subcmd/exec-cmd.h > INSTALL /tmp/build/perf/libsubcmd/include/subcmd/help.h > INSTALL /tmp/build/perf/libsubcmd/include/subcmd/pager.h > INSTALL /tmp/build/perf/libsubcmd/include/subcmd/parse-options.h > INSTALL /tmp/build/perf/libsubcmd/include/subcmd/run-command.h > CC /tmp/build/perf/libsubcmd/exec-cmd.o > INSTALL libsubcmd_headers > CC /tmp/build/perf/libsubcmd/help.o > CC /tmp/build/perf/libsubcmd/pager.o > CC /tmp/build/perf/libsubcmd/parse-options.o > CC /tmp/build/perf/libsubcmd/run-command.o > CC /tmp/build/perf/libsubcmd/sigchain.o > CC /tmp/build/perf/libsubcmd/subcmd-config.o > INSTALL /tmp/build/perf/libsymbol/include/symbol/kallsyms.h > CC /tmp/build/perf/libsymbol/kallsyms.o > INSTALL libsymbol_headers > INSTALL /tmp/build/perf/libperf/include/perf/bpf_perf.h > INSTALL /tmp/build/perf/libperf/include/perf/core.h > INSTALL /tmp/build/perf/libperf/include/perf/cpumap.h > GEN /tmp/build/perf/libbpf/bpf_helper_defs.h > INSTALL /tmp/build/perf/libperf/include/perf/threadmap.h > INSTALL /tmp/build/perf/libbpf/include/bpf/bpf.h > INSTALL /tmp/build/perf/libperf/include/perf/evlist.h > INSTALL /tmp/build/perf/libperf/include/perf/evsel.h > CC /tmp/build/perf/libperf/core.o > INSTALL /tmp/build/perf/libperf/include/perf/event.h > INSTALL /tmp/build/perf/libperf/include/perf/mmap.h > INSTALL /tmp/build/perf/libbpf/include/bpf/libbpf.h > INSTALL /tmp/build/perf/libapi/include/api/cpu.h > CC /tmp/build/perf/libperf/cpumap.o > INSTALL /tmp/build/perf/libapi/include/api/debug.h > INSTALL /tmp/build/perf/libapi/include/api/io.h > CC /tmp/build/perf/libperf/threadmap.o > INSTALL /tmp/build/perf/libapi/include/api/fd/array.h > MKDIR /tmp/build/perf/libapi/fd/ > CC /tmp/build/perf/libperf/evsel.o > LINK /tmp/build/perf/dlfilters/dlfilter-show-cycles.so > CC /tmp/build/perf/libapi/fd/array.o > INSTALL /tmp/build/perf/libbpf/include/bpf/btf.h > INSTALL /tmp/build/perf/libbpf/include/bpf/libbpf_common.h > MKDIR /tmp/build/perf/libapi/fs/ > CC /tmp/build/perf/libapi/fs/fs.o > INSTALL /tmp/build/perf/libperf/include/internal/cpumap.h > INSTALL /tmp/build/perf/libperf/include/internal/evlist.h > CC /tmp/build/perf/libperf/evlist.o > INSTALL /tmp/build/perf/libapi/include/api/fs/fs.h > INSTALL /tmp/build/perf/libperf/include/internal/evsel.h > CC /tmp/build/perf/libperf/mmap.o > INSTALL /tmp/build/perf/libapi/include/api/fs/tracing_path.h > CC /tmp/build/perf/libperf/zalloc.o > INSTALL libapi_headers > MKDIR /tmp/build/perf/libapi/fs/ > INSTALL /tmp/build/perf/libperf/include/internal/lib.h > CC /tmp/build/perf/libapi/fs/tracing_path.o > CC /tmp/build/perf/libapi/fs/cgroup.o > INSTALL /tmp/build/perf/libperf/include/internal/mmap.h > INSTALL /tmp/build/perf/libperf/include/internal/rc_check.h > INSTALL /tmp/build/perf/libperf/include/internal/threadmap.h > INSTALL /tmp/build/perf/libperf/include/internal/xyarray.h > INSTALL libperf_headers > LINK /tmp/build/perf/dlfilters/dlfilter-test-api-v0.so > CC /tmp/build/perf/libperf/xyarray.o > LINK /tmp/build/perf/dlfilters/dlfilter-test-api-v2.so > CC /tmp/build/perf/libperf/lib.o > CC /tmp/build/perf/libapi/cpu.o > INSTALL /tmp/build/perf/libbpf/include/bpf/libbpf_legacy.h > INSTALL /tmp/build/perf/libbpf/include/bpf/bpf_helpers.h > INSTALL /tmp/build/perf/libbpf/include/bpf/bpf_tracing.h > CC /tmp/build/perf/libapi/debug.o > INSTALL /tmp/build/perf/libbpf/include/bpf/bpf_endian.h > INSTALL /tmp/build/perf/libbpf/include/bpf/bpf_core_read.h > INSTALL /tmp/build/perf/libbpf/include/bpf/skel_internal.h > INSTALL /tmp/build/perf/libbpf/include/bpf/libbpf_version.h > INSTALL /tmp/build/perf/libbpf/include/bpf/usdt.bpf.h > CC /tmp/build/perf/libapi/str_error_r.o > LD /tmp/build/perf/libapi/fd/libapi-in.o > INSTALL /tmp/build/perf/libbpf/include/bpf/bpf_helper_defs.h > INSTALL libbpf_headers > MKDIR /tmp/build/perf/libbpf/staticobjs/ > CC /tmp/build/perf/libbpf/staticobjs/libbpf.o > MKDIR /tmp/build/perf/libbpf/staticobjs/ > CC /tmp/build/perf/libbpf/staticobjs/bpf.o > CC /tmp/build/perf/libbpf/staticobjs/nlattr.o > CC /tmp/build/perf/libbpf/staticobjs/btf.o > CC /tmp/build/perf/libbpf/staticobjs/libbpf_errno.o > CC /tmp/build/perf/libbpf/staticobjs/str_error.o > CC /tmp/build/perf/libbpf/staticobjs/netlink.o > CC /tmp/build/perf/libbpf/staticobjs/bpf_prog_linfo.o > CC /tmp/build/perf/libbpf/staticobjs/libbpf_probes.o > CC /tmp/build/perf/libbpf/staticobjs/hashmap.o > CC /tmp/build/perf/libbpf/staticobjs/btf_dump.o > CC /tmp/build/perf/libbpf/staticobjs/ringbuf.o > CC /tmp/build/perf/libbpf/staticobjs/strset.o > CC /tmp/build/perf/libbpf/staticobjs/linker.o > LD /tmp/build/perf/libsymbol/libsymbol-in.o > AR /tmp/build/perf/libsymbol/libsymbol.a > CC /tmp/build/perf/libbpf/staticobjs/gen_loader.o > CC /tmp/build/perf/libbpf/staticobjs/relo_core.o > CC /tmp/build/perf/libbpf/staticobjs/usdt.o > CC /tmp/build/perf/libbpf/staticobjs/zip.o > CC /tmp/build/perf/libbpf/staticobjs/elf.o > LD /tmp/build/perf/libapi/fs/libapi-in.o > LD /tmp/build/perf/libapi/libapi-in.o > LD /tmp/build/perf/libperf/libperf-in.o > AR /tmp/build/perf/libapi/libapi.a > AR /tmp/build/perf/libperf/libperf.a > LD /tmp/build/perf/libsubcmd/libsubcmd-in.o > AR /tmp/build/perf/libsubcmd/libsubcmd.a > GEN /tmp/build/perf/python/perf.cpython-311-x86_64-linux-musl.so > > Auto-detecting system features: > ... clang-bpf-co-re: [ on ] > ... llvm: [ on ] > ... libcap: [ on ] > ... libbfd: [ on ] > > MKDIR /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/libbpf/include/bpf > MKDIR /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/ > MKDIR /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/libbpf/ > INSTALL /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/libbpf/include/bpf/hashmap.h > INSTALL /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/libbpf/include/bpf/relo_core.h > INSTALL /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/libbpf/include/bpf/libbpf_internal.h > GEN /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/libbpf/bpf_helper_defs.h > INSTALL /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/libbpf/include/bpf/bpf.h > INSTALL /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/libbpf/include/bpf/libbpf.h > INSTALL /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/libbpf/include/bpf/btf.h > INSTALL /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/libbpf/include/bpf/libbpf_common.h > INSTALL /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/libbpf/include/bpf/libbpf_legacy.h > INSTALL /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/libbpf/include/bpf/bpf_helpers.h > INSTALL /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/libbpf/include/bpf/bpf_tracing.h > INSTALL /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/libbpf/include/bpf/bpf_endian.h > INSTALL /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/libbpf/include/bpf/bpf_core_read.h > INSTALL /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/libbpf/include/bpf/skel_internal.h > INSTALL /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/libbpf/include/bpf/libbpf_version.h > INSTALL /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/libbpf/include/bpf/usdt.bpf.h > INSTALL /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/libbpf/include/bpf/bpf_helper_defs.h > INSTALL libbpf_headers > MKDIR /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/libbpf/staticobjs/ > MKDIR /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/libbpf/staticobjs/ > CC /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/libbpf/staticobjs/libbpf.o > CC /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/libbpf/staticobjs/nlattr.o > CC /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/libbpf/staticobjs/bpf.o > CC /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/libbpf/staticobjs/btf.o > CC /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/libbpf/staticobjs/libbpf_errno.o > CC /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/libbpf/staticobjs/str_error.o > CC /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/libbpf/staticobjs/netlink.o > CC /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/libbpf/staticobjs/bpf_prog_linfo.o > CC /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/libbpf/staticobjs/libbpf_probes.o > CC /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/libbpf/staticobjs/hashmap.o > CC /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/libbpf/staticobjs/btf_dump.o > CC /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/libbpf/staticobjs/ringbuf.o > CC /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/libbpf/staticobjs/strset.o > CC /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/libbpf/staticobjs/linker.o > CC /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/libbpf/staticobjs/gen_loader.o > CC /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/libbpf/staticobjs/relo_core.o > CC /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/libbpf/staticobjs/usdt.o > CC /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/libbpf/staticobjs/zip.o > CC /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/libbpf/staticobjs/elf.o > LD /tmp/build/perf/libbpf/staticobjs/libbpf-in.o > LINK /tmp/build/perf/libbpf/libbpf.a > LD /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/libbpf/staticobjs/libbpf-in.o > LINK /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/libbpf/libbpf.a > CC /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/main.o > CC /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/common.o > CC /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/json_writer.o > CC /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/gen.o > CC /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/btf.o > CC /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/xlated_dumper.o > CC /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/btf_dumper.o > CC /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/disasm.o > gen.c: In function 'get_obj_name': > gen.c:60:23: warning: implicit declaration of function 'basename' [-Wimplicit-function-declaration] > 60 | strncpy(name, basename(file), MAX_OBJ_NAME_LEN - 1); > | ^~~~~~~~ > gen.c:60:23: warning: passing argument 2 of 'strncpy' makes pointer from integer without a cast [-Wint-conversion] > 60 | strncpy(name, basename(file), MAX_OBJ_NAME_LEN - 1); > | ^~~~~~~~~~~~~~ > | | > | int > In file included from gen.c:13: > /usr/include/fortify/string.h:139:48: note: expected 'const char *' but argument is of type 'int' > 139 | const char *__s, size_t __n) > | ~~~~~~~~~~~~^~~ > LINK /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/bpftool > CLANG /tmp/build/perf/util/bpf_skel/.tmp/bpf_prog_profiler.bpf.o > CLANG /tmp/build/perf/util/bpf_skel/.tmp/bperf_leader.bpf.o > CLANG /tmp/build/perf/util/bpf_skel/.tmp/bperf_follower.bpf.o > CLANG /tmp/build/perf/util/bpf_skel/.tmp/bperf_cgroup.bpf.o > CLANG /tmp/build/perf/util/bpf_skel/.tmp/func_latency.bpf.o > CLANG /tmp/build/perf/util/bpf_skel/.tmp/off_cpu.bpf.o > CLANG /tmp/build/perf/util/bpf_skel/.tmp/lock_contention.bpf.o > CLANG /tmp/build/perf/util/bpf_skel/.tmp/kwork_trace.bpf.o > CLANG /tmp/build/perf/util/bpf_skel/.tmp/sample_filter.bpf.o > CLANG /tmp/build/perf/util/bpf_skel/.tmp/kwork_top.bpf.o > CLANG /tmp/build/perf/util/bpf_skel/.tmp/bench_uprobe.bpf.o > CLANG /tmp/build/perf/util/bpf_skel/.tmp/augmented_raw_syscalls.bpf.o > GENSKEL /tmp/build/perf/util/bpf_skel/bench_uprobe.skel.h > GENSKEL /tmp/build/perf/util/bpf_skel/func_latency.skel.h > GENSKEL /tmp/build/perf/util/bpf_skel/bperf_follower.skel.h > GENSKEL /tmp/build/perf/util/bpf_skel/sample_filter.skel.h > GENSKEL /tmp/build/perf/util/bpf_skel/augmented_raw_syscalls.skel.h > GENSKEL /tmp/build/perf/util/bpf_skel/bperf_leader.skel.h > GENSKEL /tmp/build/perf/util/bpf_skel/kwork_top.skel.h > GENSKEL /tmp/build/perf/util/bpf_skel/bpf_prog_profiler.skel.h > GENSKEL /tmp/build/perf/util/bpf_skel/lock_contention.skel.h > GENSKEL /tmp/build/perf/util/bpf_skel/off_cpu.skel.h > GENSKEL /tmp/build/perf/util/bpf_skel/bperf_cgroup.skel.h > GENSKEL /tmp/build/perf/util/bpf_skel/kwork_trace.skel.h > -- - Arnaldo