微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在linux源代码中,'_ text'的值在哪里确定?我应该在哪里加载vmlinux文件?

如何解决在linux源代码中,'_ text'的值在哪里确定?我应该在哪里加载vmlinux文件?

这与编程无关,但这是Linux内核程序员可以回答的一种问题。
在linux源arch / arm64 / vmlinux.lds.S中,我看到这一行,

ENTRY(_text)

那个文件说应该是_text == (KIMAGE_VADDR + TEXT_OFFSET)
因此,_text是虚拟地址。然后我跟随KIMGAE_VADDR的来源,这似乎是由arch / arm64 / Makefile中定义的值KASAN_SHADOW_SCALE_SHIFT决定的。
(我知道当AArch VA_BITS为39,即KIMAGE_VADDR时,内核虚拟地址从0xffffff80_00000000开始。并且猜测此虚拟地址受此KASAN_SHADOW_SCALE_SHIFT值等的影响)
但是在编译vmlinux之后,应该将其加载到哪个物理地址?
并将物理地址转换为预期的内核虚拟地址,我应该在编译内核之前设置一个在初始化期间要使用的页表吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。