Re: [PATCH v13 0/5] Extended MODVERSIONS Support
From: Masahiro Yamada <masahiroy@kernel.org>
Date: 2025-01-10 17:38:47
Also in:
linux-doc, linux-kbuild, linux-modules, lkml, rust-for-linux
On Sat, Jan 4, 2025 at 2:37 AM Matthew Maurer [off-list ref] wrote:
This patch series is intended for use alongside the Implement DWARF modversions series [1] to enable RUST and MODVERSIONS at the same time. Elsewhere, we've seen a desire for long symbol name support for LTO symbol names [2], and the previous series came up [3] as a possible solution rather than hashing, which some have objected [4] to. This series adds a MODVERSIONS format which uses a section per column. This avoids userspace tools breaking if we need to make a similar change to the format in the future - we would do so by adding a new section, rather than editing the struct definition. In the new format, the name section is formatted as a concatenated sequence of NUL-terminated strings, which allows for arbitrary length names. Emitting the extended format is guarded by CONFIG_EXTENDED_MODVERSIONS, but the kernel always knows how to validate both the original and extended formats. Emitting the existing format is now guarded by CONFIG_BASIC_MODVERSIONS, but it is enabled by default when MODVERSIONS is enabled and must be explicitly disabled by the user. Disabling CONFIG_BASIC_MODVERSIONS may cause some userspace tools to be unable to retrieve CRCs until they are patched to understand the new location. Even with CONFIG_BASIC_MODVERSIONS enabled, those tools will be unable to read the CRCs for long symbols until they are updated to read the new format. This is not expected to interfere with normal operation, as the primary use for CRCs embedded in the module is load-time verification by the kernel. Recording and monitoring of CRCs is typically done through Module.symvers. Selecting RUST and MODVERSIONS is now possible if GENDWARFKSYMS is selected, and will implicitly select EXTENDED_MODVERSIONS. This series depends upon DWARF-based versions [1] and Masahiro's u32 fixup patch [5]. [1] https://lore.kernel.org/lkml/20241219210736.2990838-20-samitolvanen@google.com/ (local) [2] https://lore.kernel.org/lkml/20240605032120.3179157-1-song@kernel.org/ (local) [3] https://lore.kernel.org/lkml/ZoxbEEsK40ASi1cY@bombadil.infradead.org/ (local) [4] https://lore.kernel.org/lkml/0b2697fd-7ab4-469f-83a6-ec9ebc701ba0@suse.com/ (local) [5] https://lore.kernel.org/linux-kbuild/20241228154603.2234284-1-masahiroy@kernel.org (local) Changes in v13: - Fixed up missed s32 usage (Thanks Sami).
Applied to linux-kbuild. Thanks. -- Best Regards Masahiro Yamada