为什么我的系统 ld 脚本使用像 "dot = dot" 这样的表达式?
Why my system ld script use expression like "dot = dot"?
当使用 ld -verbose
转储系统的链接描述文件时,我注意到它使用:
.data1 : { *(.data1) }
_edata = .; PROVIDE (edata = .);
. = .;
__bss_start = .;
.bss :
为什么要把当前地址分配给当前地址?
. = .;
作为孤立部分放置的障碍。
https://sourceware.org/binutils/docs/ld/Location-Counter.html 表示“...相反,它假定所有赋值或其他语句都属于前一个输出部分,但赋值给的特殊情况除外。”
链接器选择最佳输出段描述后,它将跳过以下非.
符号分配。对于 . = .;
,链接器将停止搜索并将孤立部分放在 . = .;
.
的正上方
当使用 ld -verbose
转储系统的链接描述文件时,我注意到它使用:
.data1 : { *(.data1) }
_edata = .; PROVIDE (edata = .);
. = .;
__bss_start = .;
.bss :
为什么要把当前地址分配给当前地址?
. = .;
作为孤立部分放置的障碍。
https://sourceware.org/binutils/docs/ld/Location-Counter.html 表示“...相反,它假定所有赋值或其他语句都属于前一个输出部分,但赋值给的特殊情况除外。”
链接器选择最佳输出段描述后,它将跳过以下非.
符号分配。对于 . = .;
,链接器将停止搜索并将孤立部分放在 . = .;
.