linux kallsyms R符号没有显示

时间:2014-11-29 08:22:49

标签: linux ubuntu kernel system-calls

我找不到系统调用表的内核地址。 我通常通过grepping sys_call来做到这一点 但在一个系统中,我可以看到地址 但在其他情况下,它并没有显示该条目。

root@ubuntu:~# cat /proc/kallsyms | grep sys_call
ffffffff8122aa90 t proc_sys_call_handler
ffffffff81726432 t ret_from_sys_call
ffffffff81726644 T int_ret_from_sys_call
ffffffff81728146 t sysexit_from_sys_call
ffffffff81728386 t sysretl_from_sys_call
ffffffff8172858e t ia32_ret_from_sys_call
**ffffffff81801400 R sys_call_table**
ffffffff81809cc0 R ia32_sys_call_table
root@ubuntu:~# 

没有系统调用表...为什么不显示R类型符号??

/ $ cat /proc/kallsyms | grep sys_call
ffffffff8119c230 t proc_sys_call_handler
ffffffff817a1a57 t ret_from_sys_call
ffffffff817a1c50 T int_ret_from_sys_call
ffffffff817a2cb8 t sysexit_from_sys_call
ffffffff817a2ed8 t sysretl_from_sys_call
ffffffff817a30be t ia32_ret_from_sys_call
/ $ 
/ $ 

在什么情况下会发生这种情况? 一些建议会很好 谢谢

2 个答案:

答案 0 :(得分:1)

您应该在两种情况下查看内核的版本,请查看uname -r

最初是在早期版本的内核2.4.x中导出的。这最初有“EXPORT_SYMBOL(sys_call_table);”来自linux / kernel / ksyms.c的行 sys_call_table被正确导出,后来变为静态并移除了IMU。

现在已经在一些最新的内核中再次导出(在某些版本中> 3.3.x)。我建议深入了解LXR以查看详细信息。

答案 1 :(得分:0)

您需要检查当前内核是否使用选项CONFIG_KALLSYMS_ALL = y进行编译