System.map文件和/ proc / kallsyms

时间:2015-03-09 06:59:17

标签: linux-kernel linux-device-driver

我只是想知道这两者之间的区别..我正在使用linux 3.16泛型内核。我知道这两个都是内核符号表。当我对这两个文件进行Kompare时,两者都具有相同的内容?那么两者兼得的需要是什么?

2 个答案:

答案 0 :(得分:6)

/proc/kallsysms包含动态加载模块的符号以及静态代码,system.map是仅静态代码的符号表。

您无法确定系统上是否有system.map可用。当kernel和system.map不匹配时,您会看到System.map does not match actual kernel警告。所以在这种情况下/proc/kallsyms是运行内核的符号。

System.map不仅对调试内核oopses有用。一些驱动程序需要System.map来解析符号,因为它们与内核头而不是glibc相关联。如果没有当前运行的特定内核的System.map,它们将无法正常工作。

有关http://dirac.org/linux/system.map/

的更多信息

答案 1 :(得分:0)

简而言之,如果未启用kaslr,

system.map = $(nm vmlinux)
/proc/kallsysms = system.map + loaded modules's kallsyms