mirror of
https://github.com/torvalds/linux.git
synced 2025-04-11 04:53:02 +00:00

Distributions that want to maintain a stable kABI need the ability to make ABI compatible changes to kernel without affecting symbol versions, either because of LTS updates or backports. With genksyms, developers would typically hide these changes from version calculation with #ifndef __GENKSYMS__, which would result in the symbol version not changing even though the actual type has changed. When we process precompiled object files, this isn't an option. To support this use case, add a --stable command line flag that gates kABI stability features that are not needed in mainline kernels, but can be useful for distributions, and add support for kABI rules, which can be used to restrict gendwarfksyms output. The rules are specified as a set of null-terminated strings stored in the .discard.gendwarfksyms.kabi_rules section. Each rule consists of four strings as follows: "version\0type\0target\0value" The version string ensures the structure can be changed in a backwards compatible way. The type string indicates the type of the rule, and target and value strings contain rule-specific data. Initially support two simple rules: 1. Declaration-only types A type declaration can change into a full definition when additional includes are pulled in to the TU, which changes the versions of any symbol that references the type. Add support for defining declaration-only types whose definition is not expanded during versioning. 2. Ignored enumerators It's possible to add new enum fields without changing the ABI, but as the fields are included in symbol versioning, this would change the versions. Add support for ignoring specific fields. 3. Overridden enumerator values Add support for overriding enumerator values when calculating versions. This may be needed when the last field of the enum is used as a sentinel and new fields must be added before it. Add examples for using the rules under the examples/ directory. Signed-off-by: Sami Tolvanen <samitolvanen@google.com> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
13 lines
333 B
Makefile
13 lines
333 B
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
hostprogs-always-y += gendwarfksyms
|
|
|
|
gendwarfksyms-objs += gendwarfksyms.o
|
|
gendwarfksyms-objs += cache.o
|
|
gendwarfksyms-objs += die.o
|
|
gendwarfksyms-objs += dwarf.o
|
|
gendwarfksyms-objs += kabi.o
|
|
gendwarfksyms-objs += symbols.o
|
|
gendwarfksyms-objs += types.o
|
|
|
|
HOSTLDLIBS_gendwarfksyms := -ldw -lelf -lz
|