#!/bin/sh # SPDX-License-Identifier: GPL-2.0-or-later # Error out on error set -e num_ool_stubs_text_builtin="$1" is_64bit="$2" objdump="$3" vmlinux_o="$4" arch_vmlinux_S="$5" RELOCATION=R_PPC64_ADDR64 if [ -z "$is_64bit" ]; then RELOCATION=R_PPC_ADDR32 fi num_ool_stubs_total=$($objdump -r -j __patchable_function_entries "$vmlinux_o" | grep -c "$RELOCATION") num_ool_stubs_inittext=$($objdump -r -j __patchable_function_entries "$vmlinux_o" | grep -e ".init.text" -e ".text.startup" | grep -c "$RELOCATION") num_ool_stubs_text=$((num_ool_stubs_total - num_ool_stubs_inittext)) if [ "$num_ool_stubs_text" -gt "$num_ool_stubs_text_builtin" ]; then num_ool_stubs_text_end=$((num_ool_stubs_text - num_ool_stubs_text_builtin)) else num_ool_stubs_text_end=0 fi cat > "$arch_vmlinux_S" < #include #include .pushsection .tramp.ftrace.text,"aw" SYM_DATA(ftrace_ool_stub_text_end_count, .long $num_ool_stubs_text_end) SYM_START(ftrace_ool_stub_text_end, SYM_L_GLOBAL, .balign SZL) #if $num_ool_stubs_text_end .space $num_ool_stubs_text_end * FTRACE_OOL_STUB_SIZE #endif SYM_CODE_END(ftrace_ool_stub_text_end) .popsection .pushsection .tramp.ftrace.init,"aw" SYM_DATA(ftrace_ool_stub_inittext_count, .long $num_ool_stubs_inittext) SYM_START(ftrace_ool_stub_inittext, SYM_L_GLOBAL, .balign SZL) .space $num_ool_stubs_inittext * FTRACE_OOL_STUB_SIZE SYM_CODE_END(ftrace_ool_stub_inittext) .popsection EOF