| #!/bin/bash | |
| # SPDX-License-Identifier: GPL-2.0 | |
| # | |
| # Module.symvers records the build-tree path of the object that exports a | |
| # symbol, not the name the module has at runtime: "arch/x86/kvm/kvm-intel", | |
| # where the kernel knows the module as "kvm_intel". | |
| # | |
| # The klp symbol name embeds the owning object, and livepatch matches it | |
| # against loaded modules by name. Left unnormalized it names a module that | |
| # does not exist, and the relocation is never resolved -- at load time, with no | |
| # build-time complaint. | |
| . "$(dirname "$0")/../lib.sh" | |
| setup | |
| build_module_pair cross_module.c klp_testmod | |
| # A path with directory components, a dash, and no extension. | |
| export_syms | |
| add_exports "arch/x86/kvm/kvm-intel" other_mod_func | |
| run_diff | |
| # Directories stripped, dash to underscore. | |
| assert_klp_sym other_mod_func kvm_intel | |
| pass "Module.symvers paths normalized to runtime module names" |