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_ADDR='ALIGN (2)' 59 60INIT_START=' 61 ___init__start = .; 62 PROVIDE (___do_global_ctors = .); 63' 64 65INIT_END=' 66 PROVIDE (__init__end = .); 67 PROVIDE (___init__end = .); 68' 69 70FINI_ADDR='ALIGN (2)' 71 72FINI_START=' 73 ___fini__start = .; 74 PROVIDE (___do_global_dtors = .); 75' 76 77FINI_END=' 78 PROVIDE (__fini__end = .); 79 ___fini__end = .; 80' 81 82CTOR_START=' 83 PROVIDE (___ctors = .); 84 ___elf_ctors_dtors_begin = .; 85' 86 87CTOR_END=' 88 PROVIDE (___ctors_end = .); 89' 90 91DTOR_START=' 92 PROVIDE (___dtors = .); 93' 94 95CTOR_END=' 96 PROVIDE (___dtors_end = .); 97 ___elf_ctors_dtors_end = .; 98' 99 100# Also add the other symbols provided for rsim/xsim and elinux. 101OTHER_SYMBOLS=' 102 PROVIDE (__Eall = .); 103 PROVIDE (__Endmem = 0x10000000); 104 PROVIDE (__Stacksize = 0); 105' 106NO_SMALL_DATA=yes 107