2 *uncomment this if you want the linker to output srecords.
7 OUTPUT_ARCH(TARGET_OBJ_FORMAT)
10 GROUP(cygmon-salib.o -lc -lgcc -lc)
13 * The memory map looks like this:
14 * +--------------------+ <- low memory
18 * | ctor list | the ctor and dtor lists are for
19 * | dtor list | C++ support
21 * +--------------------+
22 * | .data | initialized data goes here
25 * +--------------------+
27 * | __bss_start | start of bss, cleared by crt0
28 * | _end | start of heap, used by sbrk()
29 * +--------------------+
33 * | __stack | top of stack
34 * +--------------------+ <- high memory
37 _STACK_SIZE = (16 * 1024);
40 _RAM_END = _RAM_START + _RAM_SIZE;
43 * Setup the standard memory map. The stack grows down towards low memory.
47 ram : ORIGIN = 0x4000, LENGTH = 1M
50 __stack = (_RAM_START + _RAM_SIZE - 4 * 16) - _STACK_SIZE;
53 * All the symbols that might be accessed from C code need to be
54 * listed twice, once with an additional underscore. aout format needs
55 * and extra underscore, whereas coff & elf doesn't. This is to work
59 * Initalize some symbols to be zero so we can reference them in the
60 * crt0 without core dumping. These functions are all optional, but
61 * we do this so we can have our crt0 always use them if they exist.
62 * This is so BSPs work better when using the crt0 installed with gcc.
63 * We have to initalize them twice, so we cover a.out (which prepends
64 * an underscore) and coff object file formats.
66 PROVIDE (hardware_init_hook = 0);
67 PROVIDE (_hardware_init_hook = 0);
68 PROVIDE (software_init_hook = 0);
69 PROVIDE (_software_init_hook = 0);
78 LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2)
83 LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2)
99 .shbss SIZEOF(.text) + ADDR(.text) : {
111 .bss SIZEOF(.data) + ADDR(.data) : {
114 __bss_start = ALIGN(0x8);
115 __bss_start = ALIGN(0x8);
126 /* Stabs debugging sections. */
127 .stab 0 : { *(.stab) }
128 .stabstr 0 : { *(.stabstr) }
129 .stab.excl 0 : { *(.stab.excl) }
130 .stab.exclstr 0 : { *(.stab.exclstr) }
131 .stab.index 0 : { *(.stab.index) }
132 .stab.indexstr 0 : { *(.stab.indexstr) }
133 .comment 0 : { *(.comment) }
134 /* DWARF debug sections.
135 Symbols in the DWARF debugging sections are relative to the beginning
136 of the section so we begin them at 0. */
138 .debug 0 : { *(.debug) }
139 .line 0 : { *(.line) }
140 /* GNU DWARF 1 extensions */
141 .debug_srcinfo 0 : { *(.debug_srcinfo) }
142 .debug_sfnames 0 : { *(.debug_sfnames) }
143 /* DWARF 1.1 and DWARF 2 */
144 .debug_aranges 0 : { *(.debug_aranges) }
145 .debug_pubnames 0 : { *(.debug_pubnames) }
147 .debug_info 0 : { *(.debug_info) }
148 .debug_abbrev 0 : { *(.debug_abbrev) }
149 .debug_line 0 : { *(.debug_line) }
150 .debug_frame 0 : { *(.debug_frame) }
151 .debug_str 0 : { *(.debug_str) }
152 .debug_loc 0 : { *(.debug_loc) }
153 .debug_macinfo 0 : { *(.debug_macinfo) }
154 /* SGI/MIPS DWARF 2 extensions */
155 .debug_weaknames 0 : { *(.debug_weaknames) }
156 .debug_funcnames 0 : { *(.debug_funcnames) }
157 .debug_typenames 0 : { *(.debug_typenames) }
158 .debug_varnames 0 : { *(.debug_varnames) }
159 /* These must appear regardless of . */