]> git.ipfire.org Git - thirdparty/linux.git/commit
gendwarfksyms: Add a kABI rule to override type strings
authorSami Tolvanen <samitolvanen@google.com>
Wed, 7 May 2025 23:14:07 +0000 (23:14 +0000)
committerMasahiro Yamada <masahiroy@kernel.org>
Sun, 25 May 2025 09:12:23 +0000 (18:12 +0900)
commitc9083467f7b97e7c06b7a9038c4f18095329bd37
treeea6e74c8041c837d58e3f10c7a171337a22c3b8d
parentdb59d74e5da144111fc133fb1bf72e6392bdb04e
gendwarfksyms: Add a kABI rule to override type strings

In rare situations where distributions must make significant
changes to otherwise opaque data structures that have
inadvertently been included in the published ABI, keeping
symbol versions stable using the existing kABI macros can
become tedious.

For example, Android decided to switch to a newer io_uring
implementation in the 5.10 GKI kernel "to resolve a huge number
of potential, and known, problems with the codebase," requiring
"horrible hacks" with genksyms:

  "A number of the io_uring structures get used in other core
  kernel structures, only as "opaque" pointers, so there is
  not any real ABI breakage.  But, due to the visibility of
  the structures going away, the CRC values of many scheduler
  variables and functions were changed."
    -- https://r.android.com/2425293

While these specific changes probably could have been hidden
from gendwarfksyms using the existing kABI macros, this may not
always be the case.

Add a last resort kABI rule that allows distribution
maintainers to fully override a type string for a symbol or a
type. Also add a more informative error message in case we find
a non-existent type references when calculating versions.

Suggested-by: Giuliano Procida <gprocida@google.com>
Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
Reviewed-by: Petr Pavlu <petr.pavlu@suse.com>
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
scripts/gendwarfksyms/examples/kabi.h
scripts/gendwarfksyms/examples/kabi_ex.c
scripts/gendwarfksyms/examples/kabi_ex.h
scripts/gendwarfksyms/gendwarfksyms.h
scripts/gendwarfksyms/kabi.c
scripts/gendwarfksyms/types.c