- 论坛徽章:
- 20
|
我没有看过elf的规范,但是我做过一个实验,把一个elf文件里的.bss字符串替换为.BSS(sed s/bss/BSS/),elf文件同样可以正常执行的。
粗略浏览了一下exec/load_elf_binray路径,总体感觉是section叫什么名字不重要,关键是section的属性(也就是readelf -S 所显示的type和flag字段)。
Section Headers:
[Nr] Name Type Address Off Size ES Flg Lk Inf Al
[13] .text PROGBITS 00000000004003e0 0003e0 000218 00 AX 0 0 16
[24] .data PROGBITS 0000000000600928 000928 000004 00 WA 0 0 4
[25] .bss NOBITS 0000000000600930 00092c 000010 00 WA 0 0 8
Key to Flags: W (write), A (alloc), X (execute), M (merge), S (strings) I (info), L (link order), G (group), x (unknown) O (extra OS processing required) o (OS specific), p (processor specific)
当然这也不是绝对的,比如kernel moudle的.ko文件,里面有很多section的名字就是被os定死的(比如.modinfo字段)
至于交叉编译的问题,还是请其他高人回答吧。 |
|