| 
									
										
										
										
											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); | 
					
						
							| 
									
										
										
										
											2019-04-12 15:43:53 +02:00
										 |  |  |     *(.rtc.literal .rtc.text) | 
					
						
							| 
									
										
										
										
											2018-09-21 08:39:36 +02:00
										 |  |  |     *rtc_wake_stub*.*(.literal .text .literal.* .text.*) | 
					
						
							| 
									
										
										
										
											2018-11-26 23:22:11 +01:00
										 |  |  |     _rtc_text_end = ABSOLUTE(.); | 
					
						
							| 
									
										
										
										
											2018-06-27 09:01:06 +02:00
										 |  |  |   } > rtc_iram_seg | 
					
						
							| 
									
										
										
										
											2018-11-26 23:22:11 +01:00
										 |  |  |    | 
					
						
							|  |  |  |   /* | 
					
						
							|  |  |  |     This section is required to skip rtc.text area because rtc_iram_seg and  | 
					
						
							|  |  |  |     rtc_data_seg are reflect the same address space on different buses. | 
					
						
							|  |  |  |   */ | 
					
						
							|  |  |  |   .rtc.dummy : | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     _rtc_dummy_start = ABSOLUTE(.); | 
					
						
							|  |  |  |     _rtc_fast_start = ABSOLUTE(.); | 
					
						
							|  |  |  |     . = SIZEOF(.rtc.text); | 
					
						
							|  |  |  |     _rtc_dummy_end = ABSOLUTE(.); | 
					
						
							|  |  |  |   } > rtc_data_seg | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   /* This section located in RTC FAST Memory area.  | 
					
						
							|  |  |  |      It holds data marked with RTC_FAST_ATTR attribute.  | 
					
						
							|  |  |  |      See the file "esp_attr.h" for more information. | 
					
						
							|  |  |  |   */ | 
					
						
							|  |  |  |   .rtc.force_fast : | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     . = ALIGN(4); | 
					
						
							|  |  |  |     _rtc_force_fast_start = ABSOLUTE(.); | 
					
						
							|  |  |  |     *(.rtc.force_fast .rtc.force_fast.*) | 
					
						
							|  |  |  |     . = ALIGN(4) ; | 
					
						
							|  |  |  |     _rtc_force_fast_end = ABSOLUTE(.); | 
					
						
							|  |  |  |   } > rtc_data_seg | 
					
						
							| 
									
										
										
										
											2016-11-13 17:23:44 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-11-26 23:22:11 +01:00
										 |  |  |   /* RTC data section holds RTC wake stub | 
					
						
							| 
									
										
										
										
											2016-11-13 17:23:44 +02:00
										 |  |  |      data/rodata, including from any source file | 
					
						
							| 
									
										
										
										
											2018-11-26 23:22:11 +01:00
										 |  |  |      named rtc_wake_stub*.c and the data marked with | 
					
						
							|  |  |  |      RTC_DATA_ATTR, RTC_RODATA_ATTR attributes. | 
					
						
							|  |  |  |      The memory location of the data is dependent on  | 
					
						
							|  |  |  |      CONFIG_ESP32_RTCDATA_IN_FAST_MEM option. | 
					
						
							| 
									
										
										
										
											2016-11-13 17:23:44 +02:00
										 |  |  |   */ | 
					
						
							|  |  |  |   .rtc.data : | 
					
						
							|  |  |  |   { | 
					
						
							| 
									
										
										
										
											2017-01-16 16:03:13 +02:00
										 |  |  |     _rtc_data_start = ABSOLUTE(.); | 
					
						
							| 
									
										
										
										
											2019-04-12 15:43:53 +02:00
										 |  |  |     *(.rtc.data) | 
					
						
							|  |  |  |     *(.rtc.rodata) | 
					
						
							| 
									
										
										
										
											2018-09-21 08:39:36 +02:00
										 |  |  |     *rtc_wake_stub*.*(.data .rodata .data.* .rodata.* .bss .bss.*) | 
					
						
							| 
									
										
										
										
											2017-01-16 16:03:13 +02:00
										 |  |  |     _rtc_data_end = ABSOLUTE(.); | 
					
						
							| 
									
										
										
										
											2018-11-26 23:22:11 +01:00
										 |  |  |   } > rtc_data_location | 
					
						
							| 
									
										
										
										
											2016-11-13 17:23:44 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |   /* RTC bss, from any source file named rtc_wake_stub*.c */ | 
					
						
							|  |  |  |   .rtc.bss (NOLOAD) : | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     _rtc_bss_start = ABSOLUTE(.); | 
					
						
							| 
									
										
										
										
											2018-09-21 08:39:36 +02:00
										 |  |  |     *rtc_wake_stub*.*(.bss .bss.*) | 
					
						
							|  |  |  |     *rtc_wake_stub*.*(COMMON) | 
					
						
							| 
									
										
										
										
											2019-04-12 15:43:53 +02:00
										 |  |  |     *(.rtc.bss) | 
					
						
							| 
									
										
										
										
											2016-11-13 17:23:44 +02:00
										 |  |  |     _rtc_bss_end = ABSOLUTE(.); | 
					
						
							| 
									
										
										
										
											2018-11-26 23:22:11 +01:00
										 |  |  |   } > rtc_data_location | 
					
						
							| 
									
										
										
										
											2016-11-13 17:23:44 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-06-27 09:01:06 +02:00
										 |  |  |   /* This section holds data that should not be initialized at power up  | 
					
						
							| 
									
										
										
										
											2018-11-26 23:22:11 +01:00
										 |  |  |      and will be retained during deep sleep. | 
					
						
							|  |  |  |      User data marked with RTC_NOINIT_ATTR will be placed | 
					
						
							|  |  |  |      into this section. See the file "esp_attr.h" for more information.  | 
					
						
							|  |  |  | 	 The memory location of the data is dependent on  | 
					
						
							|  |  |  |      CONFIG_ESP32_RTCDATA_IN_FAST_MEM option. | 
					
						
							| 
									
										
										
										
											2018-06-27 09:01:06 +02:00
										 |  |  |   */ | 
					
						
							|  |  |  |   .rtc_noinit (NOLOAD): | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     . = ALIGN(4); | 
					
						
							|  |  |  |     _rtc_noinit_start = ABSOLUTE(.); | 
					
						
							|  |  |  |     *(.rtc_noinit .rtc_noinit.*) | 
					
						
							|  |  |  |     . = ALIGN(4) ; | 
					
						
							|  |  |  |     _rtc_noinit_end = ABSOLUTE(.); | 
					
						
							| 
									
										
										
										
											2018-11-26 23:22:11 +01:00
										 |  |  |   } > rtc_data_location | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   /* This section located in RTC SLOW Memory area.  | 
					
						
							|  |  |  |      It holds data marked with RTC_SLOW_ATTR attribute.  | 
					
						
							|  |  |  |      See the file "esp_attr.h" for more information. | 
					
						
							|  |  |  |   */ | 
					
						
							|  |  |  |   .rtc.force_slow : | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     . = ALIGN(4); | 
					
						
							|  |  |  |     _rtc_force_slow_start = ABSOLUTE(.); | 
					
						
							|  |  |  |     *(.rtc.force_slow .rtc.force_slow.*) | 
					
						
							|  |  |  |     . = ALIGN(4) ; | 
					
						
							|  |  |  |     _rtc_force_slow_end = ABSOLUTE(.); | 
					
						
							| 
									
										
										
										
											2018-06-27 09:01:06 +02:00
										 |  |  |   } > rtc_slow_seg | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-11-26 23:22:11 +01:00
										 |  |  |   /* Get size of rtc slow data based on rtc_data_location alias */ | 
					
						
							|  |  |  |   _rtc_slow_length = (ORIGIN(rtc_slow_seg) == ORIGIN(rtc_data_location))  | 
					
						
							|  |  |  |                         ? (_rtc_force_slow_end - _rtc_data_start)  | 
					
						
							|  |  |  |                         : (_rtc_force_slow_end - _rtc_force_slow_start); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   _rtc_fast_length = (ORIGIN(rtc_slow_seg) == ORIGIN(rtc_data_location))  | 
					
						
							|  |  |  |                         ? (_rtc_force_fast_end - _rtc_fast_start)  | 
					
						
							|  |  |  |                         : (_rtc_noinit_end - _rtc_fast_start); | 
					
						
							|  |  |  |    | 
					
						
							|  |  |  |   ASSERT((_rtc_slow_length <= LENGTH(rtc_slow_seg)), | 
					
						
							|  |  |  |           "RTC_SLOW segment data does not fit.") | 
					
						
							|  |  |  |            | 
					
						
							|  |  |  |   ASSERT((_rtc_fast_length <= LENGTH(rtc_data_seg)), | 
					
						
							|  |  |  |           "RTC_FAST segment data does not fit.") | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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
										 |  |  |   { | 
					
						
							| 
									
										
										
										
											2018-09-21 08:39:36 +02:00
										 |  |  |     _iram_start = ABSOLUTE(.); | 
					
						
							| 
									
										
										
										
											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(.); | 
					
						
							| 
									
										
										
										
											2018-11-26 23:22:11 +01:00
										 |  |  |   } > iram0_0_seg | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  |   .iram0.text : | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     /* Code marked as runnning out of IRAM */ | 
					
						
							|  |  |  |     _iram_text_start = ABSOLUTE(.); | 
					
						
							| 
									
										
										
										
											2019-04-12 15:43:53 +02:00
										 |  |  |     *(.iram1 .iram1.*) | 
					
						
							|  |  |  |     *libesp_ringbuf.a:(.literal .text .literal.* .text.*) | 
					
						
							|  |  |  |     *libfreertos.a:(.literal .text .literal.* .text.*) | 
					
						
							|  |  |  |     *libheap.a:multi_heap.*(.literal .text .literal.* .text.*) | 
					
						
							|  |  |  |     *libheap.a:multi_heap_poisoning.*(.literal .text .literal.* .text.*) | 
					
						
							|  |  |  |     *libesp32.a:panic.*(.literal .text .literal.* .text.*) | 
					
						
							|  |  |  |     *libesp32.a:core_dump.*(.literal .text .literal.* .text.*) | 
					
						
							|  |  |  |     INCLUDE wifi_iram.ld | 
					
						
							|  |  |  |     *libapp_trace.a:(.literal .text .literal.* .text.*) | 
					
						
							|  |  |  |     *libxtensa-debug-module.a:eri.*(.literal .text .literal.* .text.*) | 
					
						
							|  |  |  |     *librtc.a:(.literal .text .literal.* .text.*) | 
					
						
							|  |  |  |     *libsoc.a:rtc_*.*(.literal .text .literal.* .text.*) | 
					
						
							|  |  |  |     *libsoc.a:cpu_util.*(.literal .text .literal.* .text.*) | 
					
						
							|  |  |  |     *libhal.a:(.literal .text .literal.* .text.*) | 
					
						
							|  |  |  |     *libgcc.a:lib2funcs.*(.literal .text .literal.* .text.*) | 
					
						
							|  |  |  |     *libspi_flash.a:spi_flash_rom_patch.*(.literal .text .literal.* .text.*) | 
					
						
							|  |  |  |     *libgcov.a:(.literal .text .literal.* .text.*) | 
					
						
							|  |  |  |     INCLUDE esp32.spiram.rom-functions-iram.ld | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  |     _iram_text_end = ABSOLUTE(.); | 
					
						
							| 
									
										
										
										
											2018-09-21 08:39:36 +02:00
										 |  |  |     _iram_end = ABSOLUTE(.); | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  |   } > iram0_0_seg | 
					
						
							| 
									
										
										
										
											2018-09-21 08:39:36 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-11-26 23:22:11 +01:00
										 |  |  |   ASSERT(((_iram_text_end - ORIGIN(iram0_0_seg)) <= LENGTH(iram0_0_seg)), | 
					
						
							|  |  |  |           "IRAM0 segment data does not fit.") | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-16 16:03:13 +02:00
										 |  |  |   .dram0.data : | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     _data_start = ABSOLUTE(.); | 
					
						
							| 
									
										
										
										
											2018-09-21 08:39:36 +02:00
										 |  |  |     _bt_data_start = ABSOLUTE(.); | 
					
						
							|  |  |  |     *libbt.a:(.data .data.*) | 
					
						
							|  |  |  |     . = ALIGN (4); | 
					
						
							|  |  |  |     _bt_data_end = ABSOLUTE(.); | 
					
						
							|  |  |  |     _btdm_data_start = ABSOLUTE(.); | 
					
						
							|  |  |  |     *libbtdm_app.a:(.data .data.*) | 
					
						
							|  |  |  |     . = ALIGN (4); | 
					
						
							|  |  |  |     _btdm_data_end = ABSOLUTE(.); | 
					
						
							| 
									
										
										
										
											2019-04-12 15:43:53 +02:00
										 |  |  |     *(.data) | 
					
						
							|  |  |  |     *(.data.*) | 
					
						
							| 
									
										
										
										
											2017-08-01 08:51:04 +03:00
										 |  |  |     *(.gnu.linkonce.d.*) | 
					
						
							|  |  |  |     *(.data1) | 
					
						
							|  |  |  |     *(.sdata) | 
					
						
							|  |  |  |     *(.sdata.*) | 
					
						
							|  |  |  |     *(.gnu.linkonce.s.*) | 
					
						
							|  |  |  |     *(.sdata2) | 
					
						
							|  |  |  |     *(.sdata2.*) | 
					
						
							|  |  |  |     *(.gnu.linkonce.s2.*) | 
					
						
							|  |  |  |     *(.jcr) | 
					
						
							| 
									
										
										
										
											2019-04-12 15:43:53 +02:00
										 |  |  |     *(.dram1 .dram1.*) | 
					
						
							|  |  |  |     *libesp32.a:panic.*(.rodata .rodata.*) | 
					
						
							|  |  |  |     *libphy.a:(.rodata .rodata.*) | 
					
						
							|  |  |  |     *libsoc.a:rtc_clk.*(.rodata .rodata.*) | 
					
						
							|  |  |  |     *libapp_trace.a:(.rodata .rodata.*) | 
					
						
							|  |  |  |     *libgcov.a:(.rodata .rodata.*) | 
					
						
							|  |  |  |     *libheap.a:multi_heap.*(.rodata .rodata.*) | 
					
						
							|  |  |  |     *libheap.a:multi_heap_poisoning.*(.rodata .rodata.*) | 
					
						
							|  |  |  |     INCLUDE esp32.spiram.rom-functions-dram.ld | 
					
						
							| 
									
										
										
										
											2017-01-16 16:03:13 +02:00
										 |  |  |     _data_end = ABSOLUTE(.); | 
					
						
							|  |  |  |     . = ALIGN(4); | 
					
						
							| 
									
										
										
										
											2018-06-27 09:01:06 +02:00
										 |  |  |   } > dram0_0_seg | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   /*This section holds data that should not be initialized at power up. | 
					
						
							|  |  |  |     The section located in Internal SRAM memory region. The macro _NOINIT | 
					
						
							|  |  |  |     can be used as attribute to place data into this section. | 
					
						
							|  |  |  |     See the esp_attr.h file for more information. | 
					
						
							|  |  |  |   */ | 
					
						
							|  |  |  |   .noinit (NOLOAD): | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     . = ALIGN(4); | 
					
						
							|  |  |  |     _noinit_start = ABSOLUTE(.); | 
					
						
							|  |  |  |     *(.noinit .noinit.*)  | 
					
						
							|  |  |  |     . = ALIGN(4) ; | 
					
						
							|  |  |  |     _noinit_end = ABSOLUTE(.); | 
					
						
							|  |  |  |   } > dram0_0_seg | 
					
						
							| 
									
										
										
										
											2017-01-16 16:03:13 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  |   /* Shared RAM */ | 
					
						
							|  |  |  |   .dram0.bss (NOLOAD) : | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     . = ALIGN (8); | 
					
						
							|  |  |  |     _bss_start = ABSOLUTE(.); | 
					
						
							| 
									
										
										
										
											2018-11-26 23:22:11 +01:00
										 |  |  |     *(.ext_ram.bss*) | 
					
						
							| 
									
										
										
										
											2018-09-21 08:39:36 +02:00
										 |  |  |     _bt_bss_start = ABSOLUTE(.); | 
					
						
							|  |  |  |     *libbt.a:(.bss .bss.* COMMON) | 
					
						
							|  |  |  |     . = ALIGN (4); | 
					
						
							|  |  |  |     _bt_bss_end = ABSOLUTE(.); | 
					
						
							|  |  |  |     _btdm_bss_start = ABSOLUTE(.); | 
					
						
							|  |  |  |     *libbtdm_app.a:(.bss .bss.* COMMON) | 
					
						
							|  |  |  |     . = ALIGN (4); | 
					
						
							|  |  |  |     _btdm_bss_end = ABSOLUTE(.); | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  |     *(.dynsbss) | 
					
						
							|  |  |  |     *(.sbss) | 
					
						
							|  |  |  |     *(.sbss.*) | 
					
						
							|  |  |  |     *(.gnu.linkonce.sb.*) | 
					
						
							|  |  |  |     *(.scommon) | 
					
						
							|  |  |  |     *(.sbss2) | 
					
						
							|  |  |  |     *(.sbss2.*) | 
					
						
							|  |  |  |     *(.gnu.linkonce.sb2.*) | 
					
						
							|  |  |  |     *(.dynbss) | 
					
						
							| 
									
										
										
										
											2019-04-12 15:43:53 +02:00
										 |  |  |     *(.bss) | 
					
						
							|  |  |  |     *(.bss.*) | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  |     *(.share.mem) | 
					
						
							|  |  |  |     *(.gnu.linkonce.b.*) | 
					
						
							| 
									
										
										
										
											2019-04-12 15:43:53 +02:00
										 |  |  |     *(COMMON) | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  |     . = ALIGN (8); | 
					
						
							|  |  |  |     _bss_end = ABSOLUTE(.); | 
					
						
							| 
									
										
										
										
											2018-06-27 09:01:06 +02:00
										 |  |  |     /* The heap starts right after end of this section */ | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  |     _heap_start = ABSOLUTE(.); | 
					
						
							| 
									
										
										
										
											2018-06-27 09:01:06 +02:00
										 |  |  |   } > dram0_0_seg | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-11-26 23:22:11 +01:00
										 |  |  |   ASSERT(((_bss_end - ORIGIN(dram0_0_seg)) <= LENGTH(dram0_0_seg)), | 
					
						
							|  |  |  |           "DRAM segment data does not fit.") | 
					
						
							|  |  |  |            | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  |   .flash.rodata : | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     _rodata_start = ABSOLUTE(.); | 
					
						
							| 
									
										
										
										
											2019-04-12 15:43:53 +02:00
										 |  |  |     *(.rodata) | 
					
						
							|  |  |  |     *(.rodata.*) | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  |     *(.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(.); | 
					
						
							| 
									
										
										
										
											2018-09-21 08:39:36 +02:00
										 |  |  |     KEEP (*crtbegin.*(.ctors)) | 
					
						
							|  |  |  |     KEEP (*(EXCLUDE_FILE (*crtend.*) .ctors)) | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  |     KEEP (*(SORT(.ctors.*))) | 
					
						
							|  |  |  |     KEEP (*(.ctors)) | 
					
						
							|  |  |  |     __init_array_end = ABSOLUTE(.); | 
					
						
							| 
									
										
										
										
											2018-09-21 08:39:36 +02:00
										 |  |  |     KEEP (*crtbegin.*(.dtors)) | 
					
						
							|  |  |  |     KEEP (*(EXCLUDE_FILE (*crtend.*) .dtors)) | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  |     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) | 
					
						
							| 
									
										
										
										
											2018-09-21 08:39:36 +02:00
										 |  |  |     /* Addresses of memory regions reserved via | 
					
						
							|  |  |  |        SOC_RESERVE_MEMORY_REGION() */ | 
					
						
							|  |  |  |     soc_reserved_memory_region_start = ABSOLUTE(.); | 
					
						
							|  |  |  |     KEEP (*(.reserved_memory_address)) | 
					
						
							|  |  |  |     soc_reserved_memory_region_end = ABSOLUTE(.); | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  |     _rodata_end = ABSOLUTE(.); | 
					
						
							|  |  |  |     /* Literals are also RO data. */ | 
					
						
							|  |  |  |     _lit4_start = ABSOLUTE(.); | 
					
						
							|  |  |  |     *(*.lit4) | 
					
						
							|  |  |  |     *(.lit4.*) | 
					
						
							|  |  |  |     *(.gnu.linkonce.lit4.*) | 
					
						
							|  |  |  |     _lit4_end = ABSOLUTE(.); | 
					
						
							|  |  |  |     . = ALIGN(4); | 
					
						
							| 
									
										
										
										
											2018-04-07 09:45:18 +03:00
										 |  |  |     _thread_local_start = ABSOLUTE(.); | 
					
						
							|  |  |  |     *(.tdata) | 
					
						
							|  |  |  |     *(.tdata.*) | 
					
						
							|  |  |  |     *(.tbss) | 
					
						
							|  |  |  |     *(.tbss.*) | 
					
						
							|  |  |  |     _thread_local_end = ABSOLUTE(.); | 
					
						
							|  |  |  |     . = ALIGN(4); | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  |   } >drom0_0_seg | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   .flash.text : | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     _stext = .; | 
					
						
							|  |  |  |     _text_start = ABSOLUTE(.); | 
					
						
							| 
									
										
										
										
											2019-04-12 15:43:53 +02:00
										 |  |  |     *(.literal .text .literal.* .text.* .stub .gnu.warning .gnu.linkonce.literal.* .gnu.linkonce.t.*.literal .gnu.linkonce.t.*) | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  |     *(.irom0.text) /* catch stray ICACHE_RODATA_ATTR */ | 
					
						
							| 
									
										
										
										
											2019-04-12 15:43:53 +02:00
										 |  |  |     *(.wifi0iram .wifi0iram.*) /* catch stray WIFI_IRAM_ATTR */ | 
					
						
							| 
									
										
										
										
											2016-10-06 14:21:30 +03:00
										 |  |  |     *(.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 | 
					
						
							|  |  |  | } |