Skip to content

Latest commit

 

History

History
5 lines (3 loc) · 1.14 KB

20220515-pic.md

File metadata and controls

5 lines (3 loc) · 1.14 KB

对编译选项 relocation-model 的讨论

周六(20220514)的讨论中,清华一组同学提到,内核中 match 会编译出含绝对地址的值的跳转,导致内核无法放在非链接时宣称的地址位置运行,也就是说,无法做到位置无关运行。检查发现,rustc 有一个选项 relocation-model 控制结果的位置无关类型,其默认值为 pic,即位置无关。但 zCore 在配置文件中指定了 relocation-model:static,即禁止位置无关化。尝试将这个值改为 pic,直接不能运行了。

ZYR 表示,这可能是因为 pic 导致依赖 GOT 的位置无关化。这个技术需要在 elf 文件头中保存一些信息,内核无法利用。