我已经阅读了一些 ELF 规范文档,但尚未找到以下问题的答案
1)当段内存大小大于段文件大小时,ELF段下载器是否应该按照memsize指定的方式用零填充内存中的段?
2) 是否存在应使用非零常数填充某个部分的情况,即一般情况“常数填充”部分?
3)识别 elf 可执行文件中的 .const 段的正确方法是什么?
每个部分的标志值没有此类信息,并且似乎受到限制。我见过 ELF 段下载器的实现,它们根本不下载文件大小为零的段。
谢谢!
这是一个迟来的答案,但无论如何..
当段内存大小大于段文件大小时,ELF段下载器是否应该按照memsize指定的方式用零填充内存中的段?==> 我想是的。某些部分(例如 .BSS(未初始化数据))在 elf 文件中没有空间,但在未初始化加载时在内存中应该有空间。但我理解,C 运行时在进入 main() 之前将数据初始化为零。
是否存在应使用非零常数填充部分的情况,即一般情况“常数填充”部分?==> 是的,我记得我们可以在一个部分中设置填充图案。搜索显示了 FILL(表达式) 属性。
识别 elf 可执行文件中的 .const 段的正确方法是什么?==> 我认为你可以做类似的事情
无符号 int __attribute__((__section__ (".const") FILE("0x1234"))) 数据[0x1000];
?
| 归档时间: |
|
| 查看次数: |
1188 次 |
| 最近记录: |