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