1 # This is for embedded products (no MMU) with ELF. 2 MACHINE= 3 SCRIPT_NAME=elf 4 TEMPLATE_NAME=elf32 5 6 # Symbols have underscore prepended. 7 OUTPUT_FORMAT="elf32-us-cris" 8 NO_REL_RELOCS=yes 9 ARCH=cris 10 MAXPAGESIZE=32 11 ENTRY=__start 12 EMBEDDED=yes 13 ALIGNMENT=32 14 TEXT_START_ADDR=0 15 16 # Put crt0 for flash/eprom etc. in this section. 17 INITIAL_READONLY_SECTIONS= 18 if test -z "${CREATE_SHLIB}"; then 19 INITIAL_READONLY_SECTIONS=".interp ${RELOCATING-0} : { *(.interp) }" 20 fi 21 INITIAL_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. 29 TEXT_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. 33 EXECUTABLE_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. 41 OTHER_READONLY_SECTIONS="${RELOCATING+PROVIDE (__Etext = .);}" 42 DATA_START_SYMBOLS='PROVIDE (__Sdata = .);' 43 44 # Smuggle an "OTHER_DATA_END_SYMBOLS" here. 45 OTHER_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. 51 OTHER_BSS_END_SYMBOLS=' 52 PROVIDE (__Ebss = .); 53 __Sbss = ADDR (.bss); 54 PROVIDE (_bss_start = __Sbss); 55 ' 56 OTHER_END_SYMBOLS='PROVIDE (__end = .);' 57 58 INIT_START=' 59 . = ALIGN(2); 60 ___init__start = .; 61 PROVIDE (___do_global_ctors = .); 62 ' 63 64 INIT_END=' 65 PROVIDE (__init__end = .); 66 PROVIDE (___init__end = .); 67 ' 68 69 FINI_START=' 70 . = ALIGN (2); 71 ___fini__start = .; 72 PROVIDE (___do_global_dtors = .); 73 ' 74 75 FINI_END=' 76 PROVIDE (__fini__end = .); 77 ___fini__end = .; 78 ' 79 80 CTOR_START=' 81 PROVIDE (___ctors = .); 82 ___elf_ctors_dtors_begin = .; 83 ' 84 85 CTOR_END=' 86 PROVIDE (___ctors_end = .); 87 ' 88 89 DTOR_START=' 90 PROVIDE (___dtors = .); 91 ' 92 93 CTOR_END=' 94 PROVIDE (___dtors_end = .); 95 ___elf_ctors_dtors_end = .; 96 ' 97 98 # Also add the other symbols provided for rsim/xsim and elinux. 99 OTHER_SYMBOLS=' 100 PROVIDE (__Eall = .); 101 PROVIDE (__Endmem = 0x10000000); 102 PROVIDE (__Stacksize = 0); 103 ' 104 NO_SMALL_DATA=yes 105