1# Linker script for ARM COFF. 2# Based on i386coff.sc by Ian Taylor <ian@cygnus.com>. 3test -z "$ENTRY" && ENTRY=_start 4if test -z "${DATA_ADDR}"; then 5 if test "$LD_FLAG" = "N" || test "$LD_FLAG" = "n"; then 6 DATA_ADDR=. 7 fi 8fi 9cat <<EOF 10OUTPUT_FORMAT("${OUTPUT_FORMAT}") 11${LIB_SEARCH_DIRS} 12 13ENTRY(${ENTRY}) 14 15SECTIONS 16{ 17 /* We start at 0x8000 because gdb assumes it (see FRAME_CHAIN). 18 This is an artifact of the ARM Demon monitor using the bottom 32k 19 as workspace (shared with the FP instruction emulator if 20 present): */ 21 .text ${RELOCATING+ 0x8000} : { 22 *(.init) 23 *(.text) 24 ${CONSTRUCTING+ ___CTOR_LIST__ = .; __CTOR_LIST__ = . ; 25 LONG (-1); *(.ctors); *(.ctor); LONG (0); } 26 ${CONSTRUCTING+ ___DTOR_LIST__ = .; __DTOR_LIST__ = . ; 27 LONG (-1); *(.dtors); *(.dtor); LONG (0); } 28 *(.fini) 29 ${RELOCATING+ etext = .}; 30 } 31 .data ${RELOCATING+${DATA_ADDR-0x40000 + (. & 0xffc00fff)}} : { 32 ${RELOCATING+ __data_start__ = . ;} 33 *(.data) 34 ${RELOCATING+ __data_end__ = . ;} 35 ${RELOCATING+ edata = .}; 36 } 37 .bss ${RELOCATING+ SIZEOF(.data) + ADDR(.data)} : 38 { 39 ${RELOCATING+ __bss_start__ = . ;} 40 *(.bss) 41 *(COMMON) 42 ${RELOCATING+ __bss_end__ = . ;} 43 } 44 45 ${RELOCATING+ __end__ = .;} 46 47 .stab 0 ${RELOCATING+(NOLOAD)} : 48 { 49 [ .stab ] 50 } 51 .stabstr 0 ${RELOCATING+(NOLOAD)} : 52 { 53 [ .stabstr ] 54 } 55} 56EOF 57