Andrii Nakryiko
df7bdcc9f7
BACKPORT: kbuild: add ability to generate BTF type info for vmlinux
...
This patch adds new config option to trigger generation of BTF type
information from DWARF debuginfo for vmlinux and kernel modules through
pahole, which in turn relies on libbpf for btf_dedup() algorithm.
The intent is to record compact type information of all types used
inside kernel, including all the structs/unions/typedefs/etc. This
enables BPF's compile-once-run-everywhere ([0]) approach, in which
tracing programs that are inspecting kernel's internal data (e.g.,
struct task_struct) can be compiled on a system running some kernel
version, but would be possible to run on other kernel versions (and
configurations) without recompilation, even if the layout of structs
changed and/or some of the fields were added, removed, or renamed.
This is only possible if BPF loader can get kernel type info to adjust
all the offsets correctly. This patch is a first time in this direction,
making sure that BTF type info is part of Linux kernel image in
non-loadable ELF section.
BTF deduplication ([1]) algorithm typically provides 100x savings
compared to DWARF data, so resulting .BTF section is not big as is
typically about 2MB in size.
[0] http://vger.kernel.org/lpc-bpf2018.html#session-2
[1] https://facebookmicrosites.github.io/bpf/blog/2018/11/14/btf-enhancement.html
Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Daniel Borkmann <daniel@iogearbox.net>
Cc: Alexei Starovoitov <ast@fb.com>
Cc: Yonghong Song <yhs@fb.com>
Cc: Martin KaFai Lau <kafai@fb.com>
Change-Id: Id935f6e3ac658d9a92d55acd39e8287c644c941d
Signed-off-by: Andrii Nakryiko <andriin@fb.com>
Acked-by: David S. Miller <davem@davemloft.net>
Acked-by: Alexei Starovoitov <ast@kernel.org>
Acked-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: Sorayukii <sorayukii69@gmail.com>
2026-05-15 17:58:04 +07:00
..
basic
fixdep: faster CONFIG_ search
2016-08-24 22:34:19 +02:00
coccinelle
fs: stream_open - opener for stream-like files so that read and write can run simultaneously without deadlock
2019-06-11 12:22:49 +02:00
dtc
Merge remote-tracking branch 'common/android-4.9-q' into android12-4.9-sdm845
2022-03-31 22:52:51 +03:00
gcc-plugins
gcc-plugins: latent_entropy: use /dev/urandom
2022-04-20 09:06:46 +02:00
gdb
scripts/gdb: fix lx-version string output
2021-01-12 19:49:03 +01:00
genksyms
kbuild: Regenerate genksyms lexer
2016-08-25 20:03:51 +02:00
kconfig
kconfig/lxdialog: Make main() return 0
2024-10-09 17:15:11 +03:00
ksymoops
mod
This is the 4.9.321 stable release
2022-07-03 10:09:05 +02:00
package
builddeb: Fix header package regarding dtc source links
2018-05-30 07:50:39 +02:00
selinux
selinux: use "grep -E" instead of "egrep"
2022-10-26 13:15:38 +02:00
tracing
scripts/tracing: fix the bug that can't parse raw_trace_func
2021-08-15 13:01:03 +02:00
.gitignore
adjust_autoksyms.sh
kbuild: make scripts/adjust_autoksyms.sh robust against timestamp races
2018-05-30 07:50:37 +02:00
analyze_suspend.py
tweewide: Fix most Shebang lines
2021-06-03 08:23:27 +02:00
asn1_compiler.c
ASN.1: fix open failure check on headername
2016-04-06 14:06:48 +01:00
bloat-o-meter
scripts: switch explicitly to Python 3
2021-06-03 08:23:27 +02:00
bootgraph.pl
tweewide: Fix most Shebang lines
2021-06-03 08:23:27 +02:00
bpf_helpers_doc.py
BACKPORT: bpf: add script and prepare bpf.h for new helpers documentation
2026-05-15 17:56:21 +07:00
build-all.py
scripts: build-all.py: set clang as REAL_CC for arm
2020-02-27 21:25:17 -08:00
check-config-debug-exemptions
scripts: snapshot of kernel build utility scripts
2016-08-08 15:22:37 -07:00
check-config-perf-exemptions
scripts: snapshot of kernel build utility scripts
2016-08-08 15:22:37 -07:00
check-config.py
scripts: snapshot of kernel build utility scripts
2016-08-08 15:22:37 -07:00
check-lc_ctype.c
check_extable.sh
checkincludes.pl
tweewide: Fix most Shebang lines
2021-06-03 08:23:27 +02:00
checkkconfigsymbols.py
checkkconfigsymbols: use arglist instead of cmd string
2016-08-28 11:08:34 +02:00
checkpatch.pl
Merge tag 'LA.UM.10.3.r1-01000-sdm845.0' of https://source.codeaurora.org/quic/la/kernel/msm-4.9 into android12-4.9-sdm845
2022-03-31 20:16:10 +03:00
checkstack.pl
tweewide: Fix most Shebang lines
2021-06-03 08:23:27 +02:00
checksyscalls.sh
checkversion.pl
clang-android.sh
ANDROID: Kbuild, LLVMLinux: allow overriding clang target triple
2018-11-28 17:35:40 -08:00
clang-version.sh
FROMLIST: kbuild: add clang-version.sh
2018-02-28 15:09:57 -08:00
cleanfile
cleanpatch
coccicheck
coccinelle: fix parallel build with CHECK=scripts/coccicheck
2017-12-14 09:28:22 +01:00
config
tweewide: Fix most Shebang lines
2021-06-03 08:23:27 +02:00
conmakehash.c
const_structs.checkpatch
const_structs.checkpatch: remove drm_connector from the list
2018-02-04 21:39:49 -08:00
decode_stacktrace.sh
scripts/decode_stacktrace: strip basepath from all paths
2020-07-31 16:44:03 +02:00
decodecode
scripts/decodecode: fix trapping instruction formatting
2020-05-20 08:15:29 +02:00
depmod.sh
depmod: handle the case of /sbin/depmod without /sbin in PATH
2021-01-12 19:49:01 +01:00
diffconfig
scripts: switch explicitly to Python 3
2021-06-03 08:23:27 +02:00
docproc.c
docproc: print a comment about autogeneration for rst output
2016-05-14 09:56:56 -06:00
export_report.pl
extract-cert.c
cert host tools: Stop complaining about deprecated OpenSSL functions
2022-11-25 17:35:37 +01:00
extract-ikconfig
extract-module-sig.pl
extract-sys-certs.pl
extract-vmlinux
extract_xc3028.pl
tweewide: Fix most Shebang lines
2021-06-03 08:23:27 +02:00
faddr2line
scripts/faddr2line: improve on base path filtering a bit
2016-09-19 14:49:08 -07:00
gcc-goto.sh
gcc-ld
gcc-plugin.sh
gcc-plugins: abort builds cleanly when not supported
2016-08-08 17:49:05 -07:00
gcc-version.sh
gcc-x86_32-has-stack-protector.sh
gcc-x86_64-has-stack-protector.sh
scripts/has-stack-protector: add -fno-PIE
2016-11-09 22:28:05 +01:00
gen_initramfs_list.sh
initramfs: Escape colons in depfile
2016-09-23 10:35:32 +02:00
get_dvb_firmware
tweewide: Fix most Shebang lines
2021-06-03 08:23:27 +02:00
get_maintainer.pl
get_maintainer: quiet noisy implicit -f vcs_file_exists checking
2016-08-26 17:39:34 -07:00
gfp-translate
headerdep.pl
headers.sh
headers_check.pl
headers_check: don't warn about c++ guards
2016-05-24 14:12:48 +10:00
headers_install.sh
insert-sys-cert.c
kallsyms.c
scripts/kallsyms: remove redundant is_arm_mapping_symbol()
2026-05-15 17:48:21 +07:00
Kbuild.include
arm64: build with baremetal linker target instead of Linux when available
2022-10-13 01:53:43 +03:00
kernel-doc
scripts/kernel-doc: Don't fail with status != 0 if error encountered with -none
2018-02-25 11:05:47 +01:00
kernel-doc-xml-ref
ld-version.sh
ld-version: Drop the 4th and 5th version components
2016-05-13 14:02:05 +02:00
Lindent
link-vmlinux.sh
BACKPORT: kbuild: add ability to generate BTF type info for vmlinux
2026-05-15 17:58:04 +07:00
Makefile
scripts: set proper OpenSSL include dir also for sign-file
2021-03-07 11:25:55 +01:00
Makefile.asm-generic
kbuild: replace genhdr-y with generated-y
2020-04-09 15:53:27 +05:30
Makefile.build
Merge branch 'android-4.9-q' of https://android.googlesource.com/kernel/common into lineage-18.1-caf-sdm845
2021-04-26 01:27:02 +03:00
Makefile.clean
ANDROID: kbuild: Makefile.clean: make Kbuild and Makefile optional
2017-01-27 13:52:26 -08:00
Makefile.dtbinst
Makefile.dtbo
scripts: Makefile: Add multi overlay dtbo-base apply verify
2017-11-24 16:56:41 +08:00
Makefile.extrawarn
Makefile.extrawarn: Move -Wcast-function-type-strict to W=1
2022-10-26 13:15:33 +02:00
Makefile.fwinst
Makefile.gcc-plugins
gcc-plugins: Add latent_entropy plugin
2016-10-10 14:51:44 -07:00
Makefile.headersinst
kbuild: skip install/check of headers right under uapi directories
2020-04-09 16:19:34 +05:30
Makefile.help
Makefile.host
kbuild: use HOSTLDFLAGS for single .c executables
2022-10-13 01:53:40 +03:00
Makefile.kasan
This is the 4.9.121 stable release
2018-08-17 21:31:08 +02:00
Makefile.lib
dtc: Silence warnings
2022-10-13 01:53:45 +03:00
Makefile.modbuiltin
Makefile.modinst
ANDROID: kbuild: make it possible to specify the module output dir
2017-01-27 13:52:26 -08:00
Makefile.modpost
This is the 4.9.327 stable release
2022-09-05 14:02:59 +02:00
Makefile.modsign
Makefile.ubsan
Kbuild: enable -Wmaybe-uninitialized warning for "make W=1"
2016-11-11 08:45:08 -08:00
makelst
markup_oops.pl
tweewide: Fix most Shebang lines
2021-06-03 08:23:27 +02:00
mkcompile_h
scripts: Support a custom compiler name
2026-05-15 17:48:21 +07:00
mkmakefile
mksysmap
mksysmap: Fix the mismatch of '.L' symbols in System.map
2020-06-30 15:38:23 -04:00
mkuboot.sh
mkversion
module-common.lds
objtool, modules: Discard objtool annotation sections for modules
2018-01-17 09:38:58 +01:00
namespace.pl
namespace: fix namespace.pl script to support relative paths
2019-10-29 09:15:06 +01:00
objdiff
patch-kernel
pnmtologo.c
profile2linkerlist.pl
tweewide: Fix most Shebang lines
2021-06-03 08:23:27 +02:00
prune-kernel
recordmcount.c
This is the 4.9.262 stable release
2021-03-17 17:12:54 +01:00
recordmcount.h
recordmcount: Fix spurious mcount entries on powerpc
2019-08-04 09:33:38 +02:00
recordmcount.pl
recordmcount.pl: fix typo in s390 mcount regex
2022-01-05 12:31:24 +01:00
setlocalversion
script: Do not append a plus behind the localversion
2026-05-15 17:48:21 +07:00
show_delta
tweewide: Fix most Shebang lines
2021-06-03 08:23:27 +02:00
sign-file.c
cert host tools: Stop complaining about deprecated OpenSSL functions
2022-11-25 17:35:37 +01:00
sortextable.c
parisc: Use generic extable search and sort routines
2016-03-23 16:00:46 +01:00
sortextable.h
spelling.txt
spelling.txt: "modeled" is spelt correctly
2016-10-07 18:46:30 -07:00
stackdelta
tweewide: Fix most Shebang lines
2021-06-03 08:23:27 +02:00
stackusage
tags.sh
BACKPORT: mm: split page_type out from _mapcount
2026-05-15 17:57:58 +07:00
unifdef.c
unifdef: use memcpy instead of strncpy
2018-12-08 13:05:05 +01:00
ver_linux
ver_linux: rename ver_linux.awk to ver_linux
2016-08-31 13:59:31 +02:00
xen-hypercalls.sh
xz_wrap.sh