关于linux下head.s和编译链接的一些问题

dannys0302 2014-01-11 12:20:48
最近在看linux启动流程,遇到一些问题不明白,不知道有没有发错地方,望路过的大神解答下。

首先,文件是/work/linux-2.6.36/arch/arm/boot/compressed/head.S
其中有3段代码(我写的代码 .start段 .text段)

我在这个文件的最开始(include之后),加入一段代码(内容不重要)
之后的内容是:
.section ".start", #alloc, #execinstr
/*
* sort out different calling conventions
*/

.align
start:
.type start,#function
......

.text
adr r0, LC0
......

lds文件指出
. = 0;
_text = .;

.text : {
_start = .;
*(.start)
*(.text)
*(.text.*)

链接时,从.start段开始,反汇编后看到,代码从0地址开始,确实是.start段,理论上,接下来应该是.text段,然后我的代码不被编译,但看反汇编,实际的排序是:
.start段
我的代码
.text段
这是为什么?
...全文
132 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

4,441

社区成员

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

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