上章链接入口: https://blog.csdn.net/qq_16933601/article/details/104327937
在上章里,我们分析了oops的PC值在哪个函数出错的
本章便通过栈信息来分析函数调用过程...9fe0: 代表最初的栈顶SP寄存器位置
9e80:代表函数出错的SP寄存器位置
2.我们先来分析上图的栈信息,又是怎样的过程呢?..., {r4, r5, fp, ip, lr, pc} 存入了6个值,
所以, 返回到上个函数的值lr =c008d888
在上章,我们便分析到:
内核的虚拟地址是c0004000~c03cebf4...,所以c008d888位于内核的某个函数里
3.2 然后将内核进行反汇编
在内核源码的根目录下:
# arm-none-linux-gnueabi-objdump -D vmlinux > vmlinux.txt...如上图所示, nameidata_to_filp函数存了6个值,所以,第二个值lr= c0089fb8
4.最终分析出,栈信息的调用过程如下:
ret_fast_syscall()->
sys_open