我们有一个链接描述文件,其中.text部分的一部分具有指定为以下内容的只读数据输入部分:
.text:
{
...
*(.rodata .rodata* .gnu.linkonce.r.*)
...
}
但是,其他带有尾部通配符的输入节通常在名称和通配符之间使用.
。像:*(.text .text.* .gnu.linkonce.t.*)
链接器对待.
和通配符组合的方式是否有所不同?还是没有区别?
.rodata*
实际上应该是.rodata.*
吗?
答案 0 :(得分:1)
.text*
比更明确的.text .text.*
短,尽管不相等。它将提取其他部分,例如.text_foo
。是否可以这样做(是否使其更独立于编译器约定?)。
https://sourceware.org/binutils/docs/ld/Input-Section-Wildcards.html
如果您通过.*
,则-ffunction-sections
部分将由gcc生成。数据和-fdata-sections
也是如此。