gpt4 book ai didi

linux - 为什么我的/proc/kallsyms 文件不包含 System.map 中的所有符号?

转载 作者:行者123 更新时间:2023-12-03 09:56:05 25 4
gpt4 key购买 nike

我从 this SO post 看到那/proc/kallsyms应该有动态加载模块的符号以及静态代码,而 System.map仅包含静态代码的符号。但是,当我 cat /proc/kallsyms我似乎在内核的文本部分中只有符号(Tt 标志),保存一两个符号,例如

0000000000000000 D irq_stack_union
0000000000000000 D __per_cpu_start

另一方面,在 System.map我有很多部分的符号 - 基本上都是来自 /proc/kallsyms除了加载的内核模块符号。

为了显示这种差异的大小,我使用了 wc命令。
user@debian:~/$ cat /boot/System.map-3.2.0-4-amd64 | wc
51256 153768 2117121
user@debian:~/$ cat /proc/kallsyms | wc
29336 92637 1161409

造成这种差异的原因是什么?我的 /proc/kallsyms 中所有与数据部分相关的符号在哪里?文件?

编辑:根据要求,这里是 kallsyms配置选项。
user@debian:~$ cat /boot/config-3.2.0-4-amd64 | grep KALLSYMS
CONFIG_KALLSYMS=y
# CONFIG_KALLSYMS_ALL is not set

最佳答案

你没有 CONFIG_KALLSYMS_ALL设置为 y ,因此只有文本符号被导出到 /proc/kallsyms .将此设置为 y并重新构建内核(虽然不是那么简单)应该可以解决问题。
我不知道这是否是因为您有一个旧内核或某个发行版在其构建中禁用了它。您也可以尝试升级到较新的内核。在我的 Debian 9 Linux v4.9 中,它似乎已启用。

关于linux - 为什么我的/proc/kallsyms 文件不包含 System.map 中的所有符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61233259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com