Scatter files symbos renamed for consistency. Now all scatter exported symbols are prefixed and postfixed by a __. Adopted "base" instead of "start" for all symbols defining the base of a memory area.

git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@13189 27425a3e-05d8-49a3-a47f-9c15f0e5edd8
This commit is contained in:
Giovanni Di Sirio 2019-11-23 13:51:54 +00:00
parent 5f9b81e988
commit ef5ee94dad
7 changed files with 108 additions and 92 deletions

View File

@ -87,9 +87,9 @@ Reset_Handler:
* Data initialization. * Data initialization.
* NOTE: It assumes that the DATA size is a multiple of 4. * NOTE: It assumes that the DATA size is a multiple of 4.
*/ */
ldr r1, =_textdata ldr r1, =__textdata_base__
ldr r2, =_data ldr r2, =__data_base__
ldr r3, =_edata ldr r3, =__data_end__
dataloop: dataloop:
cmp r2, r3 cmp r2, r3
ldrlo r0, [r1], #4 ldrlo r0, [r1], #4
@ -100,8 +100,8 @@ dataloop:
* NOTE: It assumes that the BSS size is a multiple of 4. * NOTE: It assumes that the BSS size is a multiple of 4.
*/ */
mov r0, #0 mov r0, #0
ldr r1, =_bss_start ldr r1, =__bss_base__
ldr r2, =_bss_end ldr r2, =__bss_end__
bssloop: bssloop:
cmp r1, r2 cmp r1, r2
strlo r0, [r1], #4 strlo r0, [r1], #4

View File

