为什么静态加载的内核符号T.1018、T.932和T.689与同一vmlinux的System.map和kallsyms不匹配?

为什么静态加载的内核符号T.1018、T.932和T.689与同一vmlinux的System.map和kallsyms不匹配?,linux,linux-kernel,linux-device-driver,powerpc,Linux,Linux Kernel,Linux Device Driver,Powerpc,我面临一个问题,静态加载的模块符号与System.map到kallsyms不匹配 我使用的是运行2.6内核的基于power pc的开发板 通常System.map将具有静态模块符号,kallsyms将具有静态和动态加载的模块符号 但是在我的系统中,当系统启动时,一些符号名称与system.map到kallsyms的形式不匹配。我的系统没有任何可加载的模块。我已经使用lsmod交叉验证了这一点(lsmod没有显示任何内容) 由于这些符号不匹配,我在尝试加载模块时会崩溃。为了解决崩溃问题,将所需符号

我面临一个问题,静态加载的模块符号与System.map到kallsyms不匹配

我使用的是运行2.6内核的基于power pc的开发板

通常System.map将具有静态模块符号,kallsyms将具有静态和动态加载的模块符号

但是在我的系统中,当系统启动时,一些符号名称与system.map到kallsyms的形式不匹配。我的系统没有任何可加载的模块。我已经使用lsmod交叉验证了这一点(lsmod没有显示任何内容)

由于这些符号不匹配,我在尝试加载模块时会崩溃。为了解决崩溃问题,将所需符号从kallsyms更改为System.map,以便加载模块

因此System.map将具有以下符号:

c01e3b5c t.108

c01fb9ac t.932

c02ea480 t.689

kallsyms将有符号:

c01e3b5c t.1016

c01fb9ac t.930

c02ea480 t.687

System.map与kallsyms之间的符号差异仅在于符号名称。所有不匹配的符号在System.map和kallsyms中具有相同的地址。正如我所知,内核将只查找地址,但在我的例子中,为什么会发生崩溃,即使是符号地址 是一样的吗

为什么同一vmlinux中System.map与kallsyms的符号不匹配

为什么将符号名称从kallsyms更改为System.map时不会发生崩溃


System.map与kallsyms之间的依赖关系是什么

你能提供一个不匹配的例子吗?抱歉,澄清一下:你能编辑你的问题,包括
kallsysms
System.map
,其中条目与你期望的不同吗?System.map将用符号T.1018、T.932和T.689表示地址,但kallsyms有不同的符号T.1016,同一地址的T.930和T.687。因为符号的不匹配,我崩溃了。因此,为了解决崩溃问题,我更改了System.map中的符号