| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  | /*  Default entry point:  */ | 
					
						
							|  |  |  | ENTRY(call_start_cpu0); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | SECTIONS | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2016-11-13 17:23:44 +02:00
										 |  |  |   /* RTC fast memory holds RTC wake stub code, | 
					
						
							|  |  |  |      including from any source file named rtc_wake_stub*.c | 
					
						
							|  |  |  |   */ | 
					
						
							|  |  |  |   .rtc.text : | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     . = ALIGN(4); | 
					
						
							|  |  |  |     *(.rtc.literal .rtc.text) | 
					
						
							|  |  |  |     *rtc_wake_stub*.o(.literal .text .literal.* .text.*) | 
					
						
							|  |  |  |   } >rtc_iram_seg | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   /* RTC slow memory holds RTC wake stub | 
					
						
							|  |  |  |      data/rodata, including from any source file | 
					
						
							|  |  |  |      named rtc_wake_stub*.c | 
					
						
							|  |  |  |   */ | 
					
						
							|  |  |  |   .rtc.data : | 
					
						
							|  |  |  |   { | 
					
						
							| 
									
										
										
										
											2017-01-16 16:03:13 +02:00
										 |  |  |     _rtc_data_start = ABSOLUTE(.); | 
					
						
							| 
									
										
										
										
											2016-11-13 17:23:44 +02:00
										 |  |  |     *(.rtc.data) | 
					
						
							|  |  |  |     *(.rtc.rodata) | 
					
						
							|  |  |  |     *rtc_wake_stub*.o(.data .rodata .data.* .rodata.* .bss .bss.*) | 
					
						
							| 
									
										
										
										
											2017-01-16 16:03:13 +02:00
										 |  |  |     _rtc_data_end = ABSOLUTE(.); | 
					
						
							| 
									
										
										
										
											2016-11-13 17:23:44 +02:00
										 |  |  |   } > rtc_slow_seg | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   /* RTC bss, from any source file named rtc_wake_stub*.c */ | 
					
						
							|  |  |  |   .rtc.bss (NOLOAD) : | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     _rtc_bss_start = ABSOLUTE(.); | 
					
						
							|  |  |  |     *rtc_wake_stub*.o(.bss .bss.*) | 
					
						
							|  |  |  |     *rtc_wake_stub*.o(COMMON) | 
					
						
							|  |  |  |     _rtc_bss_end = ABSOLUTE(.); | 
					
						
							|  |  |  |   } > rtc_slow_seg | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  |   /* Send .iram0 code to iram */ | 
					
						
							| 
									
										
										
										
											2016-11-13 17:23:44 +02:00
										 |  |  |   .iram0.vectors : | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  |   { | 
					
						
							|  |  |  |     /* Vectors go to IRAM */ | 
					
						
							|  |  |  |     _init_start = ABSOLUTE(.); | 
					
						
							|  |  |  |     /* Vectors according to builds/RF-2015.2-win32/esp108_v1_2_s5_512int_2/config.html */ | 
					
						
							|  |  |  |     . = 0x0; | 
					
						
							|  |  |  |     KEEP(*(.WindowVectors.text)); | 
					
						
							|  |  |  |     . = 0x180; | 
					
						
							|  |  |  |     KEEP(*(.Level2InterruptVector.text)); | 
					
						
							|  |  |  |     . = 0x1c0; | 
					
						
							|  |  |  |     KEEP(*(.Level3InterruptVector.text)); | 
					
						
							|  |  |  |     . = 0x200; | 
					
						
							|  |  |  |     KEEP(*(.Level4InterruptVector.text)); | 
					
						
							|  |  |  |     . = 0x240; | 
					
						
							|  |  |  |     KEEP(*(.Level5InterruptVector.text)); | 
					
						
							|  |  |  |     . = 0x280; | 
					
						
							|  |  |  |     KEEP(*(.DebugExceptionVector.text)); | 
					
						
							|  |  |  |     . = 0x2c0; | 
					
						
							|  |  |  |     KEEP(*(.NMIExceptionVector.text)); | 
					
						
							|  |  |  |     . = 0x300; | 
					
						
							|  |  |  |     KEEP(*(.KernelExceptionVector.text)); | 
					
						
							|  |  |  |     . = 0x340; | 
					
						
							|  |  |  |     KEEP(*(.UserExceptionVector.text)); | 
					
						
							|  |  |  |     . = 0x3C0; | 
					
						
							|  |  |  |     KEEP(*(.DoubleExceptionVector.text)); | 
					
						
							|  |  |  |     . = 0x400; | 
					
						
							|  |  |  |     *(.*Vector.literal) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     *(.UserEnter.literal); | 
					
						
							|  |  |  |     *(.UserEnter.text); | 
					
						
							|  |  |  |     . = ALIGN (16); | 
					
						
							|  |  |  |     *(.entry.text) | 
					
						
							|  |  |  |     *(.init.literal) | 
					
						
							|  |  |  |     *(.init) | 
					
						
							|  |  |  |     _init_end = ABSOLUTE(.); | 
					
						
							| 
									
										
										
										
											2017-04-04 01:26:23 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  |     /* This goes here, not at top of linker script, so addr2line finds it last, | 
					
						
							|  |  |  |        and uses it in preference to the first symbol in IRAM */ | 
					
						
							|  |  |  |     _iram_start = ABSOLUTE(0); | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  |   } > iram0_0_seg | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   .iram0.text : | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     /* Code marked as runnning out of IRAM */ | 
					
						
							|  |  |  |     _iram_text_start = ABSOLUTE(.); | 
					
						
							|  |  |  |     *(.iram1 .iram1.*) | 
					
						
							|  |  |  |     *libfreertos.a:(.literal .text .literal.* .text.*) | 
					
						
							| 
									
										
										
										
											2017-08-01 08:51:04 +03:00
										 |  |  |     *libheap.a:multi_heap.o(.literal .text .literal.* .text.*) | 
					
						
							| 
									
										
										
										
											2017-09-12 09:40:52 +03:00
										 |  |  |     *libheap.a:multi_heap_poisoning.o(.literal .text .literal.* .text.*) | 
					
						
							| 
									
										
										
										
											2016-11-13 17:23:44 +02:00
										 |  |  |     *libesp32.a:panic.o(.literal .text .literal.* .text.*) | 
					
						
							| 
									
										
										
										
											2017-02-06 15:17:11 +02:00
										 |  |  |     *libesp32.a:core_dump.o(.literal .text .literal.* .text.*) | 
					
						
							| 
									
										
										
										
											2017-08-01 08:51:04 +03:00
										 |  |  |     *libapp_trace.a:(.literal .text .literal.* .text.*) | 
					
						
							|  |  |  |     *libxtensa-debug-module.a:eri.o(.literal .text .literal.* .text.*) | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  |     *libesp32.a:app_trace.o(.literal .text .literal.* .text.*) | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  |     *libphy.a:(.literal .text .literal.* .text.*) | 
					
						
							|  |  |  |     *librtc.a:(.literal .text .literal.* .text.*) | 
					
						
							| 
									
										
										
										
											2017-04-12 21:49:58 +03:00
										 |  |  |     *libsoc.a:(.literal .text .literal.* .text.*) | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  |     *libhal.a:(.literal .text .literal.* .text.*) | 
					
						
							| 
									
										
										
										
											2017-09-12 09:40:52 +03:00
										 |  |  |     *libgcc.a:lib2funcs.o(.literal .text .literal.* .text.*) | 
					
						
							| 
									
										
										
										
											2017-04-12 21:49:58 +03:00
										 |  |  |     *libspi_flash.a:spi_flash_rom_patch.o(.literal .text .literal.* .text.*) | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  |     _iram_text_end = ABSOLUTE(.); | 
					
						
							|  |  |  |   } > iram0_0_seg | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-16 16:03:13 +02:00
										 |  |  |   .dram0.data : | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     _data_start = ABSOLUTE(.); | 
					
						
							| 
									
										
										
										
											2017-08-01 08:51:04 +03:00
										 |  |  |     *(.data) | 
					
						
							|  |  |  |     *(.data.*) | 
					
						
							|  |  |  |     *(.gnu.linkonce.d.*) | 
					
						
							|  |  |  |     *(.data1) | 
					
						
							|  |  |  |     *(.sdata) | 
					
						
							|  |  |  |     *(.sdata.*) | 
					
						
							|  |  |  |     *(.gnu.linkonce.s.*) | 
					
						
							|  |  |  |     *(.sdata2) | 
					
						
							|  |  |  |     *(.sdata2.*) | 
					
						
							|  |  |  |     *(.gnu.linkonce.s2.*) | 
					
						
							|  |  |  |     *(.jcr) | 
					
						
							| 
									
										
										
										
											2017-01-16 16:03:13 +02:00
										 |  |  |     *(.dram1 .dram1.*) | 
					
						
							|  |  |  |     *libesp32.a:panic.o(.rodata .rodata.*) | 
					
						
							| 
									
										
										
										
											2017-05-06 20:29:12 +03:00
										 |  |  |     *libphy.a:(.rodata .rodata.*) | 
					
						
							| 
									
										
										
										
											2017-08-01 08:51:04 +03:00
										 |  |  |     *libapp_trace.a:(.rodata .rodata.*) | 
					
						
							|  |  |  |     *libheap.a:multi_heap.o(.rodata .rodata.*) | 
					
						
							| 
									
										
										
										
											2017-09-12 09:40:52 +03:00
										 |  |  |     *libheap.a:multi_heap_poisoning.o(.rodata .rodata.*) | 
					
						
							| 
									
										
										
										
											2017-01-16 16:03:13 +02:00
										 |  |  |     _data_end = ABSOLUTE(.); | 
					
						
							|  |  |  |     . = ALIGN(4); | 
					
						
							|  |  |  |   } >dram0_0_seg | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  |   /* Shared RAM */ | 
					
						
							|  |  |  |   .dram0.bss (NOLOAD) : | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     . = ALIGN (8); | 
					
						
							|  |  |  |     _bss_start = ABSOLUTE(.); | 
					
						
							|  |  |  |     *(.dynsbss) | 
					
						
							|  |  |  |     *(.sbss) | 
					
						
							|  |  |  |     *(.sbss.*) | 
					
						
							|  |  |  |     *(.gnu.linkonce.sb.*) | 
					
						
							|  |  |  |     *(.scommon) | 
					
						
							|  |  |  |     *(.sbss2) | 
					
						
							|  |  |  |     *(.sbss2.*) | 
					
						
							|  |  |  |     *(.gnu.linkonce.sb2.*) | 
					
						
							|  |  |  |     *(.dynbss) | 
					
						
							| 
									
										
										
										
											2017-01-05 13:54:40 +02:00
										 |  |  |     *(.bss) | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  |     *(.bss.*) | 
					
						
							|  |  |  |     *(.share.mem) | 
					
						
							|  |  |  |     *(.gnu.linkonce.b.*) | 
					
						
							|  |  |  |     *(COMMON) | 
					
						
							|  |  |  |     . = ALIGN (8); | 
					
						
							|  |  |  |     _bss_end = ABSOLUTE(.); | 
					
						
							|  |  |  |     _heap_start = ABSOLUTE(.); | 
					
						
							|  |  |  |   } >dram0_0_seg | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   .flash.rodata : | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     _rodata_start = ABSOLUTE(.); | 
					
						
							|  |  |  |     *(.rodata) | 
					
						
							|  |  |  |     *(.rodata.*) | 
					
						
							|  |  |  |     *(.irom1.text) /* catch stray ICACHE_RODATA_ATTR */ | 
					
						
							|  |  |  |     *(.gnu.linkonce.r.*) | 
					
						
							|  |  |  |     *(.rodata1) | 
					
						
							|  |  |  |     __XT_EXCEPTION_TABLE_ = ABSOLUTE(.); | 
					
						
							|  |  |  |     *(.xt_except_table) | 
					
						
							| 
									
										
										
										
											2017-09-12 09:40:52 +03:00
										 |  |  |     *(.gcc_except_table .gcc_except_table.*) | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  |     *(.gnu.linkonce.e.*) | 
					
						
							|  |  |  |     *(.gnu.version_r) | 
					
						
							|  |  |  |     . = (. + 3) & ~ 3; | 
					
						
							| 
									
										
										
										
											2017-09-12 09:40:52 +03:00
										 |  |  |     __eh_frame = ABSOLUTE(.); | 
					
						
							|  |  |  |     KEEP(*(.eh_frame)) | 
					
						
							|  |  |  |     . = (. + 7) & ~ 3; | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  |     /*  C++ constructor and destructor tables, properly ordered:  */ | 
					
						
							|  |  |  |     __init_array_start = ABSOLUTE(.); | 
					
						
							|  |  |  |     KEEP (*crtbegin.o(.ctors)) | 
					
						
							|  |  |  |     KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) | 
					
						
							|  |  |  |     KEEP (*(SORT(.ctors.*))) | 
					
						
							|  |  |  |     KEEP (*(.ctors)) | 
					
						
							|  |  |  |     __init_array_end = ABSOLUTE(.); | 
					
						
							|  |  |  |     KEEP (*crtbegin.o(.dtors)) | 
					
						
							|  |  |  |     KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) | 
					
						
							|  |  |  |     KEEP (*(SORT(.dtors.*))) | 
					
						
							|  |  |  |     KEEP (*(.dtors)) | 
					
						
							|  |  |  |     /*  C++ exception handlers table:  */ | 
					
						
							|  |  |  |     __XT_EXCEPTION_DESCS_ = ABSOLUTE(.); | 
					
						
							|  |  |  |     *(.xt_except_desc) | 
					
						
							|  |  |  |     *(.gnu.linkonce.h.*) | 
					
						
							|  |  |  |     __XT_EXCEPTION_DESCS_END__ = ABSOLUTE(.); | 
					
						
							|  |  |  |     *(.xt_except_desc_end) | 
					
						
							|  |  |  |     *(.dynamic) | 
					
						
							|  |  |  |     *(.gnu.version_d) | 
					
						
							|  |  |  |     _rodata_end = ABSOLUTE(.); | 
					
						
							|  |  |  |     /* Literals are also RO data. */ | 
					
						
							|  |  |  |     _lit4_start = ABSOLUTE(.); | 
					
						
							|  |  |  |     *(*.lit4) | 
					
						
							|  |  |  |     *(.lit4.*) | 
					
						
							|  |  |  |     *(.gnu.linkonce.lit4.*) | 
					
						
							|  |  |  |     _lit4_end = ABSOLUTE(.); | 
					
						
							|  |  |  |     . = ALIGN(4); | 
					
						
							|  |  |  |   } >drom0_0_seg | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   .flash.text : | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     _stext = .; | 
					
						
							|  |  |  |     _text_start = ABSOLUTE(.); | 
					
						
							|  |  |  |     *(.literal .text .literal.* .text.* .stub .gnu.warning .gnu.linkonce.literal.* .gnu.linkonce.t.*.literal .gnu.linkonce.t.*) | 
					
						
							|  |  |  |     *(.irom0.text) /* catch stray ICACHE_RODATA_ATTR */ | 
					
						
							|  |  |  |     *(.fini.literal) | 
					
						
							|  |  |  |     *(.fini) | 
					
						
							|  |  |  |     *(.gnu.version) | 
					
						
							|  |  |  |     _text_end = ABSOLUTE(.); | 
					
						
							|  |  |  |     _etext = .; | 
					
						
							| 
									
										
										
										
											2017-04-04 01:26:23 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  |     /* Similar to _iram_start, this symbol goes here so it is | 
					
						
							|  |  |  |        resolved by addr2line in preference to the first symbol in | 
					
						
							|  |  |  |        the flash.text segment. | 
					
						
							|  |  |  |     */ | 
					
						
							|  |  |  |     _flash_cache_start = ABSOLUTE(0); | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  |   } >iram0_2_seg | 
					
						
							|  |  |  | } |