1# Copyright (C) 2014 Free Software Foundation, Inc. 2# 3# Copying and distribution of this file, with or without modification, 4# are permitted in any medium without royalty provided the copyright 5# notice and this notice are preserved. 6 7test -z "$ENTRY" && ENTRY=_start 8test -z "${BIG_OUTPUT_FORMAT}" && BIG_OUTPUT_FORMAT=${OUTPUT_FORMAT} 9test -z "${LITTLE_OUTPUT_FORMAT}" && LITTLE_OUTPUT_FORMAT=${OUTPUT_FORMAT} 10if [ -z "$MACHINE" ]; then OUTPUT_ARCH=${ARCH}; else OUTPUT_ARCH=${ARCH}:${MACHINE}; fi 11test "$LD_FLAG" = "N" && DATA_ADDR=. 12INTERP=".interp ${RELOCATING-0} : { *(.interp) }" 13PLT=".plt ${RELOCATING-0} : { *(.plt) }" 14 15 16CTOR=".ctors ${CONSTRUCTING-0} : 17 { 18 ${CONSTRUCTING+${CTOR_START}} 19 /* gcc uses crtbegin.o to find the start of 20 the constructors, so we make sure it is 21 first. Because this is a wildcard, it 22 doesn't matter if the user does not 23 actually link against crtbegin.o; the 24 linker won't look for a file to match a 25 wildcard. The wildcard also means that it 26 doesn't matter which directory crtbegin.o 27 is in. */ 28 29 KEEP (*crtbegin.o(.ctors)) 30 KEEP (*crtbegin?.o(.ctors)) 31 32 /* We don't want to include the .ctor section from 33 the crtend.o file until after the sorted ctors. 34 The .ctor section from the crtend file contains the 35 end of ctors marker and it must be last */ 36 37 KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o) .ctors)) 38 KEEP (*(SORT(.ctors.*))) 39 KEEP (*(.ctors)) 40 ${CONSTRUCTING+${CTOR_END}} 41 }" 42 43DTOR=" .dtors ${CONSTRUCTING-0} : 44 { 45 ${CONSTRUCTING+${DTOR_START}} 46 KEEP (*crtbegin.o(.dtors)) 47 KEEP (*crtbegin?.o(.dtors)) 48 KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o) .dtors)) 49 KEEP (*(SORT(.dtors.*))) 50 KEEP (*(.dtors)) 51 ${CONSTRUCTING+${DTOR_END}} 52 }" 53 54STACK=" .stack : { _stack = .; *(.stack) } >STACK " 55 56# if this is for an embedded system, don't add SIZEOF_HEADERS. 57if [ -z "$EMBEDDED" ]; then 58 test -z "${READONLY_BASE_ADDRESS}" && READONLY_BASE_ADDRESS="${READONLY_START_ADDR} + SIZEOF_HEADERS" 59else 60 test -z "${READONLY_BASE_ADDRESS}" && READONLY_BASE_ADDRESS="${READONLY_START_ADDR}" 61fi 62 63cat <<EOF 64/* Copyright (C) 2014 Free Software Foundation, Inc. 65 66 Copying and distribution of this script, with or without modification, 67 are permitted in any medium without royalty provided the copyright 68 notice and this notice are preserved. */ 69 70OUTPUT_FORMAT("${OUTPUT_FORMAT}", "${BIG_OUTPUT_FORMAT}", 71 "${LITTLE_OUTPUT_FORMAT}") 72OUTPUT_ARCH(${OUTPUT_ARCH}) 73${RELOCATING+ENTRY(${ENTRY})} 74 75${RELOCATING+${LIB_SEARCH_DIRS}} 76${RELOCATING+/* Do we need any of these for elf? 77 __DYNAMIC = 0; ${STACKZERO+${STACKZERO}} ${SHLIB_PATH+${SHLIB_PATH}} */} 78${RELOCATING+${EXECUTABLE_SYMBOLS}} 79 80MEMORY 81{ 82 /* These are the values for the D10V-TS3 board. 83 There are other memory regions available on 84 the TS3 (eg ROM, FLASH, etc) but these are not 85 used by this script. */ 86 87 INSN : org = 0x01000000, len = 256K 88 DATA : org = 0x02000000, len = 48K 89 90 /* This is a fake memory region at the top of the 91 on-chip RAM, used as the start of the 92 (descending) stack. */ 93 94 STACK : org = 0x0200BFFC, len = 4 95} 96 97SECTIONS 98{ 99 .text ${RELOCATING+${TEXT_START_ADDR}} : 100 { 101 ${RELOCATING+${TEXT_START_SYMBOLS}} 102 KEEP (*(SORT_NONE(.init))) 103 KEEP (*(SORT_NONE(.init.*))) 104 KEEP (*(SORT_NONE(.fini))) 105 KEEP (*(SORT_NONE(.fini.*))) 106 *(.text) 107 *(.text.*) 108 /* .gnu.warning sections are handled specially by elf32.em. */ 109 *(.gnu.warning) 110 *(.gnu.linkonce.t*) 111 ${RELOCATING+_etext = .;} 112 ${RELOCATING+PROVIDE (etext = .);} 113 } ${RELOCATING+ >INSN} =${NOP-0} 114 115 .rodata ${RELOCATING+${READONLY_START_ADDR}} : { 116 *(.rodata) 117 *(.gnu.linkonce.r*) 118 *(.rodata.*) 119 } ${RELOCATING+ >DATA} 120 121 .rodata1 ${RELOCATING-0} : { 122 *(.rodata1) 123 *(.rodata1.*) 124 } ${RELOCATING+ >DATA} 125 126 .data ${RELOCATING-0} : 127 { 128 ${RELOCATING+${DATA_START_SYMBOLS}} 129 *(.data) 130 *(.data.*) 131 *(.gnu.linkonce.d*) 132 ${CONSTRUCTING+CONSTRUCTORS} 133 } ${RELOCATING+ >DATA} 134 135 .data1 ${RELOCATING-0} : { 136 *(.data1) 137 *(.data1.*) 138 } ${RELOCATING+ >DATA} 139 140 ${RELOCATING+${CTOR} >DATA} 141 ${RELOCATING+${DTOR} >DATA} 142 143 /* We want the small data sections together, so single-instruction offsets 144 can access them all, and initialized data all before uninitialized, so 145 we can shorten the on-disk segment size. */ 146 .sdata ${RELOCATING-0} : { 147 *(.sdata) 148 *(.sdata.*) 149 } ${RELOCATING+ >DATA} 150 151 ${RELOCATING+_edata = .;} 152 ${RELOCATING+PROVIDE (edata = .);} 153 ${RELOCATING+__bss_start = .;} 154 .sbss ${RELOCATING-0} : { *(.sbss) *(.scommon) } ${RELOCATING+ >DATA} 155 .bss ${RELOCATING-0} : 156 { 157 *(.dynbss) 158 *(.dynbss.*) 159 *(.bss) 160 *(.bss.*) 161 *(COMMON) 162 } ${RELOCATING+ >DATA} 163 164 ${RELOCATING+_end = . ;} 165 ${RELOCATING+PROVIDE (end = .);} 166 167 ${RELOCATING+$STACK} 168 169 /* Stabs debugging sections. */ 170 .stab 0 : { *(.stab) } 171 .stabstr 0 : { *(.stabstr) } 172 .stab.excl 0 : { *(.stab.excl) } 173 .stab.exclstr 0 : { *(.stab.exclstr) } 174 .stab.index 0 : { *(.stab.index) } 175 .stab.indexstr 0 : { *(.stab.indexstr) } 176 177 .comment 0 : { *(.comment) } 178 179EOF 180 181. $srcdir/scripttempl/DWARF.sc 182 183cat <<EOF 184} 185EOF 186