我正在努力理解ARM kernel helper functions应该如何在Linux中运行。
我正在调试尝试使用它们的程序,但它们似乎会导致严重的堆栈损坏和SIGILL CPU异常。
我的一个问题是弄清楚它们是否内置于我拥有的内核中。但是,查看内核源代码,我无法设计编译标志来启用/禁用它们。
我遇到的另一个问题是我的gdb无法检查相应的区域:我也无法读取
0xffff0ffc ; __kuser_helper_version的内存,也不能反汇编这些函数。
我尝试编写一个简单的程序来阅读API级别:
#include <stdio.h> int main( int argc, char **argv ){ int * ptr = (int *)0xffff0ffc; printf("%d\n", *ptr); }而且,有点不出所料,我遇到了分段错误。
因此我的问题是:userland程序如何利用这些功能,以及应用程序调试器如何跟进这些功能呢?