|  | 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 |