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