*.ld 文件中我不明白的地方
Something I do not understand in the *.ld file
ARM GCC 的 *.ld 文件中有些语句我无法理解。
.init :
{
__initcall_start = .;
KEEP(*(.initcall1.init))
KEEP(*(.initcall2.init))
KEEP(*(.initcall3.init))
KEEP(*(.initcall4.init))
KEEP(*(.initcall5.init))
KEEP(*(.initcall6.init))
__initcall_end = .;
} >FLASH
我用记事本搜索了整个项目,值initcall1
只出现在这个*.ld文件中。
E:\pos-orig\Gemini\system\sys_generic.ld (1 hit)
Line 26: KEEP(*(.initcall1.init))
initcall1
,initcall2
...有什么用?
我如何理解 KEEP(*(.initcall3.init))
?
这 linker script 说
名为 .initcall1.init
,...,.initcall6.init
的部分来自
所有输入文件都将在符号 __initcall_start
之间输出
和输出 .init
部分中的 __initcall_end
并且所有这些
将从垃圾收集中保留下来。
What the initcall1,initcall2... used for?
Documentation: Kernel Initialization Mechanisms
how can i understand the 'KEEP(*(.initcall3.init))'?
ARM GCC 的 *.ld 文件中有些语句我无法理解。
.init :
{
__initcall_start = .;
KEEP(*(.initcall1.init))
KEEP(*(.initcall2.init))
KEEP(*(.initcall3.init))
KEEP(*(.initcall4.init))
KEEP(*(.initcall5.init))
KEEP(*(.initcall6.init))
__initcall_end = .;
} >FLASH
我用记事本搜索了整个项目,值initcall1
只出现在这个*.ld文件中。
E:\pos-orig\Gemini\system\sys_generic.ld (1 hit)
Line 26: KEEP(*(.initcall1.init))
initcall1
,initcall2
...有什么用?
我如何理解 KEEP(*(.initcall3.init))
?
这 linker script 说
名为 .initcall1.init
,...,.initcall6.init
的部分来自
所有输入文件都将在符号 __initcall_start
之间输出
和输出 .init
部分中的 __initcall_end
并且所有这些
将从垃圾收集中保留下来。
What the initcall1,initcall2... used for?
Documentation: Kernel Initialization Mechanisms
how can i understand the 'KEEP(*(.initcall3.init))'?