linux-kernelorg-stable/scripts
Linus Torvalds 36492b7141 Detect unused tracepoints for v6.19:
If a tracepoint is defined but never used (TRACE_EVENT() created but no
 trace_<tracepoint>() called), it can take up to or more than 5K of memory
 each. This can add up as there are around a hundred unused tracepoints with
 various configs. That is 500K of wasted memory.
 
 Add a make build parameter of "UT=1" to have the build warn if an unused
 tracepoint is detected in the build. This allows detection of unused
 tracepoints to be upstream so that outreachy and the mentoring project can
 have new developers look for fixing them, without having these warnings
 suddenly show up when someone upgrades their kernel. When all known unused
 tracepoints are removed, then the "UT=1" build parameter can be removed and
 unused tracepoints will always warn. This will catch new unused tracepoints
 after the current ones have been removed.
 
 - Separate out elf functions from sorttable.c
 
   Move out the ELF parsing functions from sorttable.c so that the tracing
   tooling can use it.
 
 - Add a tracepoint verifier tool to the build process
 
   If "UT=1" is added to the kernel command line, any unused tracepoints will
   trigger a warning at build time.
 
 - Do not warn about unused tracepoints for tracepoints that are exported
 
   There are sever cases where a tracepoint is created by the kernel and used
   by modules. Since there's no easy way to detect if these are truly unused
   since the users are in modules, if a tracepoint is exported, assume it
   will eventually be used by a module. Note, there's not many exported
   tracepoints so this should not be a problem to ignore them.
 
 - Have building of modules also detect unused tracepoints
 
   Do not only check the main vmlinux for unused tracepoints, also check
   modules. If a module is defining a tracepoint it should be using it.
 
 - Add the tracepoint-update program to the ignore file
 
   The new tracepoint-update program needs to be ignored by git.
 -----BEGIN PGP SIGNATURE-----
 
 iIoEABYKADIWIQRRSw7ePDh/lE+zeZMp5XQQmuv6qgUCaS9iLxQccm9zdGVkdEBn
 b29kbWlzLm9yZwAKCRAp5XQQmuv6qk4mAP96T/IPPjox1Fd7r/Dpm+JNfYom8AZ8
 WGNL06+aEKRWZwEAqc+u/9k3r964k+pKQ7qwL3ZslG2ALSOdKbFXHpsPpw8=
 =R/qK
 -----END PGP SIGNATURE-----

Merge tag 'tracepoints-v6.19' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace

Pull unused tracepoints update from Steven Rostedt:
 "Detect unused tracepoints.

  If a tracepoint is defined but never used (TRACE_EVENT() created but
  no trace_<tracepoint>() called), it can take up to or more than 5K of
  memory each. This can add up as there are around a hundred unused
  tracepoints with various configs. That is 500K of wasted memory.

  Add a make build parameter of "UT=1" to have the build warn if an
  unused tracepoint is detected in the build. This allows detection of
  unused tracepoints to be upstream so that outreachy and the mentoring
  project can have new developers look for fixing them, without having
  these warnings suddenly show up when someone upgrades their kernel.

  When all known unused tracepoints are removed, then the "UT=1" build
  parameter can be removed and unused tracepoints will always warn. This
  will catch new unused tracepoints after the current ones have been
  removed.

  Summary:

   - Separate out elf functions from sorttable.c

     Move out the ELF parsing functions from sorttable.c so that the
     tracing tooling can use it.

   - Add a tracepoint verifier tool to the build process

     If "UT=1" is added to the kernel command line, any unused
     tracepoints will trigger a warning at build time.

   - Do not warn about unused tracepoints for tracepoints that are
     exported

     There are sever cases where a tracepoint is created by the kernel
     and used by modules. Since there's no easy way to detect if these
     are truly unused since the users are in modules, if a tracepoint is
     exported, assume it will eventually be used by a module. Note,
     there's not many exported tracepoints so this should not be a
     problem to ignore them.

   - Have building of modules also detect unused tracepoints

     Do not only check the main vmlinux for unused tracepoints, also
     check modules. If a module is defining a tracepoint it should be
     using it.

   - Add the tracepoint-update program to the ignore file

     The new tracepoint-update program needs to be ignored by git"

