Решил углубить знания по линкеру. Нужно

CODE
.section .text
.code 32
LDR PC, =0x40004000
.section .data
data1: .word 0x89ABCDEF
.section .bss
bss1: .word 0
.section .fox, "ax"
NOP
NOP
NOP
NOP
BX LR
.code 32
LDR PC, =0x40004000
.section .data
data1: .word 0x89ABCDEF
.section .bss
bss1: .word 0
.section .fox, "ax"
NOP
NOP
NOP
NOP
BX LR
и скрипт линкера
CODE
MEMORY
{
RAM(RW) : org = 0x40000000, len = 32K
RAMOV(RW) : org = 0x40004000, len = 4K
}
SECTIONS
{
.text : { *.(text) } > RAM
.data : { *.( data ) } > RAM
.bss : { *.( bss ) } > RAM
.fox : { *(.fox .fox*) } > RAMOV
}
{
RAM(RW) : org = 0x40000000, len = 32K
RAMOV(RW) : org = 0x40004000, len = 4K
}
SECTIONS
{
.text : { *.(text) } > RAM
.data : { *.( data ) } > RAM
.bss : { *.( bss ) } > RAM
.fox : { *(.fox .fox*) } > RAMOV
}
Трансляция кода идет следующим образом
CODE
arm-kgp-elf-as -mcpu=arm7tdmi-s test.s -o test.o
arm-kgp-elf-ld test.o -o test.elf -Ttest.ld
arm-kgp-elf-ld test.o -o test.elf -Ttest.ld
В этом случае все собирается отлично. В эльфе все необходимые секции.
Стоит секцию .fox пометить только флагом "x" в исходнике на языке ассемблера, как она перестает линковаться. Я не понимаю почему это происходит? Документация говорить, что флаг "a" - это перемещаемая (allocatable) секция.
Но нигде не могу найти описания, для чего секции дается такой статус? Почему секцию просто нельзя пометить "xw", например? Да, стандартные секции .text, .data и .bss линкуются всегда...
Буду благодарен за любую информацию!
З.Ы. МК LPC2468.
Спасибо!