问题描述
链接描述文件的PHDRS部分的目的是什么?我什么时候需要它?
解决/修复方法
PHDRS部分用于用户定义的链接描述文件,以在可执行文件中生成程序头信息。链接器默认创建合理的程序头。以下是PHDRS的简要说明,包括何时以及如何使用它们。
PHDRS问题描述
程序头由系统加载程序读取(对于Xilinx, data2bram ),并描述程序应如何加载到内存中。程序头定义了内存位置的起始地址和可加载的大小。如果内存包含可加载部分(.text,.data …)=>后跟未初始化的部分(.bss,.sbss – 这些不需要加载到内存中)=>后跟另一个可加载部分( .sdata,.sdata2 ..),内存区域需要两个标头(每个可加载内存块一个)。在这种情况下,链接器不会生成两个头文件;因此,您应该使用PHDRS。
请注意,使用PHDRS命令时,链接器不会生成任何程序头。
何时以及如何使用PHDRS
即使链接器脚本具有多个内存区域,链接器也会生成必要的程序头。只有在上述场景中,它才能生成正确的标题。要使链接器正确地为每个内存区域工作,请首先在链接描述文件中定义可加载的部分,然后是未初始化的部分。这可确保生成的标头正确并且加载器正常运行。仅当无法避免存储器的初始化和未初始化数据的混合和匹配时,才使用PHDRS。
没有回复内容