#!/bin/bash # SPDX-License-Identifier: GPL-2.0 # # A klp relocation section is named for the object being patched, not for the # object which happens to own the symbol being referenced. Deriving it from # the symbol means a cross-module reference lands in a section for an object # the patch may not even touch, so the relocation is never applied and the call # goes somewhere arbitrary. . "$(dirname "$0")/../lib.sh" setup build_module_pair cross_module.c klp_testmod # The fixture has to have built as a module for any of this to mean anything. in_sections orig.o | grep -q '\.modinfo' || fail "fixture has no .modinfo" # other_mod_func belongs to a different module than the one being patched. add_exports other_mod other_mod_func run_diff # Named for the patched object ... assert_section __klp_relocs.klp_testmod # ... not for the object owning the symbol. assert_no_section __klp_relocs.other_mod run_post_link assert_klp_rela klp_testmod .text.target pass "klp relocation section named for the patched object"