mirror of
https://github.com/torvalds/linux.git
synced 2025-10-29 15:56:19 +02:00
For some modules, modalias is generated using the modpost utility and the section is added to the module file. When a module is added inside vmlinux, modpost does not generate modalias for such modules and the information is lost. As a result kmod (which uses modules.builtin.modinfo in userspace) cannot determine that modalias is handled by a builtin kernel module. $ cat /sys/devices/pci0000:00/0000:00:14.0/modalias pci:v00008086d0000A36Dsv00001043sd00008694bc0Csc03i30 $ modinfo xhci_pci name: xhci_pci filename: (builtin) license: GPL file: drivers/usb/host/xhci-pci description: xHCI PCI Host Controller Driver Missing modalias "pci:v*d*sv*sd*bc0Csc03i30*" which will be generated by modpost if the module is built separately. To fix this it is necessary to generate the same modalias for vmlinux as for the individual modules. Fortunately '.vmlinux.export.o' is already generated from which '.modinfo' can be extracted in the same way as for vmlinux.o. Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> Signed-off-by: Alexey Gladkov <legion@kernel.org> Tested-by: Stephen Rothwell <sfr@canb.auug.org.au> Reviewed-by: Nicolas Schier <nsc@kernel.org> Link: https://patch.msgid.link/28d4da3b0e3fc8474142746bcf469e03752c3208.1758182101.git.legion@kernel.org Signed-off-by: Nathan Chancellor <nathan@kernel.org>
94 lines
2.1 KiB
Sed
Executable file
94 lines
2.1 KiB
Sed
Executable file
#!/bin/sed -f
|
|
# SPDX-License-Identifier: GPL-2.0-only
|
|
#
|
|
# sed script to filter out symbols that are not needed for System.map,
|
|
# or not suitable for kallsyms. The input should be 'nm -n <file>'.
|
|
#
|
|
# System.map is used by module-init tools and some debugging
|
|
# tools to retrieve the actual addresses of symbols in the kernel.
|
|
#
|
|
# readprofile starts reading symbols when _stext is found, and
|
|
# continue until it finds a symbol which is not either of 'T', 't',
|
|
# 'W' or 'w'.
|
|
#
|
|
# ---------------------------------------------------------------------------
|
|
# Ignored symbol types
|
|
#
|
|
|
|
# a: local absolute symbols
|
|
# N: debugging symbols
|
|
# U: undefined global symbols
|
|
# w: local weak symbols
|
|
/ [aNUw] /d
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Ignored prefixes
|
|
# (do not forget a space before each pattern)
|
|
|
|
# local symbols for ARM, MIPS, etc.
|
|
/ \$/d
|
|
|
|
# local labels, .LBB, .Ltmpxxx, .L__unnamed_xx, .LASANPC, etc.
|
|
/ \.L/d
|
|
|
|
# arm64 EFI stub namespace
|
|
/ __efistub_/d
|
|
|
|
# arm64 local symbols in PIE namespace
|
|
/ __pi_\\$/d
|
|
/ __pi_\.L/d
|
|
|
|
# arm64 local symbols in non-VHE KVM namespace
|
|
/ __kvm_nvhe_\$/d
|
|
/ __kvm_nvhe_\.L/d
|
|
|
|
# lld arm/aarch64/mips thunks
|
|
/ __[[:alnum:]]*Thunk_/d
|
|
|
|
# CFI type identifiers
|
|
/ __kcfi_typeid_/d
|
|
/ __kvm_nvhe___kcfi_typeid_/d
|
|
/ __pi___kcfi_typeid_/d
|
|
|
|
# CRC from modversions
|
|
/ __crc_/d
|
|
|
|
# EXPORT_SYMBOL (symbol name)
|
|
/ __kstrtab_/d
|
|
|
|
# EXPORT_SYMBOL (namespace)
|
|
/ __kstrtabns_/d
|
|
|
|
# MODULE_DEVICE_TABLE (symbol name)
|
|
/ __mod_device_table__/d
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Ignored suffixes
|
|
# (do not forget '$' after each pattern)
|
|
|
|
# arm
|
|
/_from_arm$/d
|
|
/_from_thumb$/d
|
|
/_veneer$/d
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Ignored symbols (exact match)
|
|
# (do not forget a space before and '$' after each pattern)
|
|
|
|
# for LoongArch?
|
|
/ L0$/d
|
|
|
|
# ppc
|
|
/ _SDA_BASE_$/d
|
|
/ _SDA2_BASE_$/d
|
|
|
|
# MODULE_INFO()
|
|
/ __UNIQUE_ID_modinfo[0-9]*$/d
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Ignored patterns
|
|
# (symbols that contain the pattern are ignored)
|
|
|
|
# ppc stub
|
|
/\.long_branch\./d
|
|
/\.plt_branch\./d
|