Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/powerpc/tools/ftrace-gen-ool-stubs.sh
26451 views
1
#!/bin/sh
2
# SPDX-License-Identifier: GPL-2.0-or-later
3
4
# Error out on error
5
set -e
6
7
num_ool_stubs_text_builtin="$1"
8
is_64bit="$2"
9
objdump="$3"
10
vmlinux_o="$4"
11
arch_vmlinux_S="$5"
12
13
RELOCATION=R_PPC64_ADDR64
14
if [ -z "$is_64bit" ]; then
15
RELOCATION=R_PPC_ADDR32
16
fi
17
18
num_ool_stubs_total=$($objdump -r -j __patchable_function_entries "$vmlinux_o" |
19
grep -c "$RELOCATION")
20
num_ool_stubs_inittext=$($objdump -r -j __patchable_function_entries "$vmlinux_o" |
21
grep -e ".init.text" -e ".text.startup" | grep -c "$RELOCATION")
22
num_ool_stubs_text=$((num_ool_stubs_total - num_ool_stubs_inittext))
23
24
if [ "$num_ool_stubs_text" -gt "$num_ool_stubs_text_builtin" ]; then
25
num_ool_stubs_text_end=$((num_ool_stubs_text - num_ool_stubs_text_builtin))
26
else
27
num_ool_stubs_text_end=0
28
fi
29
30
cat > "$arch_vmlinux_S" <<EOF
31
#include <asm/asm-offsets.h>
32
#include <asm/ppc_asm.h>
33
#include <linux/linkage.h>
34
35
.pushsection .tramp.ftrace.text,"aw"
36
SYM_DATA(ftrace_ool_stub_text_end_count, .long $num_ool_stubs_text_end)
37
38
SYM_START(ftrace_ool_stub_text_end, SYM_L_GLOBAL, .balign SZL)
39
#if $num_ool_stubs_text_end
40
.space $num_ool_stubs_text_end * FTRACE_OOL_STUB_SIZE
41
#endif
42
SYM_CODE_END(ftrace_ool_stub_text_end)
43
.popsection
44
45
.pushsection .tramp.ftrace.init,"aw"
46
SYM_DATA(ftrace_ool_stub_inittext_count, .long $num_ool_stubs_inittext)
47
48
SYM_START(ftrace_ool_stub_inittext, SYM_L_GLOBAL, .balign SZL)
49
.space $num_ool_stubs_inittext * FTRACE_OOL_STUB_SIZE
50
SYM_CODE_END(ftrace_ool_stub_inittext)
51
.popsection
52
EOF
53
54