请教,有什么办法修改ELF文件的可执行地址吗?

韦东山
企业官方账号
2008-10-21 04:07:24
S3C24X0上,Linux内核vmlinux的连接地址是0xc0008000
但是在在MMU被使能前,内核从0x30008000开始执行。

我现在想调试MMU使能前的这段代码,所以需要在GDB中载入vmlinux的符号表。
怎样才能把vmlinux中所有的地址以0x30008000为基址进行重新修订?
或者,有什么办法,把vmlinux的运行地址从0xc0008000改为0x30008000?

我当然可以指定基地址重新编译内核,但是这方法太笨,各位,有何良策?
...全文
160 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
土豆 2008-10-21
  • 打赏
  • 举报
回复
可能还是指定基地址重新编译内核来得可靠。如果去改ELF中地起始地址是可以改的,ELF本身可以从sector header中读出起始地址,讲这个地址改掉就是了,但是文件中有很多相对于这个地址的地址,或者是绝对地址。这些地址没法保证改完后一定可以工作。

4,436

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