我在* .ld文件中无法理解的东西

时间:2016-06-06 05:56:12

标签: gcc arm gnu ld

在ARM GCC的* .ld文件中有一些我无法理解的语句。

md5(uniqid())

我用记事本搜索了整个项目,值.init : { __initcall_start = .; KEEP(*(.initcall1.init)) KEEP(*(.initcall2.init)) KEEP(*(.initcall3.init)) KEEP(*(.initcall4.init)) KEEP(*(.initcall5.init)) KEEP(*(.initcall6.init)) __initcall_end = .; } >FLASH 只出现在这个* .ld文件中。

initcall1

E:\pos-orig\Gemini\system\sys_generic.ld (1 hit) Line 26: KEEP(*(.initcall1.init)) initcall1 ...用于什么?

我如何理解initcall2

1 个答案:

答案 0 :(得分:2)

linker script说 来自的.initcall1.init,...,.initcall6.init部分 所有输入文件都在符号__initcall_start之间输出 输出__initcall_end部分中的.init以及所有这些内容 将被保护免受垃圾收集。

  

initcall1,initcall2用于什么?

Documentation: Kernel Initialization Mechanisms

  

我怎样才能理解' KEEP(*(。initcall3.init))'?

3.6.4.4 Input Section and Garbage Collection