1# This is for embedded products (no MMU) with ELF. 2MACHINE= 3SCRIPT_NAME=elf 4TEMPLATE_NAME=elf32 5 6# Symbols have underscore prepended. 7OUTPUT_FORMAT="elf32-us-cris" 8NO_REL_RELOCS=yes 9ARCH=cris 10MAXPAGESIZE=32 11ENTRY=__start 12EMBEDDED=yes 13ALIGNMENT=32 14TEXT_START_ADDR=0 15 16# Put crt0 for flash/eprom etc. in this section. 17INITIAL_READONLY_SECTIONS= 18if test -z "${CREATE_SHLIB}"; then 19 INITIAL_READONLY_SECTIONS=".interp ${RELOCATING-0} : { *(.interp) }" 20fi 21INITIAL_READONLY_SECTIONS="${INITIAL_READONLY_SECTIONS} 22 .startup : { KEEP(*(.startup)) }" 23 24# Setting __Stext to . in TEXT_START_SYMBOLS doesn't get what we want 25# most of the time, which is the start of all read-only sections; 26# there's at least .startup and .init before it. We have to resort to 27# trickery. Note that __Stext is always defined, not PROVIDE:d, since 28# external tools look for it. 29TEXT_START_SYMBOLS='__Stext = ADDR (.startup);' 30 31# The __start dance is to get us through assumptions about entry 32# symbols, and to clear _start for normal use with sane programs. 33EXECUTABLE_SYMBOLS=' 34__start = DEFINED(__start) ? __start : 35 DEFINED(_start) ? _start : 36 DEFINED(start) ? start : 37 DEFINED(.startup) ? .startup + 2 : 2; 38' 39 40# Smuggle an "OTHER_TEXT_END_SYMBOLS" here. 41OTHER_READONLY_SECTIONS="${RELOCATING+PROVIDE (__Etext = .);}" 42DATA_START_SYMBOLS='PROVIDE (__Sdata = .);' 43 44# Smuggle an "OTHER_DATA_END_SYMBOLS" here. 45OTHER_SDATA_SECTIONS="${RELOCATING+PROVIDE (__Edata = .);}" 46 47# If .bss does not immediately follow .data but has its own start 48# address, we can't get to it with OTHER_BSS_SYMBOLS, neither can we 49# use ADDR(.bss) there. Instead, we use the symbol support for the 50# end symbol. 51OTHER_BSS_END_SYMBOLS=' 52 PROVIDE (__Ebss = .); 53 __Sbss = ADDR (.bss); 54 PROVIDE (_bss_start = __Sbss); 55' 56OTHER_END_SYMBOLS='PROVIDE (__end = .);' 57 58INIT_START=' 59 . = ALIGN(2); 60 ___init__start = .; 61 PROVIDE (___do_global_ctors = .); 62' 63 64INIT_END=' 65 PROVIDE (__init__end = .); 66 PROVIDE (___init__end = .); 67' 68 69FINI_START=' 70 . = ALIGN (2); 71 ___fini__start = .; 72 PROVIDE (___do_global_dtors = .); 73' 74 75FINI_END=' 76 PROVIDE (__fini__end = .); 77 ___fini__end = .; 78' 79 80CTOR_START=' 81 PROVIDE (___ctors = .); 82 ___elf_ctors_dtors_begin = .; 83' 84 85CTOR_END=' 86 PROVIDE (___ctors_end = .); 87' 88 89DTOR_START=' 90 PROVIDE (___dtors = .); 91' 92 93CTOR_END=' 94 PROVIDE (___dtors_end = .); 95 ___elf_ctors_dtors_end = .; 96' 97 98# Also add the other symbols provided for rsim/xsim and elinux. 99OTHER_SYMBOLS=' 100 PROVIDE (__Eall = .); 101 PROVIDE (__Endmem = 0x10000000); 102 PROVIDE (__Stacksize = 0); 103' 104NO_SMALL_DATA=yes 105