ZHCU947E June 2015 – January 2023
当已初始化的输出段中存在孔洞时,链接器必须提供原始数据来填充该孔洞。链接器会使用 32 位填充值来填充孔洞。该填充值在存储器中持续复制,直到填满孔洞。链接器按如下方式确定填充值:
SECTIONS
{ outsect:
{
file1.c.obj(.text)
file2.c.obj(.bss)= 0xFF00FF00 /* 用 0xFF00FF00
填充该孔洞*/
}
}
SECTIONS
{ outsect:fill = 0xFF00FF00 /* 用 0xFF00FF00 填充孔洞 */
{
.+= 0x0010; /* 这会形成一个孔洞 */
file1.c.obj(.text)
file1.c.obj(.bss) /* 这会形成另一个孔洞 */
}
}
SECTIONS { .text: { .= 0x0100; } /* Create a 100 word hole */ }
现在使用 --fill_value 选项来调用链接器:
cl6x --run_linker --fill_value=0xFFFFFFFF link.cmd
这会用 0xFFFFFFFF 填充孔洞。
每当在已初始化的输出段中创建并填充孔洞时,都会在链接映射中标识该孔洞以及链接器用来填充该孔洞的值。