* tag 'tracepoints-v6.19' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace:
  scripts: add tracepoint-update to the list of ignores files
  tracing: Add warnings for unused tracepoints for modules
  tracing: Allow tracepoint-update.c to work with modules
  tracepoint: Do not warn for unused event that is exported
  tracing: Add a tracepoint verification check at build time
  sorttable: Move ELF parsing into scripts/elf-parse.[ch]
2025-12-05 09:37:41 -08:00
..
atomic atomic: Skip alignment check for try_cmpxchg() old arg 2025-10-21 12:31:56 +02:00
bash-completion
basic
clang-tools scripts/clang-tools: Handle included .c files in gen_compile_commands 2025-11-08 12:18:00 +01:00
coccinelle Patch series in this pull request: 2025-10-02 18:44:54 -07:00
crypto lib/crypto: tests: Add KUnit tests for POLYVAL 2025-11-11 11:07:52 -08:00
dtc scripts: dt_to_config: fix grammar and a typo in --help text 2025-09-26 15:53:30 -05:00
dummy-tools
gcc-plugins gcc-plugins: Remove TODO_verify_il for GCC >= 16 2025-09-23 13:59:39 -07:00
gdb hrtimer: Remove hrtimer_clock_base:: Get_time 2025-09-09 12:27:18 +02:00
gendwarfksyms gendwarfksyms: Skip files with no exports 2025-11-11 20:37:11 +01:00
genksyms
include
ipe
kconfig kconfig/nconf: Initialize the default locale at startup 2025-11-01 00:23:22 -04:00
ksymoops
livepatch objtool/klp: Only enable --checksum when needed 2025-11-18 09:59:26 +01:00
mod modpost: Ignore unresolved section bounds symbols 2025-10-14 14:45:22 -07:00
package kbuild: install-extmod-build: Fix when given dir outside the build dir 2025-10-25 21:59:20 +01:00
selinux
tracing
.gitignore scripts: add tracepoint-update to the list of ignores files 2025-10-29 08:46:05 -04:00
Kbuild.include
Kconfig.include init: deduplicate cc-can-link.sh invocations 2025-11-14 20:20:34 +01:00
Lindent
Makefile tracing: Add a tracepoint verification check at build time 2025-10-24 16:43:14 -04:00
Makefile.asm-headers
Makefile.autofdo
Makefile.btf
Makefile.build kbuild: Let kernel-doc.py use PYTHON3 override 2025-11-08 19:42:22 -07:00
Makefile.clang
Makefile.clean
Makefile.compiler
Makefile.debug
Makefile.defconf
Makefile.dtbinst
Makefile.dtbs kbuild: Ensure .dtbo targets are applied to a base .dtb 2025-11-17 11:27:52 -06:00
Makefile.gcc-plugins
Makefile.headersinst
Makefile.host
Makefile.kasan
Makefile.kcov
Makefile.kcsan
Makefile.kmsan
Makefile.kstack_erase
Makefile.lib objtool/klp: Only enable --checksum when needed 2025-11-18 09:59:26 +01:00
Makefile.modfinal tracing: Add warnings for unused tracepoints for modules 2025-10-24 16:43:15 -04:00
Makefile.modinst kbuild: Use objtree for module signing key path 2025-11-08 12:17:58 +01:00
Makefile.modpost
Makefile.package kbuild: add target to build a cpio containing modules 2025-11-26 21:56:14 +01:00
Makefile.propeller
Makefile.randstruct
Makefile.ubsan
Makefile.userprogs
Makefile.vdsoinst
Makefile.vmlinux kbuild: Strip trailing padding bytes from modules.builtin.modinfo 2025-11-06 09:50:23 -07:00
Makefile.vmlinux_o kbuild: Check for functions with ambiguous -ffunction-sections section names 2025-11-21 10:04:10 +01:00
Makefile.warn kbuild: Rename Makefile.extrawarn to Makefile.warn 2025-11-08 12:17:59 +01:00
as-version.sh
asn1_compiler.c
bloat-o-meter
bootgraph.pl
bpf_doc.py bpf: Finish constification of 1st parameter of bpf_d_path() 2025-10-04 09:05:23 -07:00
build-version
cc-can-link.sh kbuild: don't enable CC_CAN_LINK if the dummy program generates warnings 2025-11-14 20:20:34 +01:00
cc-version.sh
check-function-names.sh kbuild: Check for functions with ambiguous -ffunction-sections section names 2025-11-21 10:04:10 +01:00
check-git
check-sysctl-docs
check-uapi.sh
check_extable.sh
checkdeclares.pl
checkincludes.pl
checkkconfigsymbols.py
checkpatch.pl checkpatch: suppress strscpy warnings for userspace tools 2025-09-28 11:36:13 -07:00
checkstack.pl
checksyscalls.sh
checkversion.pl
cleanfile
cleanpatch
coccicheck
config
const_structs.checkpatch
decode_stacktrace.sh scripts/decode_stacktrace.sh: fix build ID and PC source parsing 2025-11-09 21:19:45 -08:00
decodecode
depmod.sh
dev-needs.sh
diffconfig
elf-parse.c sorttable: Move ELF parsing into scripts/elf-parse.[ch] 2025-10-24 16:43:14 -04:00
elf-parse.h sorttable: Move ELF parsing into scripts/elf-parse.[ch] 2025-10-24 16:43:14 -04:00
extract-fwblobs
extract-ikconfig
extract-module-sig.pl
extract-sys-certs.pl
extract-vmlinux
extract_xc3028.pl
faddr2line scripts/faddr2line: Fix "Argument list too long" error 2025-10-14 14:45:20 -07:00
file-size.sh
gen-crc-consts.py
gen-randstruct-seed.sh
gen_packed_field_checks.c
generate_builtin_ranges.awk
generate_initcall_order.pl
generate_rust_analyzer.py rust: macros: support `proc-macro2`, `quote` and `syn` 2025-11-24 17:15:50 +01:00
generate_rust_target.rs
get_dvb_firmware
get_maintainer.pl
gfp-translate
git-resolve.sh
git.orderFile
head-object-list.txt
headerdep.pl
headers_install.sh scripts: headers_install.sh: Remove two outdated config leak ignore entries 2025-11-11 16:01:13 +01:00
insert-sys-cert.c
install.sh
integer-wrap-ignore.scl
jobserver-exec docs: Move the python libraries to tools/lib/python 2025-11-18 09:22:40 -07:00
kallsyms.c
kernel-doc
kernel-doc.py docs: bring some order to our Python module hierarchy 2025-11-18 09:22:40 -07:00
ld-version.sh
leaking_addresses.pl
link-vmlinux.sh Detect unused tracepoints for v6.19: 2025-12-05 09:37:41 -08:00
macro_checker.py
make_fit.py
makelst
markup_oops.pl
min-tool-version.sh
misc-check
mkcompile_h
mksysmap modpost: Create modalias for builtin modules 2025-09-24 09:10:45 -07:00
mkuboot.sh
module-common.c
module.lds.S objtool/klp: Introduce klp diff subcommand for diffing object files 2025-10-14 14:50:18 -07:00
modules-check.sh
nsdeps
objdiff
objdump-func
orc_hash.sh
pahole-version.sh
parse-maintainers.pl
patch-kernel
profile2linkerlist.pl
prune-kernel
recordmcount.c
recordmcount.h
recordmcount.pl
relocs_check.sh
remove-stale-files
rust_is_available.sh
rust_is_available_bindgen_0_66.h
rust_is_available_bindgen_libclang.h
rust_is_available_bindgen_libclang_concat.h
rust_is_available_test.py
rustc-llvm-version.sh
rustc-version.sh
rustdoc_test_builder.rs
rustdoc_test_gen.rs rust: allow `clippy::disallowed_names` for doctests 2025-11-17 22:53:27 +01:00
setlocalversion
show_delta
sign-file.c
sorttable.c sorttable: Move ELF parsing into scripts/elf-parse.[ch] 2025-10-24 16:43:14 -04:00
spdxcheck-test.sh
spdxcheck.py
spdxexclude
spelling.txt
ssl-common.h
stackdelta
stackusage
subarch.include
syscall.tbl arch: hookup listns() system call 2025-11-03 17:41:18 +01:00
syscallhdr.sh
syscallnr.sh
syscalltbl.sh
tags.sh
tools-support-relr.sh
tracepoint-update.c tracing: Allow tracepoint-update.c to work with modules 2025-10-24 16:43:15 -04:00
unifdef.c
ver_linux
verify_builtin_ranges.awk
xen-hypercalls.sh
xz_wrap.sh