ARM vmlinux文件中的.exit.text部分的内容何时被加载到内存中时被丢弃?

时间:2013-04-12 05:21:42

标签: linux-kernel arm kernel

我知道.exit.text部分将由链接器填充,其函数使用__exit宏定义。我可以看到关于vmlinux文件的反汇编的部分。但是我不明白文件加载到内存后丢弃的内容到底是什么时候?它是否发生在内核代码中?任何人都可以解释这个吗? 提前致谢!

1 个答案:

答案 0 :(得分:2)

文件vmlinux.lds.Smodule.c处理此问题。处理取决于您的内核版本和配置;两者都没有给出。我的假设是指内核中的.exit.text部分 ,而不是某些用户空间任务。通常,内核不会退出,因此除非您有一些调试配置,否则链接器脚本会丢弃它们。

编辑:android内核是使用.config文件制作的,该文件在编译时启用Linux内核功能。 CONFIG_HOTPLUG_CPU .config是CPU;即使交换CPU,一些大型服务器也可以继续运行。很难回答你的问题。我不知道你的Android内核源代码在哪里或者它构建的.config选项。

这些部分与GENERIC_BUG保持一致;所以你的内核可能是用这个构建的。在库存 vmlinux.lds.S 中,.exit.data部分放在之前 __init_end,因此它被释放并返回到{ {1}}部分运行。即,仅在启动期间出现。在这种情况下,您将在 vmlinux ELF中看到它,但不会在运行时 kcore 中看到它,或者您正在转储它。

具体而言,main.c's initstart_kernel()rest_init()kernel_init()是丢弃此内容的地方。