static函数被编译成内联函数(inline)
最近在移植systemtap到Arm平台,在android中运行。
当准备在signal.c中的函数handle_signal中插入探针的时候,提示找不到该函数的参数信息,经分析System.map,里面没有handle_signal的符号信息,后分析vmlinux,发现handle_signal被定义成了内联函数。
handle_signal定义是:
static int handle_signal(unsigned long sig, struct k_sigaction *ka,
siginfo_t *info, sigset_t *oldset,
struct pt_regs * regs, int syscall)
但是在vmlinux中看到的是被定义成inline函数。
请问有人知道是什么原因么。
[解决办法]
静态函数如果只被调用一次,内联是个只有好处没代价的动作,编译器当然会优化