| TORS=".tors : |
| { |
| ___ctors = . ; |
| *(.ctors) |
| ___ctors_end = . ; |
| ___dtors = . ; |
| *(.dtors) |
| ___dtors_end = . ; |
| . = ALIGN(4); |
| } ${RELOCATING+ > ram}" |
| |
| cat <<EOF |
| OUTPUT_FORMAT("${OUTPUT_FORMAT}") |
| OUTPUT_ARCH(${ARCH}) |
| ${LIB_SEARCH_DIRS} |
| EOF |
| |
| test -n "${RELOCATING}" && cat <<EOF |
| /* Allow the command line to override the memory region sizes. */ |
| __PMSIZE = DEFINED(__PMSIZE) ? __PMSIZE : 256K; |
| __RAMSIZE = DEFINED(__RAMSIZE) ? __RAMSIZE : 64K; |
| |
| MEMORY |
| { |
| flash (rx) : ORIGIN = 0, LENGTH = __PMSIZE |
| ram (rw!x) : ORIGIN = 0x800000, LENGTH = __RAMSIZE |
| } |
| EOF |
| |
| cat <<EOF |
| SECTIONS |
| { |
| .text : |
| { |
| *(.text${RELOCATING+*}) |
| ${RELOCATING+*(.strings) |
| *(._pm*) |
| KEEP (*(SORT_NONE(.init))) |
| KEEP (*(SORT_NONE(.fini))) |
| _etext = .; |
| . = ALIGN(4);} |
| } ${RELOCATING+ > flash} |
| ${CONSTRUCTING+${TORS}} |
| .data : ${RELOCATING+ AT (ADDR (.text) + SIZEOF (.text))} |
| { |
| *(.data) |
| ${RELOCATING+*(.rodata) |
| *(.rodata*) |
| _edata = .; |
| . = ALIGN(4);} |
| } ${RELOCATING+ > ram} |
| .bss ${RELOCATING+ SIZEOF(.data) + ADDR(.data)} : |
| { |
| ${RELOCATING+ _bss_start = . ; } |
| *(.bss) |
| ${RELOCATING+*(COMMON) |
| _end = .; |
| . = ALIGN(4);} |
| } ${RELOCATING+ > ram} |
| |
| ${RELOCATING+ __data_load_start = LOADADDR(.data); } |
| ${RELOCATING+ __data_load_end = __data_load_start + SIZEOF(.data); } |
| |
| .stab 0 ${RELOCATING+(NOLOAD)} : |
| { |
| *(.stab) |
| } |
| .stabstr 0 ${RELOCATING+(NOLOAD)} : |
| { |
| *(.stabstr) |
| } |
| EOF |
| |
| . $srcdir/scripttempl/DWARF.sc |
| |
| cat <<EOF |
| } |
| EOF |