简体   繁体   English

/boot/System.map*中的符号地址与/ proc / kallsyms中的符号地址不同

[英]Symbol addresses in /boot/System.map* are not identical to those in /proc/kallsyms

There is a fixed gap between /boot/System.map and /proc/kallsyms . /boot/System.map/proc/kallsyms之间有固定的距离。 And the gap changes on every reboot. 差距在每次重新启动时都会改变。

Is there something like layout randomization? 是否有布局随机化之类的东西?

For example, 例如,

> cat /boot/System.map
ffffffff81d2b5f0 T x86_64_start_kernel
ffffffff81d2bb33 T start_kernel
ffffffff81d2ee1b T xen_start_kernel

> cat /proc/kallsyms | grep start_kernel
ffffffffa4d2b5f0 T x86_64_start_kernel
ffffffffa4d2bb33 T start_kernel
ffffffffa4d2ee1b T xen_start_kernel

Yes, the Linux kernel can use ASLR (address space layout randomization), at least on x86. 是的,至少在x86上,Linux内核可以使用ASLR(地址空间布局随机化)。 Actually, only the base address can be randomized at the moment. 实际上,目前只有基地址可以被随机化。

See the description of CONFIG_RANDOMIZE_BASE in arch/x86/Kconfig in the kernel sources for details. 有关详细信息,请参见内核资源中arch / x86 / Kconfig中的CONFIG_RANDOMIZE_BASE的描述。

It is hard to guess what is going on on your system without knowledge of what kind on Linux that is and how the kernel is configured. 在不知道Linux上是哪种类型以及如何配置内核的情况下,很难猜测系统上正在发生什么。

See if CONFIG_RANDOMIZE_BASE is set in the config file for that kernel (usually - /boot/config-<something> ). 查看是否在该内核的配置文件中设置了CONFIG_RANDOMIZE_BASE (通常是- /boot/config-<something> )。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 为什么我的 /proc/kallsyms 文件不包含 System.map 中的所有符号? - Why does my /proc/kallsyms file not contain all the symbols in System.map? 不导出/ proc / kallsyms中标有“T”的内核符​​号 - kernel symbol marked with “T” in /proc/kallsyms is not exported System.map文件中地址的含义 - Meaning of address' in System.map file 在/ proc / kallsyms中重复名称 - Repeating names in /proc/kallsyms 内核 sys_call_table 地址与 system.map 中指定的地址不匹配 - Kernel sys_call_table address does not match address specified in system.map 为什么System.map没有针对小对象的初始化数据节的任何条目(全局) - Why System.map does not have any entries for initialized data section for small objects (global) /proc/kallsyms 中的 T 和 t 有什么区别 - What is the difference between T and t in /proc/kallsyms 尝试将 /proc/kallsyms 添加到 gdb 以进行 vmlinux 调试:`/proc/kallsyms&#39;:无法读取符号:无法识别文件格式 - Trying to add /proc/kallsyms into gdb for vmlinux debugging :`/proc/kallsyms': can't read symbols: File format not recognized Linux内核 - 为什么System.map中的函数地址是实时看到的地址之前的一个字节? - Linux Kernel - why a function's address in System.map is one byte preceding its address as seen in real time? kallsyms是否具有内核函数的所有符号? - Does kallsyms have all the symbol of kernel functions?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM