В процессе изучения документации линкера для CodeSourcery G++ Lite и примеров скриптов возникли следующие вопросы:
1 Что означает запись *(.text*)? Точнее, почему после .text стоит '*'. Вот пример записи входной секции из документации:
Цитата
For example, to include all input ‘.text’ sections, you would write: *(.text) (стр. 50 3.6.4.1 Input Section Basics ).
2 Что означает *(vtable)? Я конечно подозреваю, что это как-то связано с таблицей виртуальных функций, но хотелось бы уточнить.
Скрипт линкера взят из примеров для LM3S6965 Evaluation Board.
Собственно, сам скрипт линкера:
Код
MEMORY
{
FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 0x00040000
SRAM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00010000
}
SECTIONS
{
.text :
{
_text = .;
KEEP(*(.isr_vector))
*(.text*) /*Почему в конце '*' ?*/
*(.rodata*)
_etext = .;
} > FLASH
.data : AT(ADDR(.text) + SIZEOF(.text))
{
_data = .;
*(vtable) /*Что и зачем это?*/
*(.data*)
_edata = .;
} > SRAM
.bss :
{
_bss = .;
*(.bss*)
*(COMMON)
_ebss = .;
} > SRAM
}