From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Jiri Olsa <olsajiri@gmail.com>
Cc: Quentin Monnet <quentin@isovalent.com>,
Namhyung Kim <namhyung@kernel.org>,
Ian Rogers <irogers@google.com>,
Adrian Hunter <adrian.hunter@intel.com>,
Andrii Nakryiko <andrii.nakryiko@gmail.com>,
bpf@vger.kernel.org
Subject: Re: [PATCH] bpftool: Add missing libgen.h for basename()
Date: Thu, 4 Jan 2024 09:27:11 -0300 [thread overview]
Message-ID: <ZZakH8LluKodXql-@kernel.org> (raw)
In-Reply-To: <ZZZ7hgqlYjNJOynA@krava>
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@redhat.com>
> >
> > ---
> >
> > 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 ;-)
> 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
next prev parent reply other threads:[~2024-01-04 12:27 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-01-04 3:04 [PATCH] bpftool: Add missing libgen.h for basename() Arnaldo Carvalho de Melo
2024-01-04 9:33 ` Jiri Olsa
2024-01-04 12:27 ` Arnaldo Carvalho de Melo [this message]
2024-01-04 13:01 ` Arnaldo Carvalho de Melo
2024-01-05 8:48 ` Jiri Olsa
2024-01-05 15:01 ` Jiri Olsa
2024-01-05 20:53 ` Arnaldo Carvalho de Melo
2024-01-06 20:02 ` Jiri Olsa
2024-01-26 15:53 ` Arnaldo Carvalho de Melo
2024-01-29 10:07 ` Quentin Monnet
2024-01-29 11:23 ` Jiri Olsa
2024-01-12 2:52 ` kernel test robot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZZakH8LluKodXql-@kernel.org \
--to=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=andrii.nakryiko@gmail.com \
--cc=bpf@vger.kernel.org \
--cc=irogers@google.com \
--cc=namhyung@kernel.org \
--cc=olsajiri@gmail.com \
--cc=quentin@isovalent.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox