同时拥有 System.map 文件和 /proc/kallsyms 有什么需要?

What is the need of having both System.map file and /proc/kallsyms?

我只想知道System.map文件和/proc/kallsyms.[=18=的区别] 我正在使用 Linux 3.16 通用内核。我知道两者都是内核符号 table.. 当我对这​​些文件进行比较时,两者都具有相同的内容。
那么两者有什么必要呢?

/proc/kallsyms 有动态加载模块的符号和静态代码,System.map 是只有静态代码的符号表。

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

System.map 不仅对调试内核 oops 有用。一些驱动程序需要 System.map 来解析符号,因为它们链接到内核头文件而不是 glibc)。如果当前 运行.

的特定内核没有 System.map,它们将无法正常工作

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

的更多信息

简而言之,如果没有开启kaslr,

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