|
|
|
|
 关于ELF文件的问题 - tchaikovsky [ 2007-03-29 16:26 | 765 byte(s)]
 Re: 关于ELF文件的问题 - ffxz [ 2007-04-01 11:06 | 204 byte(s)]
 Re: 关于ELF文件的问题 - tchaikovsky [ 2007-04-03 17:17 | 73 byte(s)]
 Re: 关于ELF文件的问题 - tpu [ 2007-03-30 19:11 | 91 byte(s)]
 Re: 关于ELF文件的问题 - tchaikovsky [ 2007-03-31 18:02 | 115 byte(s)]
|
|
|
|
[Original]
[Print]
[Top]
|
MIPS下的vxWorks加载:vxWorks为ELF格式文件, 程序开始地址为0x80010000
通过objdump看到程序有两个可加载段,即p_type为PT_LOAD
Program Header:
LOAD off 0x00000074 vaddr 0x80008200 paddr 0x80008200 align 2**2
filesz 0x00000000 memsz 0x00000004 flags rw-
LOAD off 0x00002000 vaddr 0x80010000 paddr 0x80010000 align 2**13
filesz 0x001c0ec0 memsz 0x001d5450 flags rwx
按道理两个段都需要加载.但是我发现用objcopy生成binaray 文件的时候第一个段被丢弃了,生成的文件正好是第二个段的长度.而该文件可以被运行.我不明白objcopy根据什么将第一个段丢弃了.
我的命令: objcopymips -O binary -g vxworks vxworks.bin
有谁愿意点拨一下吗?
|
|
|
----
程序之道犹如庄周梦蝶
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
|
有道理,我也这么想的,但是我没有看到文档里做明确规定. 一开始我将objcopy处理得到的文件往第一个段的地方装载,结果出错了.
|
|
|
----
程序之道犹如庄周梦蝶
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
你段一装的什么内容?
filesz: 0,相当于在你elf文件中不存在
memsz: 4,相当于在memory存在
既然在elf文件中不存在,当然copy to bin的时候,复制不出东西。
|
|
|
----
|
|
[Original]
[Print]
[Top]
|
|
|