Commit 272f8a6d authored by Matthew Maurer's avatar Matthew Maurer Committed by Masahiro Yamada
Browse files

Documentation/kbuild: Document storage of symbol information



Document where exported and imported symbols are kept, format options,
and limitations.

Signed-off-by: default avatarMatthew Maurer <mmaurer@google.com>
Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
parent e8639b7e
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -423,6 +423,26 @@ Symbols From the Kernel (vmlinux + modules)
	1) It lists all exported symbols from vmlinux and all modules.
	2) It lists the CRC if CONFIG_MODVERSIONS is enabled.

Version Information Formats
---------------------------

	Exported symbols have information stored in __ksymtab or __ksymtab_gpl
	sections. Symbol names and namespaces are stored in __ksymtab_strings,
	using a format similar to the string table used for ELF. If
	CONFIG_MODVERSIONS is enabled, the CRCs corresponding to exported
	symbols will be added to the __kcrctab or __kcrctab_gpl.

	If CONFIG_BASIC_MODVERSIONS is enabled (default with
	CONFIG_MODVERSIONS), imported symbols will have their symbol name and
	CRC stored in the __versions section of the importing module. This
	mode only supports symbols of length up to 64 bytes.

	If CONFIG_EXTENDED_MODVERSIONS is enabled (required to enable both
	CONFIG_MODVERSIONS and CONFIG_RUST at the same time), imported symbols
	will have their symbol name recorded in the __version_ext_names
	section as a series of concatenated, null-terminated strings. CRCs for
	these symbols will be recorded in the __version_ext_crcs section.

Symbols and External Modules
----------------------------