1 /* Default entry point: */
2 ENTRY(call_start_cpu0);
6 /* RTC fast memory holds RTC wake stub code,
7 including from any source file named rtc_wake_stub*.c
12 *(.rtc.literal .rtc.text)
13 *rtc_wake_stub*.o(.literal .text .literal.* .text.*)
16 /* RTC slow memory holds RTC wake stub
17 data/rodata, including from any source file
18 named rtc_wake_stub*.c
22 _rtc_data_start = ABSOLUTE(.);
25 *rtc_wake_stub*.o(.data .rodata .data.* .rodata.* .bss .bss.*)
26 _rtc_data_end = ABSOLUTE(.);
29 /* RTC bss, from any source file named rtc_wake_stub*.c */
32 _rtc_bss_start = ABSOLUTE(.);
33 *rtc_wake_stub*.o(.bss .bss.*)
34 *rtc_wake_stub*.o(COMMON)
35 _rtc_bss_end = ABSOLUTE(.);
38 /* Send .iram0 code to iram */
41 /* Vectors go to IRAM */
42 _init_start = ABSOLUTE(.);
43 /* Vectors according to builds/RF-2015.2-win32/esp108_v1_2_s5_512int_2/config.html */
45 KEEP(*(.WindowVectors.text));
47 KEEP(*(.Level2InterruptVector.text));
49 KEEP(*(.Level3InterruptVector.text));
51 KEEP(*(.Level4InterruptVector.text));
53 KEEP(*(.Level5InterruptVector.text));
55 KEEP(*(.DebugExceptionVector.text));
57 KEEP(*(.NMIExceptionVector.text));
59 KEEP(*(.KernelExceptionVector.text));
61 KEEP(*(.UserExceptionVector.text));
63 KEEP(*(.DoubleExceptionVector.text));
67 *(.UserEnter.literal);
73 _init_end = ABSOLUTE(.);
75 /* This goes here, not at top of linker script, so addr2line finds it last,
76 and uses it in preference to the first symbol in IRAM */
77 _iram_start = ABSOLUTE(0);
82 /* Code marked as runnning out of IRAM */
83 _iram_text_start = ABSOLUTE(.);
85 *libfreertos.a:(.literal .text .literal.* .text.*)
86 *libheap.a:(.literal .text .literal.* .text.*)
87 *libesp32.a:panic.o(.literal .text .literal.* .text.*)
88 *libesp32.a:core_dump.o(.literal .text .literal.* .text.*)
89 *libesp32.a:heap_alloc_caps.o(.literal .text .literal.* .text.*)
90 *libapp_trace.a:(.literal .text .literal.* .text.*)
91 *libxtensa-debug-module.a:eri.o(.literal .text .literal.* .text.*)
92 *libphy.a:(.literal .text .literal.* .text.*)
93 *librtc.a:(.literal .text .literal.* .text.*)
94 *libsoc.a:(.literal .text .literal.* .text.*)
95 *libhal.a:(.literal .text .literal.* .text.*)
96 *libspi_flash.a:spi_flash_rom_patch.o(.literal .text .literal.* .text.*)
97 _iram_text_end = ABSOLUTE(.);
102 _data_start = ABSOLUTE(.);
105 KEEP(*(.gnu.linkonce.d.*))
109 KEEP(*(.gnu.linkonce.s.*))
112 KEEP(*(.gnu.linkonce.s2.*))
115 *libesp32.a:panic.o(.rodata .rodata.*)
116 *libphy.a:(.rodata .rodata.*)
117 *libapp_trace.a:(.rodata .rodata.*)
118 _data_end = ABSOLUTE(.);
123 .dram0.bss (NOLOAD) :
126 _bss_start = ABSOLUTE(.);
130 *(.gnu.linkonce.sb.*)
134 *(.gnu.linkonce.sb2.*)
142 _bss_end = ABSOLUTE(.);
143 _heap_start = ABSOLUTE(.);
148 _rodata_start = ABSOLUTE(.);
151 *(.irom1.text) /* catch stray ICACHE_RODATA_ATTR */
154 __XT_EXCEPTION_TABLE_ = ABSOLUTE(.);
161 /* C++ constructor and destructor tables, properly ordered: */
162 __init_array_start = ABSOLUTE(.);
163 KEEP (*crtbegin.o(.ctors))
164 KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
165 KEEP (*(SORT(.ctors.*)))
167 __init_array_end = ABSOLUTE(.);
168 KEEP (*crtbegin.o(.dtors))
169 KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
170 KEEP (*(SORT(.dtors.*)))
172 /* C++ exception handlers table: */
173 __XT_EXCEPTION_DESCS_ = ABSOLUTE(.);
176 __XT_EXCEPTION_DESCS_END__ = ABSOLUTE(.);
177 *(.xt_except_desc_end)
180 _rodata_end = ABSOLUTE(.);
181 /* Literals are also RO data. */
182 _lit4_start = ABSOLUTE(.);
185 *(.gnu.linkonce.lit4.*)
186 _lit4_end = ABSOLUTE(.);
193 _text_start = ABSOLUTE(.);
194 *(.literal .text .literal.* .text.* .stub .gnu.warning .gnu.linkonce.literal.* .gnu.linkonce.t.*.literal .gnu.linkonce.t.*)
195 *(.irom0.text) /* catch stray ICACHE_RODATA_ATTR */
199 _text_end = ABSOLUTE(.);
202 /* Similar to _iram_start, this symbol goes here so it is
203 resolved by addr2line in preference to the first symbol in
204 the flash.text segment.
206 _flash_cache_start = ABSOLUTE(0);