@ -16,30 +16,30 @@
__stacks_total_size__ = __und_stack_size__ + __abt_stack_size__ + __fiq_stack_size__ + __irq_stack_size__ + __svc_stack_size__ + __sys_stack_size__; __stacks_total_size__ = __und_stack_size__ + __abt_stack_size__ + __fiq_stack_size__ + __irq_stack_size__ + __svc_stack_size__ + __sys_stack_size__;
__ram0_start__ = ORIGIN(ram0); __ram0_base__ = ORIGIN(ram0);
__ram0_size__ = LENGTH(ram0); __ram0_size__ = LENGTH(ram0);
__ram0_end__ = __ram0_start__ + __ram0_size__; __ram0_end__ = __ram0_base__ + __ram0_size__;
__ram1_start__ = ORIGIN(ram1); __ram1_base__ = ORIGIN(ram1);
__ram1_size__ = LENGTH(ram1); __ram1_size__ = LENGTH(ram1);
__ram1_end__ = __ram1_start__ + __ram1_size__; __ram1_end__ = __ram1_base__ + __ram1_size__;
__ram2_start__ = ORIGIN(ram2); __ram2_base__ = ORIGIN(ram2);
__ram2_size__ = LENGTH(ram2); __ram2_size__ = LENGTH(ram2);
__ram2_end__ = __ram2_start__ + __ram2_size__; __ram2_end__ = __ram2_base__ + __ram2_size__;
__ram3_start__ = ORIGIN(ram3); __ram3_base__ = ORIGIN(ram3);
__ram3_size__ = LENGTH(ram3); __ram3_size__ = LENGTH(ram3);
__ram3_end__ = __ram3_start__ + __ram3_size__; __ram3_end__ = __ram3_base__ + __ram3_size__;
__ram4_start__ = ORIGIN(ram4); __ram4_base__ = ORIGIN(ram4);
__ram4_size__ = LENGTH(ram4); __ram4_size__ = LENGTH(ram4);
__ram4_end__ = __ram4_start__ + __ram4_size__; __ram4_end__ = __ram4_base__ + __ram4_size__;
__ram5_start__ = ORIGIN(ram5); __ram5_base__ = ORIGIN(ram5);
__ram5_size__ = LENGTH(ram5); __ram5_size__ = LENGTH(ram5);
__ram5_end__ = __ram5_start__ + __ram5_size__; __ram5_end__ = __ram5_base__ + __ram5_size__;
__ram6_start__ = ORIGIN(ram6); __ram6_base__ = ORIGIN(ram6);
__ram6_size__ = LENGTH(ram6); __ram6_size__ = LENGTH(ram6);
__ram6_end__ = __ram6_start__ + __ram6_size__; __ram6_end__ = __ram6_base__ + __ram6_size__;
__ram7_start__ = ORIGIN(ram7); __ram7_base__ = ORIGIN(ram7);
__ram7_size__ = LENGTH(ram7); __ram7_size__ = LENGTH(ram7);
__ram7_end__ = __ram7_start__ + __ram7_size__; __ram7_end__ = __ram7_base__ + __ram7_size__;
ENTRY(Reset_Handler) ENTRY(Reset_Handler)
@ -56,29 +56,38 @@ SECTIONS
constructors : ALIGN(4) constructors : ALIGN(4)
{ {
PROVIDE(__init_array_start = .); PROVIDE(__init_array_base__ = .);
KEEP(*(SORT(.init_array.*))) KEEP(*(SORT(.init_array.*)))
KEEP(*(.init_array)) KEEP(*(.init_array))
PROVIDE(__init_array_end = .); PROVIDE(__init_array_end__ = .);
} > flash } > flash
destructors : ALIGN(4) destructors : ALIGN(4)
{ {
PROVIDE(__fini_array_start = .); PROVIDE(__fini_array_base__ = .);
KEEP(*(.fini_array)) KEEP(*(.fini_array))
KEEP(*(SORT(.fini_array.*))) KEEP(*(SORT(.fini_array.*)))
PROVIDE(__fini_array_end = .); PROVIDE(__fini_array_end__ = .);
} > flash } > flash
.text : ALIGN_WITH_INPUT .text : ALIGN_WITH_INPUT
{ {
__text_base__ = .;
*(.text) *(.text)
*(.text.*) *(.text.*)
*(.rodata)
*(.rodata.*)
*(.glue_7t) *(.glue_7t)
*(.glue_7) *(.glue_7)
*(.gcc*) *(.gcc*)
__text_end__ = .;
} > flash
.rodata : ALIGN(4)
{
__rodata_base__ = .;
*(.rodata)
*(.rodata.*)
. = ALIGN(4);
__rodata_end__ = .;
} > flash } > flash
.ARM.extab : .ARM.extab :
@ -87,9 +96,9 @@ SECTIONS
} > flash } > flash
.ARM.exidx : { .ARM.exidx : {
PROVIDE(__exidx_start = .); PROVIDE(__exidx_base__ = .);
*(.ARM.exidx* .gnu.linkonce.armexidx.*) *(.ARM.exidx* .gnu.linkonce.armexidx.*)
PROVIDE(__exidx_end = .); PROVIDE(__exidx_end__ = .);
} > flash } > flash
.eh_frame_hdr : .eh_frame_hdr :
@ -109,7 +118,6 @@ SECTIONS
. = ALIGN(4); . = ALIGN(4);
_etext = .; _etext = .;
_textdata = _etext;
.stacks (NOLOAD) : .stacks (NOLOAD) :
{ {
@ -125,22 +133,26 @@ SECTIONS
{ {
. = ALIGN(4); . = ALIGN(4);
PROVIDE(_data = .); PROVIDE(_data = .);
__textdata_base__ = LOADADDR(.data);
__data_base__ = .;
*(.data) *(.data)
*(.data.*) *(.data.*)
*(.ramtext) *(.ramtext)
. = ALIGN(4); . = ALIGN(4);
PROVIDE(_edata = .); PROVIDE(_edata = .);
__data_end__ = .;
} > DATA_RAM AT > flash } > DATA_RAM AT > flash
.bss (NOLOAD) : ALIGN(4) .bss (NOLOAD) : ALIGN(4)
{ {
. = ALIGN(4); . = ALIGN(4);
PROVIDE(_bss_start = .); __bss_base__ = .;
*(.bss) *(.bss)
*(.bss.*) *(.bss.*)
*(COMMON) *(COMMON)
. = ALIGN(4); . = ALIGN(4);
PROVIDE(_bss_end = .); . = ALIGN(4);
__bss_end__ = .;
PROVIDE(end = .); PROVIDE(end = .);
} > BSS_RAM } > BSS_RAM

View File

@ -281,9 +281,9 @@ psloop:
#if CRT0_INIT_DATA == TRUE #if CRT0_INIT_DATA == TRUE
/* Data initialization. Note, it assumes that the DATA size /* Data initialization. Note, it assumes that the DATA size
is a multiple of 4 so the linker file must ensure this.*/ is a multiple of 4 so the linker file must ensure this.*/
ldr r1, =_textdata_start ldr r1, =__textdata_base__
ldr r2, =_data_start ldr r2, =__data_base__
ldr r3, =_data_end ldr r3, =__data_end__
dloop: dloop:
cmp r2, r3 cmp r2, r3
ittt lo ittt lo
@ -296,8 +296,8 @@ dloop:
/* BSS initialization. Note, it assumes that the DATA size /* BSS initialization. Note, it assumes that the DATA size
is a multiple of 4 so the linker file must ensure this.*/ is a multiple of 4 so the linker file must ensure this.*/
movs r0, #0 movs r0, #0
ldr r1, =_bss_start ldr r1, =__bss_base__
ldr r2, =_bss_end ldr r2, =__bss_end__
bloop: bloop:
cmp r1, r2 cmp r1, r2
itt lo itt lo
@ -315,8 +315,8 @@ bloop:
#if CRT0_CALL_CONSTRUCTORS == TRUE #if CRT0_CALL_CONSTRUCTORS == TRUE
/* Constructors invocation.*/ /* Constructors invocation.*/
ldr r4, =__init_array_start ldr r4, =__init_array_base__
ldr r5, =__init_array_end ldr r5, =__init_array_end__
initloop: initloop:
cmp r4, r5 cmp r4, r5
bge endinitloop bge endinitloop
@ -331,8 +331,8 @@ endinitloop:
#if CRT0_CALL_DESTRUCTORS == TRUE #if CRT0_CALL_DESTRUCTORS == TRUE
/* Destructors invocation.*/ /* Destructors invocation.*/
ldr r4, =__fini_array_start ldr r4, =__fini_array_base__
ldr r5, =__fini_array_end ldr r5, =__fini_array_end__
finiloop: finiloop:
cmp r4, r5 cmp r4, r5
bge endfiniloop bge endfiniloop

View File

@ -25,25 +25,25 @@ SECTIONS
.xtors : ALIGN(4) .xtors : ALIGN(4)
{ {
__init_array_start = .; __init_array_base__ = .;
KEEP(*(SORT(.init_array.*))) KEEP(*(SORT(.init_array.*)))
KEEP(*(.init_array)) KEEP(*(.init_array))
__init_array_end = .; __init_array_end__ = .;
__fini_array_start = .; __fini_array_base__ = .;
KEEP(*(.fini_array)) KEEP(*(.fini_array))
KEEP(*(SORT(.fini_array.*))) KEEP(*(SORT(.fini_array.*)))
__fini_array_end = .; __fini_array_end__ = .;
} > XTORS_FLASH AT > XTORS_FLASH_LMA } > XTORS_FLASH AT > XTORS_FLASH_LMA
.text : ALIGN_WITH_INPUT .text : ALIGN_WITH_INPUT
{ {
__text_base = .; __text_base__ = .;
*(.text) *(.text)
*(.text.*) *(.text.*)
*(.glue_7t) *(.glue_7t)
*(.glue_7) *(.glue_7)
*(.gcc*) *(.gcc*)
__text_end = .; __text_end__ = .;
} > TEXT_FLASH AT > TEXT_FLASH_LMA } > TEXT_FLASH AT > TEXT_FLASH_LMA
.rodata : ALIGN(4) .rodata : ALIGN(4)
@ -61,9 +61,9 @@ SECTIONS
} > VARIOUS_FLASH AT > VARIOUS_FLASH_LMA } > VARIOUS_FLASH AT > VARIOUS_FLASH_LMA
.ARM.exidx : { .ARM.exidx : {
__exidx_start = .; __exidx_base__ = .;
*(.ARM.exidx* .gnu.linkonce.armexidx.*) *(.ARM.exidx* .gnu.linkonce.armexidx.*)
__exidx_end = .; __exidx_end__ = .;
} > VARIOUS_FLASH AT > VARIOUS_FLASH_LMA } > VARIOUS_FLASH AT > VARIOUS_FLASH_LMA
.eh_frame_hdr : .eh_frame_hdr :

View File

@ -20,24 +20,24 @@ SECTIONS
{ {
PROVIDE(_textdata = LOADADDR(.data)); PROVIDE(_textdata = LOADADDR(.data));
PROVIDE(_data = .); PROVIDE(_data = .);
_textdata_start = LOADADDR(.data); __textdata_base__ = LOADADDR(.data);
_data_start = .; __data_base__ = .;
*(.data) *(.data)
*(.data.*) *(.data.*)
*(.ramtext) *(.ramtext)
. = ALIGN(4); . = ALIGN(4);
PROVIDE(_edata = .); PROVIDE(_edata = .);
_data_end = .; __data_end__ = .;
} > DATA_RAM AT > DATA_RAM_LMA } > DATA_RAM AT > DATA_RAM_LMA
.bss (NOLOAD) : ALIGN(4) .bss (NOLOAD) : ALIGN(4)
{ {
_bss_start = .; __bss_base__ = .;
*(.bss) *(.bss)
*(.bss.*) *(.bss.*)
*(COMMON) *(COMMON)
. = ALIGN(4); . = ALIGN(4);
_bss_end = .; __bss_end__ = .;
PROVIDE(end = .); PROVIDE(end = .);
} > BSS_RAM } > BSS_RAM
} }

View File

@ -14,55 +14,55 @@
limitations under the License. limitations under the License.
*/ */
__ram0_start__ = ORIGIN(ram0); __ram0_base__ = ORIGIN(ram0);
__ram0_size__ = LENGTH(ram0); __ram0_size__ = LENGTH(ram0);
__ram0_end__ = __ram0_start__ + __ram0_size__; __ram0_end__ = __ram0_base__ + __ram0_size__;
__ram1_start__ = ORIGIN(ram1); __ram1_base__ = ORIGIN(ram1);
__ram1_size__ = LENGTH(ram1); __ram1_size__ = LENGTH(ram1);
__ram1_end__ = __ram1_start__ + __ram1_size__; __ram1_end__ = __ram1_base__ + __ram1_size__;
__ram2_start__ = ORIGIN(ram2); __ram2_base__ = ORIGIN(ram2);
__ram2_size__ = LENGTH(ram2); __ram2_size__ = LENGTH(ram2);
__ram2_end__ = __ram2_start__ + __ram2_size__; __ram2_end__ = __ram2_base__ + __ram2_size__;
__ram3_start__ = ORIGIN(ram3); __ram3_base__ = ORIGIN(ram3);
__ram3_size__ = LENGTH(ram3); __ram3_size__ = LENGTH(ram3);
__ram3_end__ = __ram3_start__ + __ram3_size__; __ram3_end__ = __ram3_base__ + __ram3_size__;
__ram4_start__ = ORIGIN(ram4); __ram4_base__ = ORIGIN(ram4);
__ram4_size__ = LENGTH(ram4); __ram4_size__ = LENGTH(ram4);
__ram4_end__ = __ram4_start__ + __ram4_size__; __ram4_end__ = __ram4_base__ + __ram4_size__;
__ram5_start__ = ORIGIN(ram5); __ram5_base__ = ORIGIN(ram5);
__ram5_size__ = LENGTH(ram5); __ram5_size__ = LENGTH(ram5);
__ram5_end__ = __ram5_start__ + __ram5_size__; __ram5_end__ = __ram5_base__ + __ram5_size__;
__ram6_start__ = ORIGIN(ram6); __ram6_base__ = ORIGIN(ram6);
__ram6_size__ = LENGTH(ram6); __ram6_size__ = LENGTH(ram6);
__ram6_end__ = __ram6_start__ + __ram6_size__; __ram6_end__ = __ram6_base__ + __ram6_size__;
__ram7_start__ = ORIGIN(ram7); __ram7_base__ = ORIGIN(ram7);
__ram7_size__ = LENGTH(ram7); __ram7_size__ = LENGTH(ram7);
__ram7_end__ = __ram7_start__ + __ram7_size__; __ram7_end__ = __ram7_base__ + __ram7_size__;
__flash0_start__ = ORIGIN(flash0); __flash0_base__ = ORIGIN(flash0);
__flash0_size__ = LENGTH(flash0); __flash0_size__ = LENGTH(flash0);
__flash0_end__ = __flash0_start__ + __flash0_size__; __flash0_end__ = __flash0_base__ + __flash0_size__;
__flash1_start__ = ORIGIN(flash1); __flash1_base__ = ORIGIN(flash1);
__flash1_size__ = LENGTH(flash1); __flash1_size__ = LENGTH(flash1);
__flash1_end__ = __flash1_start__ + __flash1_size__; __flash1_end__ = __flash1_base__ + __flash1_size__;
__flash2_start__ = ORIGIN(flash2); __flash2_base__ = ORIGIN(flash2);
__flash2_size__ = LENGTH(flash2); __flash2_size__ = LENGTH(flash2);
__flash2_end__ = __flash2_start__ + __flash2_size__; __flash2_end__ = __flash2_base__ + __flash2_size__;
__flash3_start__ = ORIGIN(flash3); __flash3_base__ = ORIGIN(flash3);
__flash3_size__ = LENGTH(flash3); __flash3_size__ = LENGTH(flash3);
__flash3_end__ = __flash3_start__ + __flash3_size__; __flash3_end__ = __flash3_base__ + __flash3_size__;
__flash4_start__ = ORIGIN(flash4); __flash4_base__ = ORIGIN(flash4);
__flash4_size__ = LENGTH(flash4); __flash4_size__ = LENGTH(flash4);
__flash4_end__ = __flash4_start__ + __flash4_size__; __flash4_end__ = __flash4_base__ + __flash4_size__;
__flash5_start__ = ORIGIN(flash5); __flash5_base__ = ORIGIN(flash5);
__flash5_size__ = LENGTH(flash5); __flash5_size__ = LENGTH(flash5);
__flash5_end__ = __flash5_start__ + __flash5_size__; __flash5_end__ = __flash5_base__ + __flash5_size__;
__flash6_start__ = ORIGIN(flash6); __flash6_base__ = ORIGIN(flash6);
__flash6_size__ = LENGTH(flash6); __flash6_size__ = LENGTH(flash6);
__flash6_end__ = __flash6_start__ + __flash6_size__; __flash6_end__ = __flash6_base__ + __flash6_size__;
__flash7_start__ = ORIGIN(flash7); __flash7_base__ = ORIGIN(flash7);
__flash7_size__ = LENGTH(flash7); __flash7_size__ = LENGTH(flash7);
__flash7_end__ = __flash7_start__ + __flash7_size__; __flash7_end__ = __flash7_base__ + __flash7_size__;
SECTIONS SECTIONS
{ {

View File

@ -257,18 +257,22 @@ msg_t test_execute(BaseSequentialStream *stream, const testsuite_t *tsp) {
#endif #endif
#if defined(TEST_CFG_SIZE_REPORT) #if defined(TEST_CFG_SIZE_REPORT)
{ {
extern uint8_t __text_base, __text_end, extern uint8_t __text_base__, __text_end__,
_data_start, _data_end, __rodata_base__, __rodata_end__,
_bss_start, _bss_end; __data_base__, __data_end__,
__bss_base__, __bss_end__;
test_println("***"); test_println("***");
test_print("*** Text size: "); test_print("*** Text size: ");
test_printn((uint32_t)(&__text_end - &__text_base)); test_printn((uint32_t)(&__text_end__ - &__text_base__));
test_println(" bytes");
test_print("*** RO data size: ");
test_printn((uint32_t)(&__rodata_end__ - &__rodata_base__));
test_println(" bytes"); test_println(" bytes");
test_print("*** Data size: "); test_print("*** Data size: ");
test_printn((uint32_t)(&_data_end - &_data_start)); test_printn((uint32_t)(&__data_end__ - &__data_base__));
test_println(" bytes"); test_println(" bytes");
test_print("*** BSS size: "); test_print("*** BSS size: ");
test_printn((uint32_t)(&_bss_end - &_bss_start)); test_printn((uint32_t)(&__bss_end__ - &__bss_base__));
test_println(" bytes"); test_println(" bytes");
} }
#endif #endif