关于linux下head.s和编译链接的一些问题
最近在看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段
这是为什么?