diff --git a/FluidNC/ld/esp32/README.md b/FluidNC/ld/esp32/README.md index a87da8a6d..fb1166842 100644 --- a/FluidNC/ld/esp32/README.md +++ b/FluidNC/ld/esp32/README.md @@ -34,20 +34,17 @@ capabilities to let us use a modified script. ### How It Normally Works PlatformIO specifies the list of linker scripts via the Python script -~/.platformio/packages/framework-arduinoespressif32/tools/platformio-build.py . -The files are esp32.project.ld, esp32.rom.ld, esp32.peripherals.ld, -esp32.rom.libgcc.ld, and esp32.rom.spiram_incompatible_fns.ld . -The file that we need to change is esp32.project.ld ; the others can -be used as-is. +~/.platformio/packages/framework-arduinoespressif32/tools/platformio-build-esp32.py . +The file we care about is sections.ld ; the others can be used as-is. The stock linker scripts are found in the directory -.platformio/packages/framework-arduinoespressif32/tools/sdk/ld . That +.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/ld . That directory is specified in platformio-build.py via the environment variable LIBPATH . -### Changes to esp32.project.ld +### Changes to sections.ld -First, we need to modify esp32.project.ld . We copy that file into +First, we need to modify sections.ld . We copy that file into the FluidNC tree at ./FluidNC/ld/esp32/ (this directory). We then add into that file the line @@ -62,7 +59,7 @@ maintenance. ### Making PlatformIO Use the Modified File -To make PlatformIO use the modified esp32.project.ld instead +To make PlatformIO use the modified sections.ld instead of the stock one, we use PlatformIO's "advanced scripting" feature. In the platformio.ini [env] section, we add this line diff --git a/FluidNC/ld/esp32/esp32.project.ld b/FluidNC/ld/esp32/esp32.project.ld deleted file mode 100644 index 4c49aff13..000000000 --- a/FluidNC/ld/esp32/esp32.project.ld +++ /dev/null @@ -1,620 +0,0 @@ -/* Automatically generated file; DO NOT EDIT */ -/* Espressif IoT Development Framework Linker Script */ -/* Generated from: /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/esp32/ld/esp32.project.ld.in */ - -/* Default entry point: */ -ENTRY(call_start_cpu0); - -SECTIONS -{ - /* 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.text.*) - - *rtc_wake_stub*.*(.literal .text .literal.* .text.*) - _rtc_text_end = ABSOLUTE(.); - } > rtc_iram_seg - - /* - 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 - - /* RTC data section holds RTC wake stub - data/rodata, including from any source file - 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. - */ - .rtc.data : - { - _rtc_data_start = ABSOLUTE(.); - - *( .rtc.data .rtc.data.* .rtc.rodata .rtc.rodata.*) - - *rtc_wake_stub*.*(.data .rodata .data.* .rodata.* .bss .bss.*) - _rtc_data_end = ABSOLUTE(.); - } > rtc_data_location - - /* RTC bss, from any source file named rtc_wake_stub*.c */ - .rtc.bss (NOLOAD) : - { - _rtc_bss_start = ABSOLUTE(.); - *rtc_wake_stub*.*(.bss .bss.*) - *rtc_wake_stub*.*(COMMON) - - *( .rtc.bss) - - _rtc_bss_end = ABSOLUTE(.); - } > rtc_data_location - - /* This section holds data that should not be initialized at power up - 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. - */ - .rtc_noinit (NOLOAD): - { - . = ALIGN(4); - _rtc_noinit_start = ABSOLUTE(.); - *(.rtc_noinit .rtc_noinit.*) - . = ALIGN(4) ; - _rtc_noinit_end = ABSOLUTE(.); - } > 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(.); - } > rtc_slow_seg - - /* 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.") - - /* Send .iram0 code to iram */ - .iram0.vectors : - { - _iram_start = ABSOLUTE(.); - /* 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(.); - } > iram0_0_seg - - .iram0.text : - { - /* Code marked as runnning out of IRAM */ - _iram_text_start = ABSOLUTE(.); - - *( .iram1 .iram1.*) - *libapp_trace.a:( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:creat.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:isatty.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-abs.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-asctime.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-asctime_r.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-atoi.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-atol.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-bzero.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-close.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-creat.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-ctime.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-ctime_r.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-ctype_.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-div.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-environ.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-envlock.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-fclose.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-fflush.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-findfp.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-fputwc.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-fvwrite.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-fwalk.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-getenv_r.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-gettzinfo.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-gmtime.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-gmtime_r.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-impure.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-isalnum.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-isalpha.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-isascii.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-isblank.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-iscntrl.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-isdigit.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-isgraph.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-islower.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-isprint.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-ispunct.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-isspace.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-isupper.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-itoa.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-labs.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-lcltime.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-lcltime_r.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-ldiv.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-longjmp.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-makebuf.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-memccpy.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-memchr.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-memcmp.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-memcpy.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-memmove.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-memrchr.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-memset.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-mktime.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-month_lengths.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-open.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-quorem.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-raise.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-rand.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-rand_r.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-read.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-refill.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-rshift.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-s_fpclassify.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-sbrk.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-sccl.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-setjmp.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-sf_nan.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-srand.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-stdio.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-strcasecmp.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-strcasestr.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-strcat.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-strchr.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-strcmp.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-strcoll.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-strcpy.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-strcspn.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-strdup.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-strdup_r.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-strftime.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-strlcat.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-strlcpy.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-strlen.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-strlwr.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-strncasecmp.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-strncat.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-strncmp.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-strncpy.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-strndup.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-strndup_r.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-strnlen.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-strptime.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-strrchr.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-strsep.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-strspn.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-strstr.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-strtok_r.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-strtol.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-strtoul.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-strupr.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-sysclose.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-sysopen.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-sysread.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-syssbrk.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-system.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-systimes.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-syswrite.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-time.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-timelocal.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-toascii.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-tolower.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-toupper.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-tzcalc_limits.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-tzlock.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-tzset.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-tzset_r.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-tzvars.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-ungetc.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-utoa.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-wbuf.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-wcrtomb.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-wctomb_r.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lib_a-wsetup.*( .literal .literal.* .text .text.*) - *libc-psram-workaround.a:lock.*( .literal .literal.* .text .text.*) - *libesp32.a:panic.*( .literal .literal.* .text .text.*) - *libesp_ringbuf.a:( .literal .literal.* .text .text.*) - *libespcoredump.a:core_dump_common.*( .literal .literal.* .text .text.*) - *libespcoredump.a:core_dump_flash.*( .literal .literal.* .text .text.*) - *libespcoredump.a:core_dump_port.*( .literal .literal.* .text .text.*) - *libespcoredump.a:core_dump_uart.*( .literal .literal.* .text .text.*) - *libfreertos.a:( .literal .literal.* .text .text.*) - *libgcc.a:lib2funcs.*( .literal .literal.* .text .text.*) - *libgcov.a:( .literal .literal.* .text .text.*) - *libhal.a:( .literal .literal.* .text .text.*) - *libheap.a:multi_heap.*( .literal .literal.* .text .text.*) - *libheap.a:multi_heap_poisoning.*( .literal .literal.* .text .text.*) - *librtc.a:( .literal .literal.* .text .text.*) - *libsoc.a:cpu_util.*( .literal .literal.* .text .text.*) - *libsoc.a:rtc_clk.*( .literal .literal.* .text .text.*) - *libsoc.a:rtc_clk_init.*( .literal .literal.* .text .text.*) - *libsoc.a:rtc_init.*( .literal .literal.* .text .text.*) - *libsoc.a:rtc_periph.*( .literal .literal.* .text .text.*) - *libsoc.a:rtc_pm.*( .literal .literal.* .text .text.*) - *libsoc.a:rtc_sleep.*( .literal .literal.* .text .text.*) - *libsoc.a:rtc_time.*( .literal .literal.* .text .text.*) - *libsoc.a:rtc_wdt.*( .literal .literal.* .text .text.*) - *libspi_flash.a:spi_flash_rom_patch.*( .literal .literal.* .text .text.*) - *libxtensa-debug-module.a:eri.*( .literal .literal.* .text .text.*) - - _iram_text_end = ABSOLUTE(.); - _iram_end = ABSOLUTE(.); - } > iram0_0_seg - - ASSERT(((_iram_text_end - ORIGIN(iram0_0_seg)) <= LENGTH(iram0_0_seg)), - "IRAM0 segment data does not fit.") - - .dram0.data : - { - _data_start = ABSOLUTE(.); - _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(.); - *(.gnu.linkonce.d.*) - *(.data1) - *(.sdata) - *(.sdata.*) - *(.gnu.linkonce.s.*) - *(.sdata2) - *(.sdata2.*) - *(.gnu.linkonce.s2.*) - *(.jcr) - - *( .data .data.* .dram1 .dram1.*) - *libapp_trace.a:( .rodata .rodata.*) - *libc-psram-workaround.a:creat.*( .rodata .rodata.*) - *libc-psram-workaround.a:isatty.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-abs.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-asctime.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-asctime_r.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-atoi.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-atol.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-bzero.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-close.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-creat.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-ctime.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-ctime_r.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-ctype_.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-div.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-environ.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-envlock.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-fclose.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-fflush.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-findfp.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-fputwc.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-fvwrite.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-fwalk.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-getenv_r.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-gettzinfo.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-gmtime.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-gmtime_r.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-impure.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-isalnum.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-isalpha.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-isascii.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-isblank.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-iscntrl.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-isdigit.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-isgraph.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-islower.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-isprint.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-ispunct.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-isspace.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-isupper.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-itoa.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-labs.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-lcltime.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-lcltime_r.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-ldiv.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-longjmp.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-makebuf.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-memccpy.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-memchr.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-memcmp.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-memcpy.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-memmove.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-memrchr.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-memset.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-mktime.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-month_lengths.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-open.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-quorem.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-raise.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-rand.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-rand_r.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-read.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-refill.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-rshift.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-s_fpclassify.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-sbrk.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-sccl.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-setjmp.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-sf_nan.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-srand.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-stdio.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-strcasecmp.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-strcasestr.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-strcat.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-strchr.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-strcmp.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-strcoll.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-strcpy.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-strcspn.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-strdup.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-strdup_r.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-strftime.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-strlcat.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-strlcpy.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-strlen.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-strlwr.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-strncasecmp.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-strncat.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-strncmp.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-strncpy.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-strndup.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-strndup_r.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-strnlen.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-strptime.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-strrchr.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-strsep.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-strspn.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-strstr.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-strtok_r.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-strtol.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-strtoul.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-strupr.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-sysclose.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-sysopen.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-sysread.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-syssbrk.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-system.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-systimes.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-syswrite.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-time.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-timelocal.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-toascii.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-tolower.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-toupper.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-tzcalc_limits.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-tzlock.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-tzset.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-tzset_r.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-tzvars.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-ungetc.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-utoa.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-wbuf.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-wcrtomb.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-wctomb_r.*( .rodata .rodata.*) - *libc-psram-workaround.a:lib_a-wsetup.*( .rodata .rodata.*) - *libc-psram-workaround.a:lock.*( .rodata .rodata.*) - *libesp32.a:panic.*( .rodata .rodata.*) - *libgcov.a:( .rodata .rodata.*) - *libheap.a:multi_heap.*( .rodata .rodata.*) - *libheap.a:multi_heap_poisoning.*( .rodata .rodata.*) - *libphy.a:( .rodata .rodata.*) - *libsoc.a:rtc_clk.*( .rodata .rodata.*) - -INCLUDE vtable_in_dram.ld - - _data_end = ABSOLUTE(.); - . = ALIGN(4); - } > 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 - - /* Shared RAM */ - .dram0.bss (NOLOAD) : - { - . = ALIGN (8); - _bss_start = ABSOLUTE(.); - *(.ext_ram.bss*) - _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(.); - - *( .bss .bss.* COMMON) - - *(.dynsbss) - *(.sbss) - *(.sbss.*) - *(.gnu.linkonce.sb.*) - *(.scommon) - *(.sbss2) - *(.sbss2.*) - *(.gnu.linkonce.sb2.*) - *(.dynbss) - *(.share.mem) - *(.gnu.linkonce.b.*) - - . = ALIGN (8); - _bss_end = ABSOLUTE(.); - /* The heap starts right after end of this section */ - _heap_start = ABSOLUTE(.); - } > dram0_0_seg - - ASSERT(((_bss_end - ORIGIN(dram0_0_seg)) <= LENGTH(dram0_0_seg)), - "DRAM segment data does not fit.") - - .flash.rodata : - { - _rodata_start = ABSOLUTE(.); - - *(.rodata_desc .rodata_desc.*) /* Should be the first. App version info. DO NOT PUT ANYTHING BEFORE IT! */ - *(.rodata_custom_desc .rodata_custom_desc.*) /* Should be the second. Custom app version info. DO NOT PUT ANYTHING BEFORE IT! */ - - *(EXCLUDE_FILE(*libapp_trace.a *libesp32.a:panic.* *libphy.a *libgcov.a *libheap.a:multi_heap_poisoning.* *libheap.a:multi_heap.* *libc-psram-workaround.a:lib_a-rshift.* *libc-psram-workaround.a:lib_a-lcltime_r.* *libc-psram-workaround.a:lib_a-fvwrite.* *libc-psram-workaround.a:lib_a-itoa.* *libc-psram-workaround.a:lib_a-abs.* *libc-psram-workaround.a:lock.* *libc-psram-workaround.a:lib_a-strtok_r.* *libc-psram-workaround.a:lib_a-iscntrl.* *libc-psram-workaround.a:lib_a-lcltime.* *libc-psram-workaround.a:lib_a-ldiv.* *libc-psram-workaround.a:lib_a-isprint.* *libc-psram-workaround.a:lib_a-tzset.* *libc-psram-workaround.a:lib_a-fwalk.* *libc-psram-workaround.a:lib_a-fflush.* *libc-psram-workaround.a:lib_a-islower.* *libc-psram-workaround.a:lib_a-strsep.* *libc-psram-workaround.a:lib_a-open.* *libc-psram-workaround.a:isatty.* *libc-psram-workaround.a:lib_a-asctime.* *libc-psram-workaround.a:lib_a-strcspn.* *libc-psram-workaround.a:lib_a-wsetup.* *libc-psram-workaround.a:lib_a-syssbrk.* *libc-psram-workaround.a:lib_a-strchr.* *libc-psram-workaround.a:lib_a-gmtime_r.* *libc-psram-workaround.a:lib_a-div.* *libc-psram-workaround.a:lib_a-tzvars.* *libc-psram-workaround.a:lib_a-strcoll.* *libc-psram-workaround.a:creat.* *libc-psram-workaround.a:lib_a-month_lengths.* *libc-psram-workaround.a:lib_a-sbrk.* *libc-psram-workaround.a:lib_a-system.* *libc-psram-workaround.a:lib_a-longjmp.* *libc-psram-workaround.a:lib_a-toascii.* *libc-psram-workaround.a:lib_a-fclose.* *libc-psram-workaround.a:lib_a-ungetc.* *libc-psram-workaround.a:lib_a-isalnum.* *libc-psram-workaround.a:lib_a-systimes.* *libc-psram-workaround.a:lib_a-strcpy.* *libc-psram-workaround.a:lib_a-tzcalc_limits.* *libc-psram-workaround.a:lib_a-srand.* *libc-psram-workaround.a:lib_a-s_fpclassify.* *libc-psram-workaround.a:lib_a-rand.* *libc-psram-workaround.a:lib_a-memccpy.* *libc-psram-workaround.a:lib_a-strrchr.* *libc-psram-workaround.a:lib_a-syswrite.* *libc-psram-workaround.a:lib_a-strlcat.* *libc-psram-workaround.a:lib_a-gettzinfo.* *libc-psram-workaround.a:lib_a-ctime_r.* *libc-psram-workaround.a:lib_a-strncmp.* *libc-psram-workaround.a:lib_a-findfp.* *libc-psram-workaround.a:lib_a-impure.* *libc-psram-workaround.a:lib_a-sysopen.* *libc-psram-workaround.a:lib_a-strcasecmp.* *libc-psram-workaround.a:lib_a-makebuf.* *libc-psram-workaround.a:lib_a-quorem.* *libc-psram-workaround.a:lib_a-strncat.* *libc-psram-workaround.a:lib_a-memchr.* *libc-psram-workaround.a:lib_a-strdup.* *libc-psram-workaround.a:lib_a-strcasestr.* *libc-psram-workaround.a:lib_a-isblank.* *libc-psram-workaround.a:lib_a-time.* *libc-psram-workaround.a:lib_a-labs.* *libc-psram-workaround.a:lib_a-isgraph.* *libc-psram-workaround.a:lib_a-strcmp.* *libc-psram-workaround.a:lib_a-strncpy.* *libc-psram-workaround.a:lib_a-gmtime.* *libc-psram-workaround.a:lib_a-tolower.* *libc-psram-workaround.a:lib_a-ctime.* *libc-psram-workaround.a:lib_a-sysclose.* *libc-psram-workaround.a:lib_a-stdio.* *libc-psram-workaround.a:lib_a-isascii.* *libc-psram-workaround.a:lib_a-envlock.* *libc-psram-workaround.a:lib_a-sysread.* *libc-psram-workaround.a:lib_a-fputwc.* *libc-psram-workaround.a:lib_a-strupr.* *libc-psram-workaround.a:lib_a-strnlen.* *libc-psram-workaround.a:lib_a-memcmp.* *libc-psram-workaround.a:lib_a-strstr.* *libc-psram-workaround.a:lib_a-strlwr.* *libc-psram-workaround.a:lib_a-isupper.* *libc-psram-workaround.a:lib_a-memcpy.* *libc-psram-workaround.a:lib_a-close.* *libc-psram-workaround.a:lib_a-atoi.* *libc-psram-workaround.a:lib_a-mktime.* *libc-psram-workaround.a:lib_a-tzset_r.* *libc-psram-workaround.a:lib_a-raise.* *libc-psram-workaround.a:lib_a-creat.* *libc-psram-workaround.a:lib_a-asctime_r.* *libc-psram-workaround.a:lib_a-utoa.* *libc-psram-workaround.a:lib_a-strftime.* *libc-psram-workaround.a:lib_a-ctype_.* *libc-psram-workaround.a:lib_a-strlen.* *libc-psram-workaround.a:lib_a-strcat.* *libc-psram-workaround.a:lib_a-wctomb_r.* *libc-psram-workaround.a:lib_a-rand_r.* *libc-psram-workaround.a:lib_a-strtol.* *libc-psram-workaround.a:lib_a-atol.* *libc-psram-workaround.a:lib_a-memrchr.* *libc-psram-workaround.a:lib_a-environ.* *libc-psram-workaround.a:lib_a-isalpha.* *libc-psram-workaround.a:lib_a-strncasecmp.* *libc-psram-workaround.a:lib_a-wbuf.* *libc-psram-workaround.a:lib_a-refill.* *libc-psram-workaround.a:lib_a-strtoul.* *libc-psram-workaround.a:lib_a-strptime.* *libc-psram-workaround.a:lib_a-timelocal.* *libc-psram-workaround.a:lib_a-isdigit.* *libc-psram-workaround.a:lib_a-read.* *libc-psram-workaround.a:lib_a-strdup_r.* *libc-psram-workaround.a:lib_a-toupper.* *libc-psram-workaround.a:lib_a-sccl.* *libc-psram-workaround.a:lib_a-sf_nan.* *libc-psram-workaround.a:lib_a-strlcpy.* *libc-psram-workaround.a:lib_a-strndup.* *libc-psram-workaround.a:lib_a-bzero.* *libc-psram-workaround.a:lib_a-strspn.* *libc-psram-workaround.a:lib_a-isspace.* *libc-psram-workaround.a:lib_a-tzlock.* *libc-psram-workaround.a:lib_a-wcrtomb.* *libc-psram-workaround.a:lib_a-getenv_r.* *libc-psram-workaround.a:lib_a-setjmp.* *libc-psram-workaround.a:lib_a-ispunct.* *libc-psram-workaround.a:lib_a-memset.* *libc-psram-workaround.a:lib_a-memmove.* *libc-psram-workaround.a:lib_a-strndup_r.* *libsoc.a:rtc_clk.*) .rodata EXCLUDE_FILE(*libapp_trace.a *libesp32.a:panic.* *libphy.a *libgcov.a *libheap.a:multi_heap_poisoning.* *libheap.a:multi_heap.* *libc-psram-workaround.a:lib_a-rshift.* *libc-psram-workaround.a:lib_a-lcltime_r.* *libc-psram-workaround.a:lib_a-fvwrite.* *libc-psram-workaround.a:lib_a-itoa.* *libc-psram-workaround.a:lib_a-abs.* *libc-psram-workaround.a:lock.* *libc-psram-workaround.a:lib_a-strtok_r.* *libc-psram-workaround.a:lib_a-iscntrl.* *libc-psram-workaround.a:lib_a-lcltime.* *libc-psram-workaround.a:lib_a-ldiv.* *libc-psram-workaround.a:lib_a-isprint.* *libc-psram-workaround.a:lib_a-tzset.* *libc-psram-workaround.a:lib_a-fwalk.* *libc-psram-workaround.a:lib_a-fflush.* *libc-psram-workaround.a:lib_a-islower.* *libc-psram-workaround.a:lib_a-strsep.* *libc-psram-workaround.a:lib_a-open.* *libc-psram-workaround.a:isatty.* *libc-psram-workaround.a:lib_a-asctime.* *libc-psram-workaround.a:lib_a-strcspn.* *libc-psram-workaround.a:lib_a-wsetup.* *libc-psram-workaround.a:lib_a-syssbrk.* *libc-psram-workaround.a:lib_a-strchr.* *libc-psram-workaround.a:lib_a-gmtime_r.* *libc-psram-workaround.a:lib_a-div.* *libc-psram-workaround.a:lib_a-tzvars.* *libc-psram-workaround.a:lib_a-strcoll.* *libc-psram-workaround.a:creat.* *libc-psram-workaround.a:lib_a-month_lengths.* *libc-psram-workaround.a:lib_a-sbrk.* *libc-psram-workaround.a:lib_a-system.* *libc-psram-workaround.a:lib_a-longjmp.* *libc-psram-workaround.a:lib_a-toascii.* *libc-psram-workaround.a:lib_a-fclose.* *libc-psram-workaround.a:lib_a-ungetc.* *libc-psram-workaround.a:lib_a-isalnum.* *libc-psram-workaround.a:lib_a-systimes.* *libc-psram-workaround.a:lib_a-strcpy.* *libc-psram-workaround.a:lib_a-tzcalc_limits.* *libc-psram-workaround.a:lib_a-srand.* *libc-psram-workaround.a:lib_a-s_fpclassify.* *libc-psram-workaround.a:lib_a-rand.* *libc-psram-workaround.a:lib_a-memccpy.* *libc-psram-workaround.a:lib_a-strrchr.* *libc-psram-workaround.a:lib_a-syswrite.* *libc-psram-workaround.a:lib_a-strlcat.* *libc-psram-workaround.a:lib_a-gettzinfo.* *libc-psram-workaround.a:lib_a-ctime_r.* *libc-psram-workaround.a:lib_a-strncmp.* *libc-psram-workaround.a:lib_a-findfp.* *libc-psram-workaround.a:lib_a-impure.* *libc-psram-workaround.a:lib_a-sysopen.* *libc-psram-workaround.a:lib_a-strcasecmp.* *libc-psram-workaround.a:lib_a-makebuf.* *libc-psram-workaround.a:lib_a-quorem.* *libc-psram-workaround.a:lib_a-strncat.* *libc-psram-workaround.a:lib_a-memchr.* *libc-psram-workaround.a:lib_a-strdup.* *libc-psram-workaround.a:lib_a-strcasestr.* *libc-psram-workaround.a:lib_a-isblank.* *libc-psram-workaround.a:lib_a-time.* *libc-psram-workaround.a:lib_a-labs.* *libc-psram-workaround.a:lib_a-isgraph.* *libc-psram-workaround.a:lib_a-strcmp.* *libc-psram-workaround.a:lib_a-strncpy.* *libc-psram-workaround.a:lib_a-gmtime.* *libc-psram-workaround.a:lib_a-tolower.* *libc-psram-workaround.a:lib_a-ctime.* *libc-psram-workaround.a:lib_a-sysclose.* *libc-psram-workaround.a:lib_a-stdio.* *libc-psram-workaround.a:lib_a-isascii.* *libc-psram-workaround.a:lib_a-envlock.* *libc-psram-workaround.a:lib_a-sysread.* *libc-psram-workaround.a:lib_a-fputwc.* *libc-psram-workaround.a:lib_a-strupr.* *libc-psram-workaround.a:lib_a-strnlen.* *libc-psram-workaround.a:lib_a-memcmp.* *libc-psram-workaround.a:lib_a-strstr.* *libc-psram-workaround.a:lib_a-strlwr.* *libc-psram-workaround.a:lib_a-isupper.* *libc-psram-workaround.a:lib_a-memcpy.* *libc-psram-workaround.a:lib_a-close.* *libc-psram-workaround.a:lib_a-atoi.* *libc-psram-workaround.a:lib_a-mktime.* *libc-psram-workaround.a:lib_a-tzset_r.* *libc-psram-workaround.a:lib_a-raise.* *libc-psram-workaround.a:lib_a-creat.* *libc-psram-workaround.a:lib_a-asctime_r.* *libc-psram-workaround.a:lib_a-utoa.* *libc-psram-workaround.a:lib_a-strftime.* *libc-psram-workaround.a:lib_a-ctype_.* *libc-psram-workaround.a:lib_a-strlen.* *libc-psram-workaround.a:lib_a-strcat.* *libc-psram-workaround.a:lib_a-wctomb_r.* *libc-psram-workaround.a:lib_a-rand_r.* *libc-psram-workaround.a:lib_a-strtol.* *libc-psram-workaround.a:lib_a-atol.* *libc-psram-workaround.a:lib_a-memrchr.* *libc-psram-workaround.a:lib_a-environ.* *libc-psram-workaround.a:lib_a-isalpha.* *libc-psram-workaround.a:lib_a-strncasecmp.* *libc-psram-workaround.a:lib_a-wbuf.* *libc-psram-workaround.a:lib_a-refill.* *libc-psram-workaround.a:lib_a-strtoul.* *libc-psram-workaround.a:lib_a-strptime.* *libc-psram-workaround.a:lib_a-timelocal.* *libc-psram-workaround.a:lib_a-isdigit.* *libc-psram-workaround.a:lib_a-read.* *libc-psram-workaround.a:lib_a-strdup_r.* *libc-psram-workaround.a:lib_a-toupper.* *libc-psram-workaround.a:lib_a-sccl.* *libc-psram-workaround.a:lib_a-sf_nan.* *libc-psram-workaround.a:lib_a-strlcpy.* *libc-psram-workaround.a:lib_a-strndup.* *libc-psram-workaround.a:lib_a-bzero.* *libc-psram-workaround.a:lib_a-strspn.* *libc-psram-workaround.a:lib_a-isspace.* *libc-psram-workaround.a:lib_a-tzlock.* *libc-psram-workaround.a:lib_a-wcrtomb.* *libc-psram-workaround.a:lib_a-getenv_r.* *libc-psram-workaround.a:lib_a-setjmp.* *libc-psram-workaround.a:lib_a-ispunct.* *libc-psram-workaround.a:lib_a-memset.* *libc-psram-workaround.a:lib_a-memmove.* *libc-psram-workaround.a:lib_a-strndup_r.* *libsoc.a:rtc_clk.*) .rodata.*) - - *(.irom1.text) /* catch stray ICACHE_RODATA_ATTR */ - *(.gnu.linkonce.r.*) - *(.rodata1) - __XT_EXCEPTION_TABLE_ = ABSOLUTE(.); - *(.xt_except_table) - *(.gcc_except_table .gcc_except_table.*) - *(.gnu.linkonce.e.*) - *(.gnu.version_r) - . = (. + 3) & ~ 3; - __eh_frame = ABSOLUTE(.); - KEEP(*(.eh_frame)) - . = (. + 7) & ~ 3; - /* C++ constructor and destructor tables, properly ordered: */ - __init_array_start = ABSOLUTE(.); - KEEP (*crtbegin.*(.ctors)) - KEEP (*(EXCLUDE_FILE (*crtend.*) .ctors)) - KEEP (*(SORT(.ctors.*))) - KEEP (*(.ctors)) - __init_array_end = ABSOLUTE(.); - KEEP (*crtbegin.*(.dtors)) - KEEP (*(EXCLUDE_FILE (*crtend.*) .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) - /* 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(.); - _rodata_end = ABSOLUTE(.); - /* Literals are also RO data. */ - _lit4_start = ABSOLUTE(.); - *(*.lit4) - *(.lit4.*) - *(.gnu.linkonce.lit4.*) - _lit4_end = ABSOLUTE(.); - . = ALIGN(4); - _thread_local_start = ABSOLUTE(.); - *(.tdata) - *(.tdata.*) - *(.tbss) - *(.tbss.*) - _thread_local_end = ABSOLUTE(.); - . = ALIGN(4); - } >drom0_0_seg - - .flash.text : - { - _stext = .; - _text_start = ABSOLUTE(.); - - *(EXCLUDE_FILE(*libapp_trace.a *libesp32.a:panic.* *libhal.a *librtc.a *libgcc.a:lib2funcs.* *libgcov.a *libesp_ringbuf.a *libespcoredump.a:core_dump_port.* *libespcoredump.a:core_dump_uart.* *libespcoredump.a:core_dump_common.* *libespcoredump.a:core_dump_flash.* *libfreertos.a *libheap.a:multi_heap_poisoning.* *libheap.a:multi_heap.* *libc-psram-workaround.a:lib_a-rshift.* *libc-psram-workaround.a:lib_a-lcltime_r.* *libc-psram-workaround.a:lib_a-fvwrite.* *libc-psram-workaround.a:lib_a-itoa.* *libc-psram-workaround.a:lib_a-abs.* *libc-psram-workaround.a:lock.* *libc-psram-workaround.a:lib_a-strtok_r.* *libc-psram-workaround.a:lib_a-iscntrl.* *libc-psram-workaround.a:lib_a-lcltime.* *libc-psram-workaround.a:lib_a-ldiv.* *libc-psram-workaround.a:lib_a-isprint.* *libc-psram-workaround.a:lib_a-tzset.* *libc-psram-workaround.a:lib_a-fwalk.* *libc-psram-workaround.a:lib_a-fflush.* *libc-psram-workaround.a:lib_a-islower.* *libc-psram-workaround.a:lib_a-strsep.* *libc-psram-workaround.a:lib_a-open.* *libc-psram-workaround.a:isatty.* *libc-psram-workaround.a:lib_a-asctime.* *libc-psram-workaround.a:lib_a-strcspn.* *libc-psram-workaround.a:lib_a-wsetup.* *libc-psram-workaround.a:lib_a-syssbrk.* *libc-psram-workaround.a:lib_a-strchr.* *libc-psram-workaround.a:lib_a-gmtime_r.* *libc-psram-workaround.a:lib_a-div.* *libc-psram-workaround.a:lib_a-tzvars.* *libc-psram-workaround.a:lib_a-strcoll.* *libc-psram-workaround.a:creat.* *libc-psram-workaround.a:lib_a-month_lengths.* *libc-psram-workaround.a:lib_a-sbrk.* *libc-psram-workaround.a:lib_a-system.* *libc-psram-workaround.a:lib_a-longjmp.* *libc-psram-workaround.a:lib_a-toascii.* *libc-psram-workaround.a:lib_a-fclose.* *libc-psram-workaround.a:lib_a-ungetc.* *libc-psram-workaround.a:lib_a-isalnum.* *libc-psram-workaround.a:lib_a-systimes.* *libc-psram-workaround.a:lib_a-strcpy.* *libc-psram-workaround.a:lib_a-tzcalc_limits.* *libc-psram-workaround.a:lib_a-srand.* *libc-psram-workaround.a:lib_a-s_fpclassify.* *libc-psram-workaround.a:lib_a-rand.* *libc-psram-workaround.a:lib_a-memccpy.* *libc-psram-workaround.a:lib_a-strrchr.* *libc-psram-workaround.a:lib_a-syswrite.* *libc-psram-workaround.a:lib_a-strlcat.* *libc-psram-workaround.a:lib_a-gettzinfo.* *libc-psram-workaround.a:lib_a-ctime_r.* *libc-psram-workaround.a:lib_a-strncmp.* *libc-psram-workaround.a:lib_a-findfp.* *libc-psram-workaround.a:lib_a-impure.* *libc-psram-workaround.a:lib_a-sysopen.* *libc-psram-workaround.a:lib_a-strcasecmp.* *libc-psram-workaround.a:lib_a-makebuf.* *libc-psram-workaround.a:lib_a-quorem.* *libc-psram-workaround.a:lib_a-strncat.* *libc-psram-workaround.a:lib_a-memchr.* *libc-psram-workaround.a:lib_a-strdup.* *libc-psram-workaround.a:lib_a-strcasestr.* *libc-psram-workaround.a:lib_a-isblank.* *libc-psram-workaround.a:lib_a-time.* *libc-psram-workaround.a:lib_a-labs.* *libc-psram-workaround.a:lib_a-isgraph.* *libc-psram-workaround.a:lib_a-strcmp.* *libc-psram-workaround.a:lib_a-strncpy.* *libc-psram-workaround.a:lib_a-gmtime.* *libc-psram-workaround.a:lib_a-tolower.* *libc-psram-workaround.a:lib_a-ctime.* *libc-psram-workaround.a:lib_a-sysclose.* *libc-psram-workaround.a:lib_a-stdio.* *libc-psram-workaround.a:lib_a-isascii.* *libc-psram-workaround.a:lib_a-envlock.* *libc-psram-workaround.a:lib_a-sysread.* *libc-psram-workaround.a:lib_a-fputwc.* *libc-psram-workaround.a:lib_a-strupr.* *libc-psram-workaround.a:lib_a-strnlen.* *libc-psram-workaround.a:lib_a-memcmp.* *libc-psram-workaround.a:lib_a-strstr.* *libc-psram-workaround.a:lib_a-strlwr.* *libc-psram-workaround.a:lib_a-isupper.* *libc-psram-workaround.a:lib_a-memcpy.* *libc-psram-workaround.a:lib_a-close.* *libc-psram-workaround.a:lib_a-atoi.* *libc-psram-workaround.a:lib_a-mktime.* *libc-psram-workaround.a:lib_a-tzset_r.* *libc-psram-workaround.a:lib_a-raise.* *libc-psram-workaround.a:lib_a-creat.* *libc-psram-workaround.a:lib_a-asctime_r.* *libc-psram-workaround.a:lib_a-utoa.* *libc-psram-workaround.a:lib_a-strftime.* *libc-psram-workaround.a:lib_a-ctype_.* *libc-psram-workaround.a:lib_a-strlen.* *libc-psram-workaround.a:lib_a-strcat.* *libc-psram-workaround.a:lib_a-wctomb_r.* *libc-psram-workaround.a:lib_a-rand_r.* *libc-psram-workaround.a:lib_a-strtol.* *libc-psram-workaround.a:lib_a-atol.* *libc-psram-workaround.a:lib_a-memrchr.* *libc-psram-workaround.a:lib_a-environ.* *libc-psram-workaround.a:lib_a-isalpha.* *libc-psram-workaround.a:lib_a-strncasecmp.* *libc-psram-workaround.a:lib_a-wbuf.* *libc-psram-workaround.a:lib_a-refill.* *libc-psram-workaround.a:lib_a-strtoul.* *libc-psram-workaround.a:lib_a-strptime.* *libc-psram-workaround.a:lib_a-timelocal.* *libc-psram-workaround.a:lib_a-isdigit.* *libc-psram-workaround.a:lib_a-read.* *libc-psram-workaround.a:lib_a-strdup_r.* *libc-psram-workaround.a:lib_a-toupper.* *libc-psram-workaround.a:lib_a-sccl.* *libc-psram-workaround.a:lib_a-sf_nan.* *libc-psram-workaround.a:lib_a-strlcpy.* *libc-psram-workaround.a:lib_a-strndup.* *libc-psram-workaround.a:lib_a-bzero.* *libc-psram-workaround.a:lib_a-strspn.* *libc-psram-workaround.a:lib_a-isspace.* *libc-psram-workaround.a:lib_a-tzlock.* *libc-psram-workaround.a:lib_a-wcrtomb.* *libc-psram-workaround.a:lib_a-getenv_r.* *libc-psram-workaround.a:lib_a-setjmp.* *libc-psram-workaround.a:lib_a-ispunct.* *libc-psram-workaround.a:lib_a-memset.* *libc-psram-workaround.a:lib_a-memmove.* *libc-psram-workaround.a:lib_a-strndup_r.* *libsoc.a:rtc_sleep.* *libsoc.a:rtc_init.* *libsoc.a:rtc_clk.* *libsoc.a:rtc_pm.* *libsoc.a:cpu_util.* *libsoc.a:rtc_wdt.* *libsoc.a:rtc_time.* *libsoc.a:rtc_clk_init.* *libsoc.a:rtc_periph.* *libspi_flash.a:spi_flash_rom_patch.* *libxtensa-debug-module.a:eri.*) .literal EXCLUDE_FILE(*libapp_trace.a *libesp32.a:panic.* *libhal.a *librtc.a *libgcc.a:lib2funcs.* *libgcov.a *libesp_ringbuf.a *libespcoredump.a:core_dump_port.* *libespcoredump.a:core_dump_uart.* *libespcoredump.a:core_dump_common.* *libespcoredump.a:core_dump_flash.* *libfreertos.a *libheap.a:multi_heap_poisoning.* *libheap.a:multi_heap.* *libc-psram-workaround.a:lib_a-rshift.* *libc-psram-workaround.a:lib_a-lcltime_r.* *libc-psram-workaround.a:lib_a-fvwrite.* *libc-psram-workaround.a:lib_a-itoa.* *libc-psram-workaround.a:lib_a-abs.* *libc-psram-workaround.a:lock.* *libc-psram-workaround.a:lib_a-strtok_r.* *libc-psram-workaround.a:lib_a-iscntrl.* *libc-psram-workaround.a:lib_a-lcltime.* *libc-psram-workaround.a:lib_a-ldiv.* *libc-psram-workaround.a:lib_a-isprint.* *libc-psram-workaround.a:lib_a-tzset.* *libc-psram-workaround.a:lib_a-fwalk.* *libc-psram-workaround.a:lib_a-fflush.* *libc-psram-workaround.a:lib_a-islower.* *libc-psram-workaround.a:lib_a-strsep.* *libc-psram-workaround.a:lib_a-open.* *libc-psram-workaround.a:isatty.* *libc-psram-workaround.a:lib_a-asctime.* *libc-psram-workaround.a:lib_a-strcspn.* *libc-psram-workaround.a:lib_a-wsetup.* *libc-psram-workaround.a:lib_a-syssbrk.* *libc-psram-workaround.a:lib_a-strchr.* *libc-psram-workaround.a:lib_a-gmtime_r.* *libc-psram-workaround.a:lib_a-div.* *libc-psram-workaround.a:lib_a-tzvars.* *libc-psram-workaround.a:lib_a-strcoll.* *libc-psram-workaround.a:creat.* *libc-psram-workaround.a:lib_a-month_lengths.* *libc-psram-workaround.a:lib_a-sbrk.* *libc-psram-workaround.a:lib_a-system.* *libc-psram-workaround.a:lib_a-longjmp.* *libc-psram-workaround.a:lib_a-toascii.* *libc-psram-workaround.a:lib_a-fclose.* *libc-psram-workaround.a:lib_a-ungetc.* *libc-psram-workaround.a:lib_a-isalnum.* *libc-psram-workaround.a:lib_a-systimes.* *libc-psram-workaround.a:lib_a-strcpy.* *libc-psram-workaround.a:lib_a-tzcalc_limits.* *libc-psram-workaround.a:lib_a-srand.* *libc-psram-workaround.a:lib_a-s_fpclassify.* *libc-psram-workaround.a:lib_a-rand.* *libc-psram-workaround.a:lib_a-memccpy.* *libc-psram-workaround.a:lib_a-strrchr.* *libc-psram-workaround.a:lib_a-syswrite.* *libc-psram-workaround.a:lib_a-strlcat.* *libc-psram-workaround.a:lib_a-gettzinfo.* *libc-psram-workaround.a:lib_a-ctime_r.* *libc-psram-workaround.a:lib_a-strncmp.* *libc-psram-workaround.a:lib_a-findfp.* *libc-psram-workaround.a:lib_a-impure.* *libc-psram-workaround.a:lib_a-sysopen.* *libc-psram-workaround.a:lib_a-strcasecmp.* *libc-psram-workaround.a:lib_a-makebuf.* *libc-psram-workaround.a:lib_a-quorem.* *libc-psram-workaround.a:lib_a-strncat.* *libc-psram-workaround.a:lib_a-memchr.* *libc-psram-workaround.a:lib_a-strdup.* *libc-psram-workaround.a:lib_a-strcasestr.* *libc-psram-workaround.a:lib_a-isblank.* *libc-psram-workaround.a:lib_a-time.* *libc-psram-workaround.a:lib_a-labs.* *libc-psram-workaround.a:lib_a-isgraph.* *libc-psram-workaround.a:lib_a-strcmp.* *libc-psram-workaround.a:lib_a-strncpy.* *libc-psram-workaround.a:lib_a-gmtime.* *libc-psram-workaround.a:lib_a-tolower.* *libc-psram-workaround.a:lib_a-ctime.* *libc-psram-workaround.a:lib_a-sysclose.* *libc-psram-workaround.a:lib_a-stdio.* *libc-psram-workaround.a:lib_a-isascii.* *libc-psram-workaround.a:lib_a-envlock.* *libc-psram-workaround.a:lib_a-sysread.* *libc-psram-workaround.a:lib_a-fputwc.* *libc-psram-workaround.a:lib_a-strupr.* *libc-psram-workaround.a:lib_a-strnlen.* *libc-psram-workaround.a:lib_a-memcmp.* *libc-psram-workaround.a:lib_a-strstr.* *libc-psram-workaround.a:lib_a-strlwr.* *libc-psram-workaround.a:lib_a-isupper.* *libc-psram-workaround.a:lib_a-memcpy.* *libc-psram-workaround.a:lib_a-close.* *libc-psram-workaround.a:lib_a-atoi.* *libc-psram-workaround.a:lib_a-mktime.* *libc-psram-workaround.a:lib_a-tzset_r.* *libc-psram-workaround.a:lib_a-raise.* *libc-psram-workaround.a:lib_a-creat.* *libc-psram-workaround.a:lib_a-asctime_r.* *libc-psram-workaround.a:lib_a-utoa.* *libc-psram-workaround.a:lib_a-strftime.* *libc-psram-workaround.a:lib_a-ctype_.* *libc-psram-workaround.a:lib_a-strlen.* *libc-psram-workaround.a:lib_a-strcat.* *libc-psram-workaround.a:lib_a-wctomb_r.* *libc-psram-workaround.a:lib_a-rand_r.* *libc-psram-workaround.a:lib_a-strtol.* *libc-psram-workaround.a:lib_a-atol.* *libc-psram-workaround.a:lib_a-memrchr.* *libc-psram-workaround.a:lib_a-environ.* *libc-psram-workaround.a:lib_a-isalpha.* *libc-psram-workaround.a:lib_a-strncasecmp.* *libc-psram-workaround.a:lib_a-wbuf.* *libc-psram-workaround.a:lib_a-refill.* *libc-psram-workaround.a:lib_a-strtoul.* *libc-psram-workaround.a:lib_a-strptime.* *libc-psram-workaround.a:lib_a-timelocal.* *libc-psram-workaround.a:lib_a-isdigit.* *libc-psram-workaround.a:lib_a-read.* *libc-psram-workaround.a:lib_a-strdup_r.* *libc-psram-workaround.a:lib_a-toupper.* *libc-psram-workaround.a:lib_a-sccl.* *libc-psram-workaround.a:lib_a-sf_nan.* *libc-psram-workaround.a:lib_a-strlcpy.* *libc-psram-workaround.a:lib_a-strndup.* *libc-psram-workaround.a:lib_a-bzero.* *libc-psram-workaround.a:lib_a-strspn.* *libc-psram-workaround.a:lib_a-isspace.* *libc-psram-workaround.a:lib_a-tzlock.* *libc-psram-workaround.a:lib_a-wcrtomb.* *libc-psram-workaround.a:lib_a-getenv_r.* *libc-psram-workaround.a:lib_a-setjmp.* *libc-psram-workaround.a:lib_a-ispunct.* *libc-psram-workaround.a:lib_a-memset.* *libc-psram-workaround.a:lib_a-memmove.* *libc-psram-workaround.a:lib_a-strndup_r.* *libsoc.a:rtc_sleep.* *libsoc.a:rtc_init.* *libsoc.a:rtc_clk.* *libsoc.a:rtc_pm.* *libsoc.a:cpu_util.* *libsoc.a:rtc_wdt.* *libsoc.a:rtc_time.* *libsoc.a:rtc_clk_init.* *libsoc.a:rtc_periph.* *libspi_flash.a:spi_flash_rom_patch.* *libxtensa-debug-module.a:eri.*) .literal.* .phyiram .phyiram.* EXCLUDE_FILE(*libapp_trace.a *libesp32.a:panic.* *libhal.a *librtc.a *libgcc.a:lib2funcs.* *libgcov.a *libesp_ringbuf.a *libespcoredump.a:core_dump_port.* *libespcoredump.a:core_dump_uart.* *libespcoredump.a:core_dump_common.* *libespcoredump.a:core_dump_flash.* *libfreertos.a *libheap.a:multi_heap_poisoning.* *libheap.a:multi_heap.* *libc-psram-workaround.a:lib_a-rshift.* *libc-psram-workaround.a:lib_a-lcltime_r.* *libc-psram-workaround.a:lib_a-fvwrite.* *libc-psram-workaround.a:lib_a-itoa.* *libc-psram-workaround.a:lib_a-abs.* *libc-psram-workaround.a:lock.* *libc-psram-workaround.a:lib_a-strtok_r.* *libc-psram-workaround.a:lib_a-iscntrl.* *libc-psram-workaround.a:lib_a-lcltime.* *libc-psram-workaround.a:lib_a-ldiv.* *libc-psram-workaround.a:lib_a-isprint.* *libc-psram-workaround.a:lib_a-tzset.* *libc-psram-workaround.a:lib_a-fwalk.* *libc-psram-workaround.a:lib_a-fflush.* *libc-psram-workaround.a:lib_a-islower.* *libc-psram-workaround.a:lib_a-strsep.* *libc-psram-workaround.a:lib_a-open.* *libc-psram-workaround.a:isatty.* *libc-psram-workaround.a:lib_a-asctime.* *libc-psram-workaround.a:lib_a-strcspn.* *libc-psram-workaround.a:lib_a-wsetup.* *libc-psram-workaround.a:lib_a-syssbrk.* *libc-psram-workaround.a:lib_a-strchr.* *libc-psram-workaround.a:lib_a-gmtime_r.* *libc-psram-workaround.a:lib_a-div.* *libc-psram-workaround.a:lib_a-tzvars.* *libc-psram-workaround.a:lib_a-strcoll.* *libc-psram-workaround.a:creat.* *libc-psram-workaround.a:lib_a-month_lengths.* *libc-psram-workaround.a:lib_a-sbrk.* *libc-psram-workaround.a:lib_a-system.* *libc-psram-workaround.a:lib_a-longjmp.* *libc-psram-workaround.a:lib_a-toascii.* *libc-psram-workaround.a:lib_a-fclose.* *libc-psram-workaround.a:lib_a-ungetc.* *libc-psram-workaround.a:lib_a-isalnum.* *libc-psram-workaround.a:lib_a-systimes.* *libc-psram-workaround.a:lib_a-strcpy.* *libc-psram-workaround.a:lib_a-tzcalc_limits.* *libc-psram-workaround.a:lib_a-srand.* *libc-psram-workaround.a:lib_a-s_fpclassify.* *libc-psram-workaround.a:lib_a-rand.* *libc-psram-workaround.a:lib_a-memccpy.* *libc-psram-workaround.a:lib_a-strrchr.* *libc-psram-workaround.a:lib_a-syswrite.* *libc-psram-workaround.a:lib_a-strlcat.* *libc-psram-workaround.a:lib_a-gettzinfo.* *libc-psram-workaround.a:lib_a-ctime_r.* *libc-psram-workaround.a:lib_a-strncmp.* *libc-psram-workaround.a:lib_a-findfp.* *libc-psram-workaround.a:lib_a-impure.* *libc-psram-workaround.a:lib_a-sysopen.* *libc-psram-workaround.a:lib_a-strcasecmp.* *libc-psram-workaround.a:lib_a-makebuf.* *libc-psram-workaround.a:lib_a-quorem.* *libc-psram-workaround.a:lib_a-strncat.* *libc-psram-workaround.a:lib_a-memchr.* *libc-psram-workaround.a:lib_a-strdup.* *libc-psram-workaround.a:lib_a-strcasestr.* *libc-psram-workaround.a:lib_a-isblank.* *libc-psram-workaround.a:lib_a-time.* *libc-psram-workaround.a:lib_a-labs.* *libc-psram-workaround.a:lib_a-isgraph.* *libc-psram-workaround.a:lib_a-strcmp.* *libc-psram-workaround.a:lib_a-strncpy.* *libc-psram-workaround.a:lib_a-gmtime.* *libc-psram-workaround.a:lib_a-tolower.* *libc-psram-workaround.a:lib_a-ctime.* *libc-psram-workaround.a:lib_a-sysclose.* *libc-psram-workaround.a:lib_a-stdio.* *libc-psram-workaround.a:lib_a-isascii.* *libc-psram-workaround.a:lib_a-envlock.* *libc-psram-workaround.a:lib_a-sysread.* *libc-psram-workaround.a:lib_a-fputwc.* *libc-psram-workaround.a:lib_a-strupr.* *libc-psram-workaround.a:lib_a-strnlen.* *libc-psram-workaround.a:lib_a-memcmp.* *libc-psram-workaround.a:lib_a-strstr.* *libc-psram-workaround.a:lib_a-strlwr.* *libc-psram-workaround.a:lib_a-isupper.* *libc-psram-workaround.a:lib_a-memcpy.* *libc-psram-workaround.a:lib_a-close.* *libc-psram-workaround.a:lib_a-atoi.* *libc-psram-workaround.a:lib_a-mktime.* *libc-psram-workaround.a:lib_a-tzset_r.* *libc-psram-workaround.a:lib_a-raise.* *libc-psram-workaround.a:lib_a-creat.* *libc-psram-workaround.a:lib_a-asctime_r.* *libc-psram-workaround.a:lib_a-utoa.* *libc-psram-workaround.a:lib_a-strftime.* *libc-psram-workaround.a:lib_a-ctype_.* *libc-psram-workaround.a:lib_a-strlen.* *libc-psram-workaround.a:lib_a-strcat.* *libc-psram-workaround.a:lib_a-wctomb_r.* *libc-psram-workaround.a:lib_a-rand_r.* *libc-psram-workaround.a:lib_a-strtol.* *libc-psram-workaround.a:lib_a-atol.* *libc-psram-workaround.a:lib_a-memrchr.* *libc-psram-workaround.a:lib_a-environ.* *libc-psram-workaround.a:lib_a-isalpha.* *libc-psram-workaround.a:lib_a-strncasecmp.* *libc-psram-workaround.a:lib_a-wbuf.* *libc-psram-workaround.a:lib_a-refill.* *libc-psram-workaround.a:lib_a-strtoul.* *libc-psram-workaround.a:lib_a-strptime.* *libc-psram-workaround.a:lib_a-timelocal.* *libc-psram-workaround.a:lib_a-isdigit.* *libc-psram-workaround.a:lib_a-read.* *libc-psram-workaround.a:lib_a-strdup_r.* *libc-psram-workaround.a:lib_a-toupper.* *libc-psram-workaround.a:lib_a-sccl.* *libc-psram-workaround.a:lib_a-sf_nan.* *libc-psram-workaround.a:lib_a-strlcpy.* *libc-psram-workaround.a:lib_a-strndup.* *libc-psram-workaround.a:lib_a-bzero.* *libc-psram-workaround.a:lib_a-strspn.* *libc-psram-workaround.a:lib_a-isspace.* *libc-psram-workaround.a:lib_a-tzlock.* *libc-psram-workaround.a:lib_a-wcrtomb.* *libc-psram-workaround.a:lib_a-getenv_r.* *libc-psram-workaround.a:lib_a-setjmp.* *libc-psram-workaround.a:lib_a-ispunct.* *libc-psram-workaround.a:lib_a-memset.* *libc-psram-workaround.a:lib_a-memmove.* *libc-psram-workaround.a:lib_a-strndup_r.* *libsoc.a:rtc_sleep.* *libsoc.a:rtc_init.* *libsoc.a:rtc_clk.* *libsoc.a:rtc_pm.* *libsoc.a:cpu_util.* *libsoc.a:rtc_wdt.* *libsoc.a:rtc_time.* *libsoc.a:rtc_clk_init.* *libsoc.a:rtc_periph.* *libspi_flash.a:spi_flash_rom_patch.* *libxtensa-debug-module.a:eri.*) .text EXCLUDE_FILE(*libapp_trace.a *libesp32.a:panic.* *libhal.a *librtc.a *libgcc.a:lib2funcs.* *libgcov.a *libesp_ringbuf.a *libespcoredump.a:core_dump_port.* *libespcoredump.a:core_dump_uart.* *libespcoredump.a:core_dump_common.* *libespcoredump.a:core_dump_flash.* *libfreertos.a *libheap.a:multi_heap_poisoning.* *libheap.a:multi_heap.* *libc-psram-workaround.a:lib_a-rshift.* *libc-psram-workaround.a:lib_a-lcltime_r.* *libc-psram-workaround.a:lib_a-fvwrite.* *libc-psram-workaround.a:lib_a-itoa.* *libc-psram-workaround.a:lib_a-abs.* *libc-psram-workaround.a:lock.* *libc-psram-workaround.a:lib_a-strtok_r.* *libc-psram-workaround.a:lib_a-iscntrl.* *libc-psram-workaround.a:lib_a-lcltime.* *libc-psram-workaround.a:lib_a-ldiv.* *libc-psram-workaround.a:lib_a-isprint.* *libc-psram-workaround.a:lib_a-tzset.* *libc-psram-workaround.a:lib_a-fwalk.* *libc-psram-workaround.a:lib_a-fflush.* *libc-psram-workaround.a:lib_a-islower.* *libc-psram-workaround.a:lib_a-strsep.* *libc-psram-workaround.a:lib_a-open.* *libc-psram-workaround.a:isatty.* *libc-psram-workaround.a:lib_a-asctime.* *libc-psram-workaround.a:lib_a-strcspn.* *libc-psram-workaround.a:lib_a-wsetup.* *libc-psram-workaround.a:lib_a-syssbrk.* *libc-psram-workaround.a:lib_a-strchr.* *libc-psram-workaround.a:lib_a-gmtime_r.* *libc-psram-workaround.a:lib_a-div.* *libc-psram-workaround.a:lib_a-tzvars.* *libc-psram-workaround.a:lib_a-strcoll.* *libc-psram-workaround.a:creat.* *libc-psram-workaround.a:lib_a-month_lengths.* *libc-psram-workaround.a:lib_a-sbrk.* *libc-psram-workaround.a:lib_a-system.* *libc-psram-workaround.a:lib_a-longjmp.* *libc-psram-workaround.a:lib_a-toascii.* *libc-psram-workaround.a:lib_a-fclose.* *libc-psram-workaround.a:lib_a-ungetc.* *libc-psram-workaround.a:lib_a-isalnum.* *libc-psram-workaround.a:lib_a-systimes.* *libc-psram-workaround.a:lib_a-strcpy.* *libc-psram-workaround.a:lib_a-tzcalc_limits.* *libc-psram-workaround.a:lib_a-srand.* *libc-psram-workaround.a:lib_a-s_fpclassify.* *libc-psram-workaround.a:lib_a-rand.* *libc-psram-workaround.a:lib_a-memccpy.* *libc-psram-workaround.a:lib_a-strrchr.* *libc-psram-workaround.a:lib_a-syswrite.* *libc-psram-workaround.a:lib_a-strlcat.* *libc-psram-workaround.a:lib_a-gettzinfo.* *libc-psram-workaround.a:lib_a-ctime_r.* *libc-psram-workaround.a:lib_a-strncmp.* *libc-psram-workaround.a:lib_a-findfp.* *libc-psram-workaround.a:lib_a-impure.* *libc-psram-workaround.a:lib_a-sysopen.* *libc-psram-workaround.a:lib_a-strcasecmp.* *libc-psram-workaround.a:lib_a-makebuf.* *libc-psram-workaround.a:lib_a-quorem.* *libc-psram-workaround.a:lib_a-strncat.* *libc-psram-workaround.a:lib_a-memchr.* *libc-psram-workaround.a:lib_a-strdup.* *libc-psram-workaround.a:lib_a-strcasestr.* *libc-psram-workaround.a:lib_a-isblank.* *libc-psram-workaround.a:lib_a-time.* *libc-psram-workaround.a:lib_a-labs.* *libc-psram-workaround.a:lib_a-isgraph.* *libc-psram-workaround.a:lib_a-strcmp.* *libc-psram-workaround.a:lib_a-strncpy.* *libc-psram-workaround.a:lib_a-gmtime.* *libc-psram-workaround.a:lib_a-tolower.* *libc-psram-workaround.a:lib_a-ctime.* *libc-psram-workaround.a:lib_a-sysclose.* *libc-psram-workaround.a:lib_a-stdio.* *libc-psram-workaround.a:lib_a-isascii.* *libc-psram-workaround.a:lib_a-envlock.* *libc-psram-workaround.a:lib_a-sysread.* *libc-psram-workaround.a:lib_a-fputwc.* *libc-psram-workaround.a:lib_a-strupr.* *libc-psram-workaround.a:lib_a-strnlen.* *libc-psram-workaround.a:lib_a-memcmp.* *libc-psram-workaround.a:lib_a-strstr.* *libc-psram-workaround.a:lib_a-strlwr.* *libc-psram-workaround.a:lib_a-isupper.* *libc-psram-workaround.a:lib_a-memcpy.* *libc-psram-workaround.a:lib_a-close.* *libc-psram-workaround.a:lib_a-atoi.* *libc-psram-workaround.a:lib_a-mktime.* *libc-psram-workaround.a:lib_a-tzset_r.* *libc-psram-workaround.a:lib_a-raise.* *libc-psram-workaround.a:lib_a-creat.* *libc-psram-workaround.a:lib_a-asctime_r.* *libc-psram-workaround.a:lib_a-utoa.* *libc-psram-workaround.a:lib_a-strftime.* *libc-psram-workaround.a:lib_a-ctype_.* *libc-psram-workaround.a:lib_a-strlen.* *libc-psram-workaround.a:lib_a-strcat.* *libc-psram-workaround.a:lib_a-wctomb_r.* *libc-psram-workaround.a:lib_a-rand_r.* *libc-psram-workaround.a:lib_a-strtol.* *libc-psram-workaround.a:lib_a-atol.* *libc-psram-workaround.a:lib_a-memrchr.* *libc-psram-workaround.a:lib_a-environ.* *libc-psram-workaround.a:lib_a-isalpha.* *libc-psram-workaround.a:lib_a-strncasecmp.* *libc-psram-workaround.a:lib_a-wbuf.* *libc-psram-workaround.a:lib_a-refill.* *libc-psram-workaround.a:lib_a-strtoul.* *libc-psram-workaround.a:lib_a-strptime.* *libc-psram-workaround.a:lib_a-timelocal.* *libc-psram-workaround.a:lib_a-isdigit.* *libc-psram-workaround.a:lib_a-read.* *libc-psram-workaround.a:lib_a-strdup_r.* *libc-psram-workaround.a:lib_a-toupper.* *libc-psram-workaround.a:lib_a-sccl.* *libc-psram-workaround.a:lib_a-sf_nan.* *libc-psram-workaround.a:lib_a-strlcpy.* *libc-psram-workaround.a:lib_a-strndup.* *libc-psram-workaround.a:lib_a-bzero.* *libc-psram-workaround.a:lib_a-strspn.* *libc-psram-workaround.a:lib_a-isspace.* *libc-psram-workaround.a:lib_a-tzlock.* *libc-psram-workaround.a:lib_a-wcrtomb.* *libc-psram-workaround.a:lib_a-getenv_r.* *libc-psram-workaround.a:lib_a-setjmp.* *libc-psram-workaround.a:lib_a-ispunct.* *libc-psram-workaround.a:lib_a-memset.* *libc-psram-workaround.a:lib_a-memmove.* *libc-psram-workaround.a:lib_a-strndup_r.* *libsoc.a:rtc_sleep.* *libsoc.a:rtc_init.* *libsoc.a:rtc_clk.* *libsoc.a:rtc_pm.* *libsoc.a:cpu_util.* *libsoc.a:rtc_wdt.* *libsoc.a:rtc_time.* *libsoc.a:rtc_clk_init.* *libsoc.a:rtc_periph.* *libspi_flash.a:spi_flash_rom_patch.* *libxtensa-debug-module.a:eri.*) .text.* .wifi0iram .wifi0iram.* .wifirxiram .wifirxiram.*) - - *(.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 = .; - - /* 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); - } >iram0_2_seg -} diff --git a/FluidNC/ld/esp32/sections.ld b/FluidNC/ld/esp32/sections.ld new file mode 100644 index 000000000..2f45d495e --- /dev/null +++ b/FluidNC/ld/esp32/sections.ld @@ -0,0 +1,807 @@ +/* Automatically generated file; DO NOT EDIT */ +/* Espressif IoT Development Framework Linker Script */ +/* Generated from: /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/esp_system/ld/esp32/sections.ld.in */ + +/* + * SPDX-FileCopyrightText: 2021 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ +/* Default entry point: */ +ENTRY(call_start_cpu0); + +SECTIONS +{ + /* 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.text.*) + + *rtc_wake_stub*.*(.literal .text .literal.* .text.*) + _rtc_text_end = ABSOLUTE(.); + } > rtc_iram_seg + + /* + 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(.); + + _coredump_rtc_fast_start = ABSOLUTE(.); + *(.rtc.fast.coredump .rtc.fast.coredump.*) + _coredump_rtc_fast_end = ABSOLUTE(.); + + *(.rtc.force_fast .rtc.force_fast.*) + . = ALIGN(4) ; + + _rtc_force_fast_end = ABSOLUTE(.); + } > rtc_data_seg + + /* RTC data section holds RTC wake stub + data/rodata, including from any source file + 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. + */ + .rtc.data : + { + _rtc_data_start = ABSOLUTE(.); + + _coredump_rtc_start = ABSOLUTE(.); + *(.rtc.coredump .rtc.coredump.*) + _coredump_rtc_end = ABSOLUTE(.); + *(.rtc.data .rtc.data.*) + *(.rtc.rodata .rtc.rodata.*) + + *rtc_wake_stub*.*(.data .rodata .data.* .rodata.* .bss .bss.*) + _rtc_data_end = ABSOLUTE(.); + + } > rtc_data_location + + /* RTC bss, from any source file named rtc_wake_stub*.c */ + .rtc.bss (NOLOAD) : + { + _rtc_bss_start = ABSOLUTE(.); + *rtc_wake_stub*.*(.bss .bss.*) + *rtc_wake_stub*.*(COMMON) + + *(.rtc.bss) + + _rtc_bss_end = ABSOLUTE(.); + } > rtc_data_location + + /* This section holds data that should not be initialized at power up + 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. + */ + .rtc_noinit (NOLOAD): + { + . = ALIGN(4); + _rtc_noinit_start = ABSOLUTE(.); + *(.rtc_noinit .rtc_noinit.*) + . = ALIGN(4) ; + _rtc_noinit_end = ABSOLUTE(.); + } > 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(.); + } > rtc_slow_seg + + /* 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.") + + /* Send .iram0 code to iram */ + .iram0.vectors : + { + _iram_start = ABSOLUTE(.); + /* Vectors go to IRAM */ + _vector_table = 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; + _invalid_pc_placeholder = ABSOLUTE(.); + *(.*Vector.literal) + + *(.UserEnter.literal); + *(.UserEnter.text); + . = ALIGN (16); + *(.entry.text) + *(.init.literal) + *(.init) + + _init_end = ABSOLUTE(.); + } > iram0_0_seg + + .iram0.text : + { + /* Code marked as runnning out of IRAM */ + _iram_text_start = ABSOLUTE(.); + + *(.iram1 .iram1.*) + *libapp_trace.a:app_trace.*(.literal .literal.* .text .text.*) + *libapp_trace.a:app_trace_util.*(.literal .literal.* .text .text.*) + *libc.a:creat.*(.literal .literal.* .text .text.*) + *libc.a:isatty.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-abs.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-asctime.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-asctime_r.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-atoi.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-atol.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-bzero.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-close.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-creat.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-ctime.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-ctime_r.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-ctype_.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-div.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-environ.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-envlock.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-fclose.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-fflush.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-findfp.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-fputwc.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-fvwrite.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-fwalk.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-getenv_r.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-gettzinfo.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-gmtime.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-gmtime_r.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-impure.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-isalnum.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-isalpha.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-isascii.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-isblank.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-iscntrl.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-isdigit.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-isgraph.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-islower.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-isprint.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-ispunct.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-isspace.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-isupper.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-itoa.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-labs.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-lcltime.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-lcltime_r.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-ldiv.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-longjmp.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-makebuf.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-memccpy.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-memchr.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-memcmp.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-memcpy.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-memmove.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-memrchr.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-memset.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-mktime.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-month_lengths.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-open.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-quorem.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-raise.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-rand.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-rand_r.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-read.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-refill.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-rshift.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-s_fpclassify.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-sbrk.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-sccl.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-setjmp.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-sf_nan.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-srand.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-stdio.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-strcasecmp.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-strcasestr.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-strcat.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-strchr.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-strcmp.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-strcoll.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-strcpy.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-strcspn.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-strdup.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-strdup_r.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-strftime.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-strlcat.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-strlcpy.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-strlen.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-strlwr.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-strncasecmp.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-strncat.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-strncmp.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-strncpy.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-strndup.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-strndup_r.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-strnlen.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-strptime.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-strrchr.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-strsep.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-strspn.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-strstr.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-strtok_r.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-strtol.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-strtoul.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-strupr.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-sysclose.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-sysopen.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-sysread.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-syssbrk.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-system.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-systimes.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-syswrite.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-time.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-timelocal.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-toascii.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-tolower.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-toupper.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-tzcalc_limits.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-tzlock.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-tzset.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-tzset_r.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-tzvars.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-ungetc.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-utoa.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-wbuf.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-wcrtomb.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-wctomb_r.*(.literal .literal.* .text .text.*) + *libc.a:lib_a-wsetup.*(.literal .literal.* .text .text.*) + *libc.a:lock.*(.literal .literal.* .text .text.*) + *libesp_event.a:default_event_loop.*(.literal.esp_event_isr_post .text.esp_event_isr_post) + *libesp_event.a:esp_event.*(.literal.esp_event_isr_post_to .text.esp_event_isr_post_to) + *libesp_hw_support.a:cpu_util.*(.literal .literal.* .text .text.*) + *libesp_hw_support.a:rtc_clk.*(.literal .literal.* .text .text.*) + *libesp_hw_support.a:rtc_init.*(.literal.rtc_vddsdio_set_config .text.rtc_vddsdio_set_config) + *libesp_hw_support.a:rtc_pm.*(.literal .literal.* .text .text.*) + *libesp_hw_support.a:rtc_sleep.*(.literal .literal.* .text .text.*) + *libesp_hw_support.a:rtc_time.*(.literal .literal.* .text .text.*) + *libesp_hw_support.a:rtc_wdt.*(.literal .literal.* .text .text.*) + *libesp_ringbuf.a:(.literal .literal.* .text .text.*) + *libesp_system.a:esp_err.*(.literal .literal.* .text .text.*) + *libesp_system.a:esp_system.*(.literal.esp_system_abort .text.esp_system_abort) + *libesp_system.a:ubsan.*(.literal .literal.* .text .text.*) + *libfreertos.a:(EXCLUDE_FILE(*libfreertos.a:port.* *libfreertos.a:port_common.*) .literal EXCLUDE_FILE(*libfreertos.a:port.* *libfreertos.a:port_common.*) .literal.* EXCLUDE_FILE(*libfreertos.a:port.* *libfreertos.a:port_common.*) .text EXCLUDE_FILE(*libfreertos.a:port.* *libfreertos.a:port_common.*) .text.*) + *libfreertos.a:port.*(.literal.pxPortInitialiseStack .literal.unlikely.vPortEndScheduler .literal.vApplicationStackOverflowHook .literal.vPortAssertIfInISR .literal.vPortExitCritical .literal.vPortExitCriticalCompliance .literal.vPortReleaseTaskMPUSettings .literal.vPortSetStackWatchpoint .literal.vPortYieldOtherCore .literal.xPortEnterCriticalTimeout .literal.xPortEnterCriticalTimeoutCompliance .literal.xPortInIsrContext .literal.xPortStartScheduler .text .text.pxPortInitialiseStack .text.unlikely.vPortEndScheduler .text.vApplicationStackOverflowHook .text.vPortAssertIfInISR .text.vPortExitCritical .text.vPortExitCriticalCompliance .text.vPortReleaseTaskMPUSettings .text.vPortSetStackWatchpoint .text.vPortStoreTaskMPUSettings .text.vPortYieldOtherCore .text.xPortEnterCriticalTimeout .text.xPortEnterCriticalTimeoutCompliance .text.xPortGetTickRateHz .text.xPortInIsrContext .text.xPortStartScheduler) + *libfreertos.a:port_common.*(.literal.esp_startup_start_app_common .literal.vApplicationGetIdleTaskMemory .literal.vApplicationGetTimerTaskMemory .literal.xPortCheckValidTCBMem .literal.xPortcheckValidStackMem .text .text.esp_startup_start_app_common .text.vApplicationGetIdleTaskMemory .text.vApplicationGetTimerTaskMemory .text.xPortCheckValidTCBMem .text.xPortcheckValidStackMem) + *libgcc.a:lib2funcs.*(.literal .literal.* .text .text.*) + *libgcov.a:(.literal .literal.* .text .text.*) + *libhal.a:cpu_hal.*(.literal .literal.* .text .text.*) + *libhal.a:i2c_hal_iram.*(.literal .literal.* .text .text.*) + *libhal.a:ledc_hal_iram.*(.literal .literal.* .text .text.*) + *libhal.a:soc_hal.*(.literal .literal.* .text .text.*) + *libhal.a:spi_flash_encrypt_hal_iram.*(.literal .literal.* .text .text.*) + *libhal.a:spi_flash_hal_iram.*(.literal .literal.* .text .text.*) + *libhal.a:spi_hal_iram.*(.literal .literal.* .text .text.*) + *libhal.a:spi_slave_hal_iram.*(.literal .literal.* .text .text.*) + *libhal.a:wdt_hal_iram.*(.literal .literal.* .text .text.*) + *libheap.a:heap_tlsf.*(.literal .literal.* .text .text.*) + *libheap.a:multi_heap.*(.literal .literal.* .text .text.*) + *libheap.a:multi_heap_poisoning.*(.literal .literal.* .text .text.*) + *liblog.a:log.*(.literal.esp_log_write .text.esp_log_write) + *liblog.a:log_freertos.*(.literal.esp_log_early_timestamp .text.esp_log_early_timestamp) + *liblog.a:log_freertos.*(.literal.esp_log_impl_lock .text.esp_log_impl_lock) + *liblog.a:log_freertos.*(.literal.esp_log_impl_lock_timeout .text.esp_log_impl_lock_timeout) + *liblog.a:log_freertos.*(.literal.esp_log_impl_unlock .text.esp_log_impl_unlock) + *liblog.a:log_freertos.*(.literal.esp_log_timestamp .text.esp_log_timestamp) + *libnewlib.a:abort.*(.literal .literal.* .text .text.*) + *libnewlib.a:assert.*(.literal .literal.* .text .text.*) + *libnewlib.a:heap.*(.literal .literal.* .text .text.*) + *libnewlib.a:stdatomic.*(.literal .literal.* .text .text.*) + *librtc.a:(.literal .literal.* .text .text.*) + *libsoc.a:lldesc.*(.literal .literal.* .text .text.*) + *libspi_flash.a:memspi_host_driver.*(.literal .literal.* .text .text.*) + *libspi_flash.a:spi_flash_chip_boya.*(.literal .literal.* .text .text.*) + *libspi_flash.a:spi_flash_chip_gd.*(.literal .literal.* .text .text.*) + *libspi_flash.a:spi_flash_chip_generic.*(.literal .literal.* .text .text.*) + *libspi_flash.a:spi_flash_chip_issi.*(.literal .literal.* .text .text.*) + *libspi_flash.a:spi_flash_chip_mxic.*(.literal .literal.* .text .text.*) + *libspi_flash.a:spi_flash_chip_th.*(.literal .literal.* .text .text.*) + *libspi_flash.a:spi_flash_chip_winbond.*(.literal .literal.* .text .text.*) + *libspi_flash.a:spi_flash_rom_patch.*(.literal .literal.* .text .text.*) + *libxt_hal.a:(.literal .literal.* .text .text.*) + *libxtensa.a:eri.*(.literal .literal.* .text .text.*) + *libxtensa.a:xtensa_intr_asm.*(.literal .literal.* .text .text.*) + + } > iram0_0_seg + + .dram0.data : + { + _data_start = ABSOLUTE(.); + *(.gnu.linkonce.d.*) + *(.data1) + *(.sdata) + *(.sdata.*) + *(.gnu.linkonce.s.*) + *(.sdata2) + *(.sdata2.*) + *(.gnu.linkonce.s2.*) + *(.jcr) + + _esp_system_init_fn_array_start = ABSOLUTE(.); + KEEP (*(SORT(.esp_system_init_fn) SORT(.esp_system_init_fn.*))) + _esp_system_init_fn_array_end = ABSOLUTE(.); + + *(EXCLUDE_FILE(*libbt.a *libbtdm_app.a *libnimble.a) .data EXCLUDE_FILE(*libbt.a *libbtdm_app.a *libnimble.a) .data.*) + *(.dram1 .dram1.*) + _coredump_dram_start = ABSOLUTE(.); + *(.dram2.coredump .dram2.coredump.*) + _coredump_dram_end = ABSOLUTE(.); + *libapp_trace.a:app_trace.*(.rodata .rodata.*) + *libapp_trace.a:app_trace_util.*(.rodata .rodata.*) + _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(.); + *libc.a:creat.*(.rodata .rodata.*) + *libc.a:isatty.*(.rodata .rodata.*) + *libc.a:lib_a-abs.*(.rodata .rodata.*) + *libc.a:lib_a-asctime.*(.rodata .rodata.*) + *libc.a:lib_a-asctime_r.*(.rodata .rodata.*) + *libc.a:lib_a-atoi.*(.rodata .rodata.*) + *libc.a:lib_a-atol.*(.rodata .rodata.*) + *libc.a:lib_a-bzero.*(.rodata .rodata.*) + *libc.a:lib_a-close.*(.rodata .rodata.*) + *libc.a:lib_a-creat.*(.rodata .rodata.*) + *libc.a:lib_a-ctime.*(.rodata .rodata.*) + *libc.a:lib_a-ctime_r.*(.rodata .rodata.*) + *libc.a:lib_a-ctype_.*(.rodata .rodata.*) + *libc.a:lib_a-div.*(.rodata .rodata.*) + *libc.a:lib_a-environ.*(.rodata .rodata.*) + *libc.a:lib_a-envlock.*(.rodata .rodata.*) + *libc.a:lib_a-fclose.*(.rodata .rodata.*) + *libc.a:lib_a-fflush.*(.rodata .rodata.*) + *libc.a:lib_a-findfp.*(.rodata .rodata.*) + *libc.a:lib_a-fputwc.*(.rodata .rodata.*) + *libc.a:lib_a-fvwrite.*(.rodata .rodata.*) + *libc.a:lib_a-fwalk.*(.rodata .rodata.*) + *libc.a:lib_a-getenv_r.*(.rodata .rodata.*) + *libc.a:lib_a-gettzinfo.*(.rodata .rodata.*) + *libc.a:lib_a-gmtime.*(.rodata .rodata.*) + *libc.a:lib_a-gmtime_r.*(.rodata .rodata.*) + *libc.a:lib_a-impure.*(.rodata .rodata.*) + *libc.a:lib_a-isalnum.*(.rodata .rodata.*) + *libc.a:lib_a-isalpha.*(.rodata .rodata.*) + *libc.a:lib_a-isascii.*(.rodata .rodata.*) + *libc.a:lib_a-isblank.*(.rodata .rodata.*) + *libc.a:lib_a-iscntrl.*(.rodata .rodata.*) + *libc.a:lib_a-isdigit.*(.rodata .rodata.*) + *libc.a:lib_a-isgraph.*(.rodata .rodata.*) + *libc.a:lib_a-islower.*(.rodata .rodata.*) + *libc.a:lib_a-isprint.*(.rodata .rodata.*) + *libc.a:lib_a-ispunct.*(.rodata .rodata.*) + *libc.a:lib_a-isspace.*(.rodata .rodata.*) + *libc.a:lib_a-isupper.*(.rodata .rodata.*) + *libc.a:lib_a-itoa.*(.rodata .rodata.*) + *libc.a:lib_a-labs.*(.rodata .rodata.*) + *libc.a:lib_a-lcltime.*(.rodata .rodata.*) + *libc.a:lib_a-lcltime_r.*(.rodata .rodata.*) + *libc.a:lib_a-ldiv.*(.rodata .rodata.*) + *libc.a:lib_a-longjmp.*(.rodata .rodata.*) + *libc.a:lib_a-makebuf.*(.rodata .rodata.*) + *libc.a:lib_a-memccpy.*(.rodata .rodata.*) + *libc.a:lib_a-memchr.*(.rodata .rodata.*) + *libc.a:lib_a-memcmp.*(.rodata .rodata.*) + *libc.a:lib_a-memcpy.*(.rodata .rodata.*) + *libc.a:lib_a-memmove.*(.rodata .rodata.*) + *libc.a:lib_a-memrchr.*(.rodata .rodata.*) + *libc.a:lib_a-memset.*(.rodata .rodata.*) + *libc.a:lib_a-mktime.*(.rodata .rodata.*) + *libc.a:lib_a-month_lengths.*(.rodata .rodata.*) + *libc.a:lib_a-open.*(.rodata .rodata.*) + *libc.a:lib_a-quorem.*(.rodata .rodata.*) + *libc.a:lib_a-raise.*(.rodata .rodata.*) + *libc.a:lib_a-rand.*(.rodata .rodata.*) + *libc.a:lib_a-rand_r.*(.rodata .rodata.*) + *libc.a:lib_a-read.*(.rodata .rodata.*) + *libc.a:lib_a-refill.*(.rodata .rodata.*) + *libc.a:lib_a-rshift.*(.rodata .rodata.*) + *libc.a:lib_a-s_fpclassify.*(.rodata .rodata.*) + *libc.a:lib_a-sbrk.*(.rodata .rodata.*) + *libc.a:lib_a-sccl.*(.rodata .rodata.*) + *libc.a:lib_a-setjmp.*(.rodata .rodata.*) + *libc.a:lib_a-sf_nan.*(.rodata .rodata.*) + *libc.a:lib_a-srand.*(.rodata .rodata.*) + *libc.a:lib_a-stdio.*(.rodata .rodata.*) + *libc.a:lib_a-strcasecmp.*(.rodata .rodata.*) + *libc.a:lib_a-strcasestr.*(.rodata .rodata.*) + *libc.a:lib_a-strcat.*(.rodata .rodata.*) + *libc.a:lib_a-strchr.*(.rodata .rodata.*) + *libc.a:lib_a-strcmp.*(.rodata .rodata.*) + *libc.a:lib_a-strcoll.*(.rodata .rodata.*) + *libc.a:lib_a-strcpy.*(.rodata .rodata.*) + *libc.a:lib_a-strcspn.*(.rodata .rodata.*) + *libc.a:lib_a-strdup.*(.rodata .rodata.*) + *libc.a:lib_a-strdup_r.*(.rodata .rodata.*) + *libc.a:lib_a-strftime.*(.rodata .rodata.*) + *libc.a:lib_a-strlcat.*(.rodata .rodata.*) + *libc.a:lib_a-strlcpy.*(.rodata .rodata.*) + *libc.a:lib_a-strlen.*(.rodata .rodata.*) + *libc.a:lib_a-strlwr.*(.rodata .rodata.*) + *libc.a:lib_a-strncasecmp.*(.rodata .rodata.*) + *libc.a:lib_a-strncat.*(.rodata .rodata.*) + *libc.a:lib_a-strncmp.*(.rodata .rodata.*) + *libc.a:lib_a-strncpy.*(.rodata .rodata.*) + *libc.a:lib_a-strndup.*(.rodata .rodata.*) + *libc.a:lib_a-strndup_r.*(.rodata .rodata.*) + *libc.a:lib_a-strnlen.*(.rodata .rodata.*) + *libc.a:lib_a-strptime.*(.rodata .rodata.*) + *libc.a:lib_a-strrchr.*(.rodata .rodata.*) + *libc.a:lib_a-strsep.*(.rodata .rodata.*) + *libc.a:lib_a-strspn.*(.rodata .rodata.*) + *libc.a:lib_a-strstr.*(.rodata .rodata.*) + *libc.a:lib_a-strtok_r.*(.rodata .rodata.*) + *libc.a:lib_a-strtol.*(.rodata .rodata.*) + *libc.a:lib_a-strtoul.*(.rodata .rodata.*) + *libc.a:lib_a-strupr.*(.rodata .rodata.*) + *libc.a:lib_a-sysclose.*(.rodata .rodata.*) + *libc.a:lib_a-sysopen.*(.rodata .rodata.*) + *libc.a:lib_a-sysread.*(.rodata .rodata.*) + *libc.a:lib_a-syssbrk.*(.rodata .rodata.*) + *libc.a:lib_a-system.*(.rodata .rodata.*) + *libc.a:lib_a-systimes.*(.rodata .rodata.*) + *libc.a:lib_a-syswrite.*(.rodata .rodata.*) + *libc.a:lib_a-time.*(.rodata .rodata.*) + *libc.a:lib_a-timelocal.*(.rodata .rodata.*) + *libc.a:lib_a-toascii.*(.rodata .rodata.*) + *libc.a:lib_a-tolower.*(.rodata .rodata.*) + *libc.a:lib_a-toupper.*(.rodata .rodata.*) + *libc.a:lib_a-tzcalc_limits.*(.rodata .rodata.*) + *libc.a:lib_a-tzlock.*(.rodata .rodata.*) + *libc.a:lib_a-tzset.*(.rodata .rodata.*) + *libc.a:lib_a-tzset_r.*(.rodata .rodata.*) + *libc.a:lib_a-tzvars.*(.rodata .rodata.*) + *libc.a:lib_a-ungetc.*(.rodata .rodata.*) + *libc.a:lib_a-utoa.*(.rodata .rodata.*) + *libc.a:lib_a-wbuf.*(.rodata .rodata.*) + *libc.a:lib_a-wcrtomb.*(.rodata .rodata.*) + *libc.a:lib_a-wctomb_r.*(.rodata .rodata.*) + *libc.a:lib_a-wsetup.*(.rodata .rodata.*) + *libc.a:lock.*(.rodata .rodata.*) + *libesp_hw_support.a:rtc_clk.*(.rodata .rodata.*) + *libesp_system.a:esp_err.*(.rodata .rodata.*) + *libesp_system.a:ubsan.*(.rodata .rodata.*) + *libgcov.a:(.rodata .rodata.*) + *libhal.a:cpu_hal.*(.rodata .rodata.*) + *libhal.a:i2c_hal_iram.*(.rodata .rodata.*) + *libhal.a:ledc_hal_iram.*(.rodata .rodata.*) + *libhal.a:soc_hal.*(.rodata .rodata.*) + *libhal.a:spi_flash_encrypt_hal_iram.*(.rodata .rodata.*) + *libhal.a:spi_flash_hal_iram.*(.rodata .rodata.*) + *libhal.a:spi_hal_iram.*(.rodata .rodata.*) + *libhal.a:spi_slave_hal_iram.*(.rodata .rodata.*) + *libhal.a:wdt_hal_iram.*(.rodata .rodata.*) + *libheap.a:heap_tlsf.*(.rodata .rodata.*) + *libheap.a:multi_heap.*(.rodata .rodata.*) + *libheap.a:multi_heap_poisoning.*(.rodata .rodata.*) + *libnewlib.a:abort.*(.rodata .rodata.*) + *libnewlib.a:assert.*(.rodata .rodata.*) + *libnewlib.a:heap.*(.rodata .rodata.*) + *libnewlib.a:stdatomic.*(.rodata .rodata.*) + _nimble_data_start = ABSOLUTE(.); + *libnimble.a:(.data .data.*) + . = ALIGN(4); + _nimble_data_end = ABSOLUTE(.); + *libphy.a:(.rodata .rodata.*) + *libsoc.a:lldesc.*(.rodata .rodata.*) + *libspi_flash.a:memspi_host_driver.*(.rodata .rodata.*) + *libspi_flash.a:spi_flash_chip_boya.*(.rodata .rodata.*) + *libspi_flash.a:spi_flash_chip_gd.*(.rodata .rodata.*) + *libspi_flash.a:spi_flash_chip_generic.*(.rodata .rodata.*) + *libspi_flash.a:spi_flash_chip_issi.*(.rodata .rodata.*) + *libspi_flash.a:spi_flash_chip_mxic.*(.rodata .rodata.*) + *libspi_flash.a:spi_flash_chip_th.*(.rodata .rodata.*) + *libspi_flash.a:spi_flash_chip_winbond.*(.rodata .rodata.*) + *libspi_flash.a:spi_flash_rom_patch.*(.rodata .rodata.*) + + INCLUDE vtable_in_dram.ld + + _data_end = ABSOLUTE(.); + . = ALIGN(4); + } > dram0_0_seg + + /** + * This section holds data that won't be initialised when startup. + * This section locates in External RAM region. + */ + .ext_ram_noinit (NOLOAD) : + { + _ext_ram_noinit_start = ABSOLUTE(.); + *(.ext_ram_noinit*) + . = ALIGN(4); + _ext_ram_noinit_end = ABSOLUTE(.); + } > extern_ram_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 + + /* external memory bss, from any global variable with EXT_RAM_ATTR attribute*/ + .ext_ram.bss (NOLOAD) : + { + _ext_ram_bss_start = ABSOLUTE(.); + + + . = ALIGN(4); + _ext_ram_bss_end = ABSOLUTE(.); + } > extern_ram_seg + + /* Shared RAM */ + .dram0.bss (NOLOAD) : + { + . = ALIGN (8); + _bss_start = ABSOLUTE(.); + + *(.bss .bss.*) + *(.ext_ram.bss .ext_ram.bss.*) + *(.dynbss .dynsbss .gnu.linkonce.b .gnu.linkonce.b.* .gnu.linkonce.sb .gnu.linkonce.sb.* .gnu.linkonce.sb2 .gnu.linkonce.sb2.* .sbss .sbss.* .sbss2 .sbss2.* .scommon .share.mem) + *(COMMON) + _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(.); + _nimble_bss_start = ABSOLUTE(.); + *libnimble.a:(.bss .bss.* COMMON) + . = ALIGN(4); + _nimble_bss_end = ABSOLUTE(.); + + . = ALIGN (8); + _bss_end = ABSOLUTE(.); + } > dram0_0_seg + + ASSERT(((_bss_end - ORIGIN(dram0_0_seg)) <= LENGTH(dram0_0_seg)), + "DRAM segment data does not fit.") + + .flash.appdesc : ALIGN(0x10) + { + _rodata_start = ABSOLUTE(.); + + *(.rodata_desc .rodata_desc.*) /* Should be the first. App version info. DO NOT PUT ANYTHING BEFORE IT! */ + *(.rodata_custom_desc .rodata_custom_desc.*) /* Should be the second. Custom app version info. DO NOT PUT ANYTHING BEFORE IT! */ + + /* Create an empty gap within this section. Thanks to this, the end of this + * section will match .flah.rodata's begin address. Thus, both sections + * will be merged when creating the final bin image. */ + . = ALIGN(ALIGNOF(.flash.rodata)); + } >default_rodata_seg + + .flash.rodata : ALIGN(0x10) + { + _flash_rodata_start = ABSOLUTE(.); + + *(EXCLUDE_FILE(*libgcov.a *libphy.a *libapp_trace.a:app_trace.* *libapp_trace.a:app_trace_util.* *libc.a:creat.* *libc.a:isatty.* *libc.a:lib_a-abs.* *libc.a:lib_a-asctime.* *libc.a:lib_a-asctime_r.* *libc.a:lib_a-atoi.* *libc.a:lib_a-atol.* *libc.a:lib_a-bzero.* *libc.a:lib_a-close.* *libc.a:lib_a-creat.* *libc.a:lib_a-ctime.* *libc.a:lib_a-ctime_r.* *libc.a:lib_a-ctype_.* *libc.a:lib_a-div.* *libc.a:lib_a-environ.* *libc.a:lib_a-envlock.* *libc.a:lib_a-fclose.* *libc.a:lib_a-fflush.* *libc.a:lib_a-findfp.* *libc.a:lib_a-fputwc.* *libc.a:lib_a-fvwrite.* *libc.a:lib_a-fwalk.* *libc.a:lib_a-getenv_r.* *libc.a:lib_a-gettzinfo.* *libc.a:lib_a-gmtime.* *libc.a:lib_a-gmtime_r.* *libc.a:lib_a-impure.* *libc.a:lib_a-isalnum.* *libc.a:lib_a-isalpha.* *libc.a:lib_a-isascii.* *libc.a:lib_a-isblank.* *libc.a:lib_a-iscntrl.* *libc.a:lib_a-isdigit.* *libc.a:lib_a-isgraph.* *libc.a:lib_a-islower.* *libc.a:lib_a-isprint.* *libc.a:lib_a-ispunct.* *libc.a:lib_a-isspace.* *libc.a:lib_a-isupper.* *libc.a:lib_a-itoa.* *libc.a:lib_a-labs.* *libc.a:lib_a-lcltime.* *libc.a:lib_a-lcltime_r.* *libc.a:lib_a-ldiv.* *libc.a:lib_a-longjmp.* *libc.a:lib_a-makebuf.* *libc.a:lib_a-memccpy.* *libc.a:lib_a-memchr.* *libc.a:lib_a-memcmp.* *libc.a:lib_a-memcpy.* *libc.a:lib_a-memmove.* *libc.a:lib_a-memrchr.* *libc.a:lib_a-memset.* *libc.a:lib_a-mktime.* *libc.a:lib_a-month_lengths.* *libc.a:lib_a-open.* *libc.a:lib_a-quorem.* *libc.a:lib_a-raise.* *libc.a:lib_a-rand.* *libc.a:lib_a-rand_r.* *libc.a:lib_a-read.* *libc.a:lib_a-refill.* *libc.a:lib_a-rshift.* *libc.a:lib_a-s_fpclassify.* *libc.a:lib_a-sbrk.* *libc.a:lib_a-sccl.* *libc.a:lib_a-setjmp.* *libc.a:lib_a-sf_nan.* *libc.a:lib_a-srand.* *libc.a:lib_a-stdio.* *libc.a:lib_a-strcasecmp.* *libc.a:lib_a-strcasestr.* *libc.a:lib_a-strcat.* *libc.a:lib_a-strchr.* *libc.a:lib_a-strcmp.* *libc.a:lib_a-strcoll.* *libc.a:lib_a-strcpy.* *libc.a:lib_a-strcspn.* *libc.a:lib_a-strdup.* *libc.a:lib_a-strdup_r.* *libc.a:lib_a-strftime.* *libc.a:lib_a-strlcat.* *libc.a:lib_a-strlcpy.* *libc.a:lib_a-strlen.* *libc.a:lib_a-strlwr.* *libc.a:lib_a-strncasecmp.* *libc.a:lib_a-strncat.* *libc.a:lib_a-strncmp.* *libc.a:lib_a-strncpy.* *libc.a:lib_a-strndup.* *libc.a:lib_a-strndup_r.* *libc.a:lib_a-strnlen.* *libc.a:lib_a-strptime.* *libc.a:lib_a-strrchr.* *libc.a:lib_a-strsep.* *libc.a:lib_a-strspn.* *libc.a:lib_a-strstr.* *libc.a:lib_a-strtok_r.* *libc.a:lib_a-strtol.* *libc.a:lib_a-strtoul.* *libc.a:lib_a-strupr.* *libc.a:lib_a-sysclose.* *libc.a:lib_a-sysopen.* *libc.a:lib_a-sysread.* *libc.a:lib_a-syssbrk.* *libc.a:lib_a-system.* *libc.a:lib_a-systimes.* *libc.a:lib_a-syswrite.* *libc.a:lib_a-time.* *libc.a:lib_a-timelocal.* *libc.a:lib_a-toascii.* *libc.a:lib_a-tolower.* *libc.a:lib_a-toupper.* *libc.a:lib_a-tzcalc_limits.* *libc.a:lib_a-tzlock.* *libc.a:lib_a-tzset.* *libc.a:lib_a-tzset_r.* *libc.a:lib_a-tzvars.* *libc.a:lib_a-ungetc.* *libc.a:lib_a-utoa.* *libc.a:lib_a-wbuf.* *libc.a:lib_a-wcrtomb.* *libc.a:lib_a-wctomb_r.* *libc.a:lib_a-wsetup.* *libc.a:lock.* *libesp_hw_support.a:rtc_clk.* *libesp_system.a:esp_err.* *libesp_system.a:ubsan.* *libhal.a:cpu_hal.* *libhal.a:i2c_hal_iram.* *libhal.a:ledc_hal_iram.* *libhal.a:soc_hal.* *libhal.a:spi_flash_encrypt_hal_iram.* *libhal.a:spi_flash_hal_iram.* *libhal.a:spi_hal_iram.* *libhal.a:spi_slave_hal_iram.* *libhal.a:wdt_hal_iram.* *libheap.a:heap_tlsf.* *libheap.a:multi_heap.* *libheap.a:multi_heap_poisoning.* *libnewlib.a:abort.* *libnewlib.a:assert.* *libnewlib.a:heap.* *libnewlib.a:stdatomic.* *libsoc.a:lldesc.* *libspi_flash.a:memspi_host_driver.* *libspi_flash.a:spi_flash_chip_boya.* *libspi_flash.a:spi_flash_chip_gd.* *libspi_flash.a:spi_flash_chip_generic.* *libspi_flash.a:spi_flash_chip_issi.* *libspi_flash.a:spi_flash_chip_mxic.* *libspi_flash.a:spi_flash_chip_th.* *libspi_flash.a:spi_flash_chip_winbond.* *libspi_flash.a:spi_flash_rom_patch.*) .rodata EXCLUDE_FILE(*libgcov.a *libphy.a *libapp_trace.a:app_trace.* *libapp_trace.a:app_trace_util.* *libc.a:creat.* *libc.a:isatty.* *libc.a:lib_a-abs.* *libc.a:lib_a-asctime.* *libc.a:lib_a-asctime_r.* *libc.a:lib_a-atoi.* *libc.a:lib_a-atol.* *libc.a:lib_a-bzero.* *libc.a:lib_a-close.* *libc.a:lib_a-creat.* *libc.a:lib_a-ctime.* *libc.a:lib_a-ctime_r.* *libc.a:lib_a-ctype_.* *libc.a:lib_a-div.* *libc.a:lib_a-environ.* *libc.a:lib_a-envlock.* *libc.a:lib_a-fclose.* *libc.a:lib_a-fflush.* *libc.a:lib_a-findfp.* *libc.a:lib_a-fputwc.* *libc.a:lib_a-fvwrite.* *libc.a:lib_a-fwalk.* *libc.a:lib_a-getenv_r.* *libc.a:lib_a-gettzinfo.* *libc.a:lib_a-gmtime.* *libc.a:lib_a-gmtime_r.* *libc.a:lib_a-impure.* *libc.a:lib_a-isalnum.* *libc.a:lib_a-isalpha.* *libc.a:lib_a-isascii.* *libc.a:lib_a-isblank.* *libc.a:lib_a-iscntrl.* *libc.a:lib_a-isdigit.* *libc.a:lib_a-isgraph.* *libc.a:lib_a-islower.* *libc.a:lib_a-isprint.* *libc.a:lib_a-ispunct.* *libc.a:lib_a-isspace.* *libc.a:lib_a-isupper.* *libc.a:lib_a-itoa.* *libc.a:lib_a-labs.* *libc.a:lib_a-lcltime.* *libc.a:lib_a-lcltime_r.* *libc.a:lib_a-ldiv.* *libc.a:lib_a-longjmp.* *libc.a:lib_a-makebuf.* *libc.a:lib_a-memccpy.* *libc.a:lib_a-memchr.* *libc.a:lib_a-memcmp.* *libc.a:lib_a-memcpy.* *libc.a:lib_a-memmove.* *libc.a:lib_a-memrchr.* *libc.a:lib_a-memset.* *libc.a:lib_a-mktime.* *libc.a:lib_a-month_lengths.* *libc.a:lib_a-open.* *libc.a:lib_a-quorem.* *libc.a:lib_a-raise.* *libc.a:lib_a-rand.* *libc.a:lib_a-rand_r.* *libc.a:lib_a-read.* *libc.a:lib_a-refill.* *libc.a:lib_a-rshift.* *libc.a:lib_a-s_fpclassify.* *libc.a:lib_a-sbrk.* *libc.a:lib_a-sccl.* *libc.a:lib_a-setjmp.* *libc.a:lib_a-sf_nan.* *libc.a:lib_a-srand.* *libc.a:lib_a-stdio.* *libc.a:lib_a-strcasecmp.* *libc.a:lib_a-strcasestr.* *libc.a:lib_a-strcat.* *libc.a:lib_a-strchr.* *libc.a:lib_a-strcmp.* *libc.a:lib_a-strcoll.* *libc.a:lib_a-strcpy.* *libc.a:lib_a-strcspn.* *libc.a:lib_a-strdup.* *libc.a:lib_a-strdup_r.* *libc.a:lib_a-strftime.* *libc.a:lib_a-strlcat.* *libc.a:lib_a-strlcpy.* *libc.a:lib_a-strlen.* *libc.a:lib_a-strlwr.* *libc.a:lib_a-strncasecmp.* *libc.a:lib_a-strncat.* *libc.a:lib_a-strncmp.* *libc.a:lib_a-strncpy.* *libc.a:lib_a-strndup.* *libc.a:lib_a-strndup_r.* *libc.a:lib_a-strnlen.* *libc.a:lib_a-strptime.* *libc.a:lib_a-strrchr.* *libc.a:lib_a-strsep.* *libc.a:lib_a-strspn.* *libc.a:lib_a-strstr.* *libc.a:lib_a-strtok_r.* *libc.a:lib_a-strtol.* *libc.a:lib_a-strtoul.* *libc.a:lib_a-strupr.* *libc.a:lib_a-sysclose.* *libc.a:lib_a-sysopen.* *libc.a:lib_a-sysread.* *libc.a:lib_a-syssbrk.* *libc.a:lib_a-system.* *libc.a:lib_a-systimes.* *libc.a:lib_a-syswrite.* *libc.a:lib_a-time.* *libc.a:lib_a-timelocal.* *libc.a:lib_a-toascii.* *libc.a:lib_a-tolower.* *libc.a:lib_a-toupper.* *libc.a:lib_a-tzcalc_limits.* *libc.a:lib_a-tzlock.* *libc.a:lib_a-tzset.* *libc.a:lib_a-tzset_r.* *libc.a:lib_a-tzvars.* *libc.a:lib_a-ungetc.* *libc.a:lib_a-utoa.* *libc.a:lib_a-wbuf.* *libc.a:lib_a-wcrtomb.* *libc.a:lib_a-wctomb_r.* *libc.a:lib_a-wsetup.* *libc.a:lock.* *libesp_hw_support.a:rtc_clk.* *libesp_system.a:esp_err.* *libesp_system.a:ubsan.* *libhal.a:cpu_hal.* *libhal.a:i2c_hal_iram.* *libhal.a:ledc_hal_iram.* *libhal.a:soc_hal.* *libhal.a:spi_flash_encrypt_hal_iram.* *libhal.a:spi_flash_hal_iram.* *libhal.a:spi_hal_iram.* *libhal.a:spi_slave_hal_iram.* *libhal.a:wdt_hal_iram.* *libheap.a:heap_tlsf.* *libheap.a:multi_heap.* *libheap.a:multi_heap_poisoning.* *libnewlib.a:abort.* *libnewlib.a:assert.* *libnewlib.a:heap.* *libnewlib.a:stdatomic.* *libsoc.a:lldesc.* *libspi_flash.a:memspi_host_driver.* *libspi_flash.a:spi_flash_chip_boya.* *libspi_flash.a:spi_flash_chip_gd.* *libspi_flash.a:spi_flash_chip_generic.* *libspi_flash.a:spi_flash_chip_issi.* *libspi_flash.a:spi_flash_chip_mxic.* *libspi_flash.a:spi_flash_chip_th.* *libspi_flash.a:spi_flash_chip_winbond.* *libspi_flash.a:spi_flash_rom_patch.*) .rodata.*) + *(.rodata_wlog_error .rodata_wlog_error.*) + + + *(.irom1.text) /* catch stray ICACHE_RODATA_ATTR */ + *(.gnu.linkonce.r.*) + *(.rodata1) + __XT_EXCEPTION_TABLE_ = ABSOLUTE(.); + *(.xt_except_table) + *(.gcc_except_table .gcc_except_table.*) + *(.gnu.linkonce.e.*) + *(.gnu.version_r) + . = (. + 3) & ~ 3; + __eh_frame = ABSOLUTE(.); + KEEP(*(.eh_frame)) + . = (. + 7) & ~ 3; + /* C++ constructor and destructor tables + + Make a point of not including anything from crtbegin.o or crtend.o, as IDF doesn't use toolchain crt + */ + __init_array_start = ABSOLUTE(.); + KEEP (*(EXCLUDE_FILE (*crtend.* *crtbegin.*) .ctors SORT(.ctors.*))) + __init_array_end = ABSOLUTE(.); + + KEEP (*crtbegin.*(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.*) .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) + /* 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(.); + _rodata_end = ABSOLUTE(.); + /* Literals are also RO data. */ + _lit4_start = ABSOLUTE(.); + *(*.lit4) + *(.lit4.*) + *(.gnu.linkonce.lit4.*) + _lit4_end = ABSOLUTE(.); + . = ALIGN(4); + _thread_local_start = ABSOLUTE(.); + *(.tdata) + *(.tdata.*) + *(.tbss) + *(.tbss.*) + _thread_local_end = ABSOLUTE(.); + . = ALIGN(4); + } >default_rodata_seg + + _flash_rodata_align = ALIGNOF(.flash.rodata); + + .flash.rodata_noload (NOLOAD) : + { + . = ALIGN (4); + *(.rodata_wlog_debug .rodata_wlog_debug.*) + *(.rodata_wlog_info .rodata_wlog_info.*) + *(.rodata_wlog_verbose .rodata_wlog_verbose.*) + *(.rodata_wlog_warning .rodata_wlog_warning.*) + } > default_rodata_seg + + .flash.text : + { + _stext = .; + _text_start = ABSOLUTE(.); + + *(EXCLUDE_FILE(*libesp_ringbuf.a *libfreertos.a *libgcov.a *librtc.a *libxt_hal.a *libapp_trace.a:app_trace.* *libapp_trace.a:app_trace_util.* *libc.a:creat.* *libc.a:isatty.* *libc.a:lib_a-abs.* *libc.a:lib_a-asctime.* *libc.a:lib_a-asctime_r.* *libc.a:lib_a-atoi.* *libc.a:lib_a-atol.* *libc.a:lib_a-bzero.* *libc.a:lib_a-close.* *libc.a:lib_a-creat.* *libc.a:lib_a-ctime.* *libc.a:lib_a-ctime_r.* *libc.a:lib_a-ctype_.* *libc.a:lib_a-div.* *libc.a:lib_a-environ.* *libc.a:lib_a-envlock.* *libc.a:lib_a-fclose.* *libc.a:lib_a-fflush.* *libc.a:lib_a-findfp.* *libc.a:lib_a-fputwc.* *libc.a:lib_a-fvwrite.* *libc.a:lib_a-fwalk.* *libc.a:lib_a-getenv_r.* *libc.a:lib_a-gettzinfo.* *libc.a:lib_a-gmtime.* *libc.a:lib_a-gmtime_r.* *libc.a:lib_a-impure.* *libc.a:lib_a-isalnum.* *libc.a:lib_a-isalpha.* *libc.a:lib_a-isascii.* *libc.a:lib_a-isblank.* *libc.a:lib_a-iscntrl.* *libc.a:lib_a-isdigit.* *libc.a:lib_a-isgraph.* *libc.a:lib_a-islower.* *libc.a:lib_a-isprint.* *libc.a:lib_a-ispunct.* *libc.a:lib_a-isspace.* *libc.a:lib_a-isupper.* *libc.a:lib_a-itoa.* *libc.a:lib_a-labs.* *libc.a:lib_a-lcltime.* *libc.a:lib_a-lcltime_r.* *libc.a:lib_a-ldiv.* *libc.a:lib_a-longjmp.* *libc.a:lib_a-makebuf.* *libc.a:lib_a-memccpy.* *libc.a:lib_a-memchr.* *libc.a:lib_a-memcmp.* *libc.a:lib_a-memcpy.* *libc.a:lib_a-memmove.* *libc.a:lib_a-memrchr.* *libc.a:lib_a-memset.* *libc.a:lib_a-mktime.* *libc.a:lib_a-month_lengths.* *libc.a:lib_a-open.* *libc.a:lib_a-quorem.* *libc.a:lib_a-raise.* *libc.a:lib_a-rand.* *libc.a:lib_a-rand_r.* *libc.a:lib_a-read.* *libc.a:lib_a-refill.* *libc.a:lib_a-rshift.* *libc.a:lib_a-s_fpclassify.* *libc.a:lib_a-sbrk.* *libc.a:lib_a-sccl.* *libc.a:lib_a-setjmp.* *libc.a:lib_a-sf_nan.* *libc.a:lib_a-srand.* *libc.a:lib_a-stdio.* *libc.a:lib_a-strcasecmp.* *libc.a:lib_a-strcasestr.* *libc.a:lib_a-strcat.* *libc.a:lib_a-strchr.* *libc.a:lib_a-strcmp.* *libc.a:lib_a-strcoll.* *libc.a:lib_a-strcpy.* *libc.a:lib_a-strcspn.* *libc.a:lib_a-strdup.* *libc.a:lib_a-strdup_r.* *libc.a:lib_a-strftime.* *libc.a:lib_a-strlcat.* *libc.a:lib_a-strlcpy.* *libc.a:lib_a-strlen.* *libc.a:lib_a-strlwr.* *libc.a:lib_a-strncasecmp.* *libc.a:lib_a-strncat.* *libc.a:lib_a-strncmp.* *libc.a:lib_a-strncpy.* *libc.a:lib_a-strndup.* *libc.a:lib_a-strndup_r.* *libc.a:lib_a-strnlen.* *libc.a:lib_a-strptime.* *libc.a:lib_a-strrchr.* *libc.a:lib_a-strsep.* *libc.a:lib_a-strspn.* *libc.a:lib_a-strstr.* *libc.a:lib_a-strtok_r.* *libc.a:lib_a-strtol.* *libc.a:lib_a-strtoul.* *libc.a:lib_a-strupr.* *libc.a:lib_a-sysclose.* *libc.a:lib_a-sysopen.* *libc.a:lib_a-sysread.* *libc.a:lib_a-syssbrk.* *libc.a:lib_a-system.* *libc.a:lib_a-systimes.* *libc.a:lib_a-syswrite.* *libc.a:lib_a-time.* *libc.a:lib_a-timelocal.* *libc.a:lib_a-toascii.* *libc.a:lib_a-tolower.* *libc.a:lib_a-toupper.* *libc.a:lib_a-tzcalc_limits.* *libc.a:lib_a-tzlock.* *libc.a:lib_a-tzset.* *libc.a:lib_a-tzset_r.* *libc.a:lib_a-tzvars.* *libc.a:lib_a-ungetc.* *libc.a:lib_a-utoa.* *libc.a:lib_a-wbuf.* *libc.a:lib_a-wcrtomb.* *libc.a:lib_a-wctomb_r.* *libc.a:lib_a-wsetup.* *libc.a:lock.* *libesp_event.a:default_event_loop.* *libesp_event.a:esp_event.* *libesp_hw_support.a:cpu_util.* *libesp_hw_support.a:rtc_clk.* *libesp_hw_support.a:rtc_init.* *libesp_hw_support.a:rtc_pm.* *libesp_hw_support.a:rtc_sleep.* *libesp_hw_support.a:rtc_time.* *libesp_hw_support.a:rtc_wdt.* *libesp_system.a:esp_err.* *libesp_system.a:esp_system.* *libesp_system.a:ubsan.* *libgcc.a:lib2funcs.* *libhal.a:cpu_hal.* *libhal.a:i2c_hal_iram.* *libhal.a:ledc_hal_iram.* *libhal.a:soc_hal.* *libhal.a:spi_flash_encrypt_hal_iram.* *libhal.a:spi_flash_hal_iram.* *libhal.a:spi_hal_iram.* *libhal.a:spi_slave_hal_iram.* *libhal.a:wdt_hal_iram.* *libheap.a:heap_tlsf.* *libheap.a:multi_heap.* *libheap.a:multi_heap_poisoning.* *liblog.a:log.* *liblog.a:log_freertos.* *libnewlib.a:abort.* *libnewlib.a:assert.* *libnewlib.a:heap.* *libnewlib.a:stdatomic.* *libsoc.a:lldesc.* *libspi_flash.a:memspi_host_driver.* *libspi_flash.a:spi_flash_chip_boya.* *libspi_flash.a:spi_flash_chip_gd.* *libspi_flash.a:spi_flash_chip_generic.* *libspi_flash.a:spi_flash_chip_issi.* *libspi_flash.a:spi_flash_chip_mxic.* *libspi_flash.a:spi_flash_chip_th.* *libspi_flash.a:spi_flash_chip_winbond.* *libspi_flash.a:spi_flash_rom_patch.* *libxtensa.a:eri.* *libxtensa.a:xtensa_intr_asm.*) .literal EXCLUDE_FILE(*libesp_ringbuf.a *libfreertos.a *libgcov.a *librtc.a *libxt_hal.a *libapp_trace.a:app_trace.* *libapp_trace.a:app_trace_util.* *libc.a:creat.* *libc.a:isatty.* *libc.a:lib_a-abs.* *libc.a:lib_a-asctime.* *libc.a:lib_a-asctime_r.* *libc.a:lib_a-atoi.* *libc.a:lib_a-atol.* *libc.a:lib_a-bzero.* *libc.a:lib_a-close.* *libc.a:lib_a-creat.* *libc.a:lib_a-ctime.* *libc.a:lib_a-ctime_r.* *libc.a:lib_a-ctype_.* *libc.a:lib_a-div.* *libc.a:lib_a-environ.* *libc.a:lib_a-envlock.* *libc.a:lib_a-fclose.* *libc.a:lib_a-fflush.* *libc.a:lib_a-findfp.* *libc.a:lib_a-fputwc.* *libc.a:lib_a-fvwrite.* *libc.a:lib_a-fwalk.* *libc.a:lib_a-getenv_r.* *libc.a:lib_a-gettzinfo.* *libc.a:lib_a-gmtime.* *libc.a:lib_a-gmtime_r.* *libc.a:lib_a-impure.* *libc.a:lib_a-isalnum.* *libc.a:lib_a-isalpha.* *libc.a:lib_a-isascii.* *libc.a:lib_a-isblank.* *libc.a:lib_a-iscntrl.* *libc.a:lib_a-isdigit.* *libc.a:lib_a-isgraph.* *libc.a:lib_a-islower.* *libc.a:lib_a-isprint.* *libc.a:lib_a-ispunct.* *libc.a:lib_a-isspace.* *libc.a:lib_a-isupper.* *libc.a:lib_a-itoa.* *libc.a:lib_a-labs.* *libc.a:lib_a-lcltime.* *libc.a:lib_a-lcltime_r.* *libc.a:lib_a-ldiv.* *libc.a:lib_a-longjmp.* *libc.a:lib_a-makebuf.* *libc.a:lib_a-memccpy.* *libc.a:lib_a-memchr.* *libc.a:lib_a-memcmp.* *libc.a:lib_a-memcpy.* *libc.a:lib_a-memmove.* *libc.a:lib_a-memrchr.* *libc.a:lib_a-memset.* *libc.a:lib_a-mktime.* *libc.a:lib_a-month_lengths.* *libc.a:lib_a-open.* *libc.a:lib_a-quorem.* *libc.a:lib_a-raise.* *libc.a:lib_a-rand.* *libc.a:lib_a-rand_r.* *libc.a:lib_a-read.* *libc.a:lib_a-refill.* *libc.a:lib_a-rshift.* *libc.a:lib_a-s_fpclassify.* *libc.a:lib_a-sbrk.* *libc.a:lib_a-sccl.* *libc.a:lib_a-setjmp.* *libc.a:lib_a-sf_nan.* *libc.a:lib_a-srand.* *libc.a:lib_a-stdio.* *libc.a:lib_a-strcasecmp.* *libc.a:lib_a-strcasestr.* *libc.a:lib_a-strcat.* *libc.a:lib_a-strchr.* *libc.a:lib_a-strcmp.* *libc.a:lib_a-strcoll.* *libc.a:lib_a-strcpy.* *libc.a:lib_a-strcspn.* *libc.a:lib_a-strdup.* *libc.a:lib_a-strdup_r.* *libc.a:lib_a-strftime.* *libc.a:lib_a-strlcat.* *libc.a:lib_a-strlcpy.* *libc.a:lib_a-strlen.* *libc.a:lib_a-strlwr.* *libc.a:lib_a-strncasecmp.* *libc.a:lib_a-strncat.* *libc.a:lib_a-strncmp.* *libc.a:lib_a-strncpy.* *libc.a:lib_a-strndup.* *libc.a:lib_a-strndup_r.* *libc.a:lib_a-strnlen.* *libc.a:lib_a-strptime.* *libc.a:lib_a-strrchr.* *libc.a:lib_a-strsep.* *libc.a:lib_a-strspn.* *libc.a:lib_a-strstr.* *libc.a:lib_a-strtok_r.* *libc.a:lib_a-strtol.* *libc.a:lib_a-strtoul.* *libc.a:lib_a-strupr.* *libc.a:lib_a-sysclose.* *libc.a:lib_a-sysopen.* *libc.a:lib_a-sysread.* *libc.a:lib_a-syssbrk.* *libc.a:lib_a-system.* *libc.a:lib_a-systimes.* *libc.a:lib_a-syswrite.* *libc.a:lib_a-time.* *libc.a:lib_a-timelocal.* *libc.a:lib_a-toascii.* *libc.a:lib_a-tolower.* *libc.a:lib_a-toupper.* *libc.a:lib_a-tzcalc_limits.* *libc.a:lib_a-tzlock.* *libc.a:lib_a-tzset.* *libc.a:lib_a-tzset_r.* *libc.a:lib_a-tzvars.* *libc.a:lib_a-ungetc.* *libc.a:lib_a-utoa.* *libc.a:lib_a-wbuf.* *libc.a:lib_a-wcrtomb.* *libc.a:lib_a-wctomb_r.* *libc.a:lib_a-wsetup.* *libc.a:lock.* *libesp_event.a:default_event_loop.* *libesp_event.a:esp_event.* *libesp_hw_support.a:cpu_util.* *libesp_hw_support.a:rtc_clk.* *libesp_hw_support.a:rtc_init.* *libesp_hw_support.a:rtc_pm.* *libesp_hw_support.a:rtc_sleep.* *libesp_hw_support.a:rtc_time.* *libesp_hw_support.a:rtc_wdt.* *libesp_system.a:esp_err.* *libesp_system.a:esp_system.* *libesp_system.a:ubsan.* *libgcc.a:lib2funcs.* *libhal.a:cpu_hal.* *libhal.a:i2c_hal_iram.* *libhal.a:ledc_hal_iram.* *libhal.a:soc_hal.* *libhal.a:spi_flash_encrypt_hal_iram.* *libhal.a:spi_flash_hal_iram.* *libhal.a:spi_hal_iram.* *libhal.a:spi_slave_hal_iram.* *libhal.a:wdt_hal_iram.* *libheap.a:heap_tlsf.* *libheap.a:multi_heap.* *libheap.a:multi_heap_poisoning.* *liblog.a:log.* *liblog.a:log_freertos.* *libnewlib.a:abort.* *libnewlib.a:assert.* *libnewlib.a:heap.* *libnewlib.a:stdatomic.* *libsoc.a:lldesc.* *libspi_flash.a:memspi_host_driver.* *libspi_flash.a:spi_flash_chip_boya.* *libspi_flash.a:spi_flash_chip_gd.* *libspi_flash.a:spi_flash_chip_generic.* *libspi_flash.a:spi_flash_chip_issi.* *libspi_flash.a:spi_flash_chip_mxic.* *libspi_flash.a:spi_flash_chip_th.* *libspi_flash.a:spi_flash_chip_winbond.* *libspi_flash.a:spi_flash_rom_patch.* *libxtensa.a:eri.* *libxtensa.a:xtensa_intr_asm.*) .literal.* EXCLUDE_FILE(*libesp_ringbuf.a *libfreertos.a *libgcov.a *librtc.a *libxt_hal.a *libapp_trace.a:app_trace.* *libapp_trace.a:app_trace_util.* *libc.a:creat.* *libc.a:isatty.* *libc.a:lib_a-abs.* *libc.a:lib_a-asctime.* *libc.a:lib_a-asctime_r.* *libc.a:lib_a-atoi.* *libc.a:lib_a-atol.* *libc.a:lib_a-bzero.* *libc.a:lib_a-close.* *libc.a:lib_a-creat.* *libc.a:lib_a-ctime.* *libc.a:lib_a-ctime_r.* *libc.a:lib_a-ctype_.* *libc.a:lib_a-div.* *libc.a:lib_a-environ.* *libc.a:lib_a-envlock.* *libc.a:lib_a-fclose.* *libc.a:lib_a-fflush.* *libc.a:lib_a-findfp.* *libc.a:lib_a-fputwc.* *libc.a:lib_a-fvwrite.* *libc.a:lib_a-fwalk.* *libc.a:lib_a-getenv_r.* *libc.a:lib_a-gettzinfo.* *libc.a:lib_a-gmtime.* *libc.a:lib_a-gmtime_r.* *libc.a:lib_a-impure.* *libc.a:lib_a-isalnum.* *libc.a:lib_a-isalpha.* *libc.a:lib_a-isascii.* *libc.a:lib_a-isblank.* *libc.a:lib_a-iscntrl.* *libc.a:lib_a-isdigit.* *libc.a:lib_a-isgraph.* *libc.a:lib_a-islower.* *libc.a:lib_a-isprint.* *libc.a:lib_a-ispunct.* *libc.a:lib_a-isspace.* *libc.a:lib_a-isupper.* *libc.a:lib_a-itoa.* *libc.a:lib_a-labs.* *libc.a:lib_a-lcltime.* *libc.a:lib_a-lcltime_r.* *libc.a:lib_a-ldiv.* *libc.a:lib_a-longjmp.* *libc.a:lib_a-makebuf.* *libc.a:lib_a-memccpy.* *libc.a:lib_a-memchr.* *libc.a:lib_a-memcmp.* *libc.a:lib_a-memcpy.* *libc.a:lib_a-memmove.* *libc.a:lib_a-memrchr.* *libc.a:lib_a-memset.* *libc.a:lib_a-mktime.* *libc.a:lib_a-month_lengths.* *libc.a:lib_a-open.* *libc.a:lib_a-quorem.* *libc.a:lib_a-raise.* *libc.a:lib_a-rand.* *libc.a:lib_a-rand_r.* *libc.a:lib_a-read.* *libc.a:lib_a-refill.* *libc.a:lib_a-rshift.* *libc.a:lib_a-s_fpclassify.* *libc.a:lib_a-sbrk.* *libc.a:lib_a-sccl.* *libc.a:lib_a-setjmp.* *libc.a:lib_a-sf_nan.* *libc.a:lib_a-srand.* *libc.a:lib_a-stdio.* *libc.a:lib_a-strcasecmp.* *libc.a:lib_a-strcasestr.* *libc.a:lib_a-strcat.* *libc.a:lib_a-strchr.* *libc.a:lib_a-strcmp.* *libc.a:lib_a-strcoll.* *libc.a:lib_a-strcpy.* *libc.a:lib_a-strcspn.* *libc.a:lib_a-strdup.* *libc.a:lib_a-strdup_r.* *libc.a:lib_a-strftime.* *libc.a:lib_a-strlcat.* *libc.a:lib_a-strlcpy.* *libc.a:lib_a-strlen.* *libc.a:lib_a-strlwr.* *libc.a:lib_a-strncasecmp.* *libc.a:lib_a-strncat.* *libc.a:lib_a-strncmp.* *libc.a:lib_a-strncpy.* *libc.a:lib_a-strndup.* *libc.a:lib_a-strndup_r.* *libc.a:lib_a-strnlen.* *libc.a:lib_a-strptime.* *libc.a:lib_a-strrchr.* *libc.a:lib_a-strsep.* *libc.a:lib_a-strspn.* *libc.a:lib_a-strstr.* *libc.a:lib_a-strtok_r.* *libc.a:lib_a-strtol.* *libc.a:lib_a-strtoul.* *libc.a:lib_a-strupr.* *libc.a:lib_a-sysclose.* *libc.a:lib_a-sysopen.* *libc.a:lib_a-sysread.* *libc.a:lib_a-syssbrk.* *libc.a:lib_a-system.* *libc.a:lib_a-systimes.* *libc.a:lib_a-syswrite.* *libc.a:lib_a-time.* *libc.a:lib_a-timelocal.* *libc.a:lib_a-toascii.* *libc.a:lib_a-tolower.* *libc.a:lib_a-toupper.* *libc.a:lib_a-tzcalc_limits.* *libc.a:lib_a-tzlock.* *libc.a:lib_a-tzset.* *libc.a:lib_a-tzset_r.* *libc.a:lib_a-tzvars.* *libc.a:lib_a-ungetc.* *libc.a:lib_a-utoa.* *libc.a:lib_a-wbuf.* *libc.a:lib_a-wcrtomb.* *libc.a:lib_a-wctomb_r.* *libc.a:lib_a-wsetup.* *libc.a:lock.* *libesp_event.a:default_event_loop.* *libesp_event.a:esp_event.* *libesp_hw_support.a:cpu_util.* *libesp_hw_support.a:rtc_clk.* *libesp_hw_support.a:rtc_init.* *libesp_hw_support.a:rtc_pm.* *libesp_hw_support.a:rtc_sleep.* *libesp_hw_support.a:rtc_time.* *libesp_hw_support.a:rtc_wdt.* *libesp_system.a:esp_err.* *libesp_system.a:esp_system.* *libesp_system.a:ubsan.* *libgcc.a:lib2funcs.* *libhal.a:cpu_hal.* *libhal.a:i2c_hal_iram.* *libhal.a:ledc_hal_iram.* *libhal.a:soc_hal.* *libhal.a:spi_flash_encrypt_hal_iram.* *libhal.a:spi_flash_hal_iram.* *libhal.a:spi_hal_iram.* *libhal.a:spi_slave_hal_iram.* *libhal.a:wdt_hal_iram.* *libheap.a:heap_tlsf.* *libheap.a:multi_heap.* *libheap.a:multi_heap_poisoning.* *liblog.a:log.* *liblog.a:log_freertos.* *libnewlib.a:abort.* *libnewlib.a:assert.* *libnewlib.a:heap.* *libnewlib.a:stdatomic.* *libsoc.a:lldesc.* *libspi_flash.a:memspi_host_driver.* *libspi_flash.a:spi_flash_chip_boya.* *libspi_flash.a:spi_flash_chip_gd.* *libspi_flash.a:spi_flash_chip_generic.* *libspi_flash.a:spi_flash_chip_issi.* *libspi_flash.a:spi_flash_chip_mxic.* *libspi_flash.a:spi_flash_chip_th.* *libspi_flash.a:spi_flash_chip_winbond.* *libspi_flash.a:spi_flash_rom_patch.* *libxtensa.a:eri.* *libxtensa.a:xtensa_intr_asm.*) .text EXCLUDE_FILE(*libesp_ringbuf.a *libfreertos.a *libgcov.a *librtc.a *libxt_hal.a *libapp_trace.a:app_trace.* *libapp_trace.a:app_trace_util.* *libc.a:creat.* *libc.a:isatty.* *libc.a:lib_a-abs.* *libc.a:lib_a-asctime.* *libc.a:lib_a-asctime_r.* *libc.a:lib_a-atoi.* *libc.a:lib_a-atol.* *libc.a:lib_a-bzero.* *libc.a:lib_a-close.* *libc.a:lib_a-creat.* *libc.a:lib_a-ctime.* *libc.a:lib_a-ctime_r.* *libc.a:lib_a-ctype_.* *libc.a:lib_a-div.* *libc.a:lib_a-environ.* *libc.a:lib_a-envlock.* *libc.a:lib_a-fclose.* *libc.a:lib_a-fflush.* *libc.a:lib_a-findfp.* *libc.a:lib_a-fputwc.* *libc.a:lib_a-fvwrite.* *libc.a:lib_a-fwalk.* *libc.a:lib_a-getenv_r.* *libc.a:lib_a-gettzinfo.* *libc.a:lib_a-gmtime.* *libc.a:lib_a-gmtime_r.* *libc.a:lib_a-impure.* *libc.a:lib_a-isalnum.* *libc.a:lib_a-isalpha.* *libc.a:lib_a-isascii.* *libc.a:lib_a-isblank.* *libc.a:lib_a-iscntrl.* *libc.a:lib_a-isdigit.* *libc.a:lib_a-isgraph.* *libc.a:lib_a-islower.* *libc.a:lib_a-isprint.* *libc.a:lib_a-ispunct.* *libc.a:lib_a-isspace.* *libc.a:lib_a-isupper.* *libc.a:lib_a-itoa.* *libc.a:lib_a-labs.* *libc.a:lib_a-lcltime.* *libc.a:lib_a-lcltime_r.* *libc.a:lib_a-ldiv.* *libc.a:lib_a-longjmp.* *libc.a:lib_a-makebuf.* *libc.a:lib_a-memccpy.* *libc.a:lib_a-memchr.* *libc.a:lib_a-memcmp.* *libc.a:lib_a-memcpy.* *libc.a:lib_a-memmove.* *libc.a:lib_a-memrchr.* *libc.a:lib_a-memset.* *libc.a:lib_a-mktime.* *libc.a:lib_a-month_lengths.* *libc.a:lib_a-open.* *libc.a:lib_a-quorem.* *libc.a:lib_a-raise.* *libc.a:lib_a-rand.* *libc.a:lib_a-rand_r.* *libc.a:lib_a-read.* *libc.a:lib_a-refill.* *libc.a:lib_a-rshift.* *libc.a:lib_a-s_fpclassify.* *libc.a:lib_a-sbrk.* *libc.a:lib_a-sccl.* *libc.a:lib_a-setjmp.* *libc.a:lib_a-sf_nan.* *libc.a:lib_a-srand.* *libc.a:lib_a-stdio.* *libc.a:lib_a-strcasecmp.* *libc.a:lib_a-strcasestr.* *libc.a:lib_a-strcat.* *libc.a:lib_a-strchr.* *libc.a:lib_a-strcmp.* *libc.a:lib_a-strcoll.* *libc.a:lib_a-strcpy.* *libc.a:lib_a-strcspn.* *libc.a:lib_a-strdup.* *libc.a:lib_a-strdup_r.* *libc.a:lib_a-strftime.* *libc.a:lib_a-strlcat.* *libc.a:lib_a-strlcpy.* *libc.a:lib_a-strlen.* *libc.a:lib_a-strlwr.* *libc.a:lib_a-strncasecmp.* *libc.a:lib_a-strncat.* *libc.a:lib_a-strncmp.* *libc.a:lib_a-strncpy.* *libc.a:lib_a-strndup.* *libc.a:lib_a-strndup_r.* *libc.a:lib_a-strnlen.* *libc.a:lib_a-strptime.* *libc.a:lib_a-strrchr.* *libc.a:lib_a-strsep.* *libc.a:lib_a-strspn.* *libc.a:lib_a-strstr.* *libc.a:lib_a-strtok_r.* *libc.a:lib_a-strtol.* *libc.a:lib_a-strtoul.* *libc.a:lib_a-strupr.* *libc.a:lib_a-sysclose.* *libc.a:lib_a-sysopen.* *libc.a:lib_a-sysread.* *libc.a:lib_a-syssbrk.* *libc.a:lib_a-system.* *libc.a:lib_a-systimes.* *libc.a:lib_a-syswrite.* *libc.a:lib_a-time.* *libc.a:lib_a-timelocal.* *libc.a:lib_a-toascii.* *libc.a:lib_a-tolower.* *libc.a:lib_a-toupper.* *libc.a:lib_a-tzcalc_limits.* *libc.a:lib_a-tzlock.* *libc.a:lib_a-tzset.* *libc.a:lib_a-tzset_r.* *libc.a:lib_a-tzvars.* *libc.a:lib_a-ungetc.* *libc.a:lib_a-utoa.* *libc.a:lib_a-wbuf.* *libc.a:lib_a-wcrtomb.* *libc.a:lib_a-wctomb_r.* *libc.a:lib_a-wsetup.* *libc.a:lock.* *libesp_event.a:default_event_loop.* *libesp_event.a:esp_event.* *libesp_hw_support.a:cpu_util.* *libesp_hw_support.a:rtc_clk.* *libesp_hw_support.a:rtc_init.* *libesp_hw_support.a:rtc_pm.* *libesp_hw_support.a:rtc_sleep.* *libesp_hw_support.a:rtc_time.* *libesp_hw_support.a:rtc_wdt.* *libesp_system.a:esp_err.* *libesp_system.a:esp_system.* *libesp_system.a:ubsan.* *libgcc.a:lib2funcs.* *libhal.a:cpu_hal.* *libhal.a:i2c_hal_iram.* *libhal.a:ledc_hal_iram.* *libhal.a:soc_hal.* *libhal.a:spi_flash_encrypt_hal_iram.* *libhal.a:spi_flash_hal_iram.* *libhal.a:spi_hal_iram.* *libhal.a:spi_slave_hal_iram.* *libhal.a:wdt_hal_iram.* *libheap.a:heap_tlsf.* *libheap.a:multi_heap.* *libheap.a:multi_heap_poisoning.* *liblog.a:log.* *liblog.a:log_freertos.* *libnewlib.a:abort.* *libnewlib.a:assert.* *libnewlib.a:heap.* *libnewlib.a:stdatomic.* *libsoc.a:lldesc.* *libspi_flash.a:memspi_host_driver.* *libspi_flash.a:spi_flash_chip_boya.* *libspi_flash.a:spi_flash_chip_gd.* *libspi_flash.a:spi_flash_chip_generic.* *libspi_flash.a:spi_flash_chip_issi.* *libspi_flash.a:spi_flash_chip_mxic.* *libspi_flash.a:spi_flash_chip_th.* *libspi_flash.a:spi_flash_chip_winbond.* *libspi_flash.a:spi_flash_rom_patch.* *libxtensa.a:eri.* *libxtensa.a:xtensa_intr_asm.*) .text.*) + *(.wifi0iram .wifi0iram.*) + *(.wifiorslpiram .wifiorslpiram.*) + *(.wifirxiram .wifirxiram.*) + *(.wifislpiram .wifislpiram.*) + *(.wifislprxiram .wifislprxiram.*) + *libesp_event.a:default_event_loop.*(.literal.esp_event_handler_instance_register .literal.esp_event_handler_instance_unregister .literal.esp_event_handler_register .literal.esp_event_handler_unregister .literal.esp_event_loop_create_default .literal.esp_event_loop_delete_default .literal.esp_event_post .literal.esp_event_send_to_default_loop .text .text.esp_event_handler_instance_register .text.esp_event_handler_instance_unregister .text.esp_event_handler_register .text.esp_event_handler_unregister .text.esp_event_loop_create_default .text.esp_event_loop_delete_default .text.esp_event_post .text.esp_event_send_to_default_loop) + *libesp_event.a:esp_event.*(.literal.base_node_add_handler .literal.esp_event_handler_instance_register_with .literal.esp_event_handler_instance_unregister_with .literal.esp_event_handler_register_with .literal.esp_event_handler_register_with_internal .literal.esp_event_handler_unregister_with .literal.esp_event_handler_unregister_with_internal .literal.esp_event_loop_create .literal.esp_event_loop_delete .literal.esp_event_loop_run .literal.esp_event_loop_run_task .literal.esp_event_post_to .literal.handler_instances_add .literal.handler_instances_remove .literal.handler_instances_remove_all$isra$1 .literal.loop_node_add_handler .text .text.base_node_add_handler .text.esp_event_dump .text.esp_event_handler_instance_register_with .text.esp_event_handler_instance_unregister_with .text.esp_event_handler_register_with .text.esp_event_handler_register_with_internal .text.esp_event_handler_unregister_with .text.esp_event_handler_unregister_with_internal .text.esp_event_loop_create .text.esp_event_loop_delete .text.esp_event_loop_run .text.esp_event_loop_run_task .text.esp_event_post_to .text.handler_instances_add .text.handler_instances_remove .text.handler_instances_remove_all$isra$1 .text.loop_node_add_handler) + *libesp_hw_support.a:rtc_init.*(.literal.rtc_init .literal.rtc_vddsdio_get_config .text .text.rtc_init .text.rtc_vddsdio_get_config) + *libesp_system.a:esp_system.*(.literal.esp_get_free_heap_size .literal.esp_get_free_internal_heap_size .literal.esp_get_idf_version .literal.esp_get_minimum_free_heap_size .literal.esp_register_shutdown_handler .literal.esp_unregister_shutdown_handler .text .text.esp_get_free_heap_size .text.esp_get_free_internal_heap_size .text.esp_get_idf_version .text.esp_get_minimum_free_heap_size .text.esp_register_shutdown_handler .text.esp_unregister_shutdown_handler) + *libfreertos.a:port.*(.literal.esp_startup_start_app .text.esp_startup_start_app) + *libfreertos.a:port.*(.literal.esp_startup_start_app_other_cores .text.esp_startup_start_app_other_cores) + *libfreertos.a:port_common.*(.literal.main_task .text.main_task) + *liblog.a:log.*(.literal.esp_log_level_get .literal.esp_log_level_set .literal.esp_log_set_vprintf .literal.esp_log_writev .literal.heap_bubble_down .literal.s_log_level_get_and_unlock .text .text.esp_log_level_get .text.esp_log_level_set .text.esp_log_set_vprintf .text.esp_log_writev .text.heap_bubble_down .text.s_log_level_get_and_unlock) + *liblog.a:log_freertos.*(.literal.esp_log_system_timestamp .text .text.esp_log_system_timestamp) + + *(.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) + + /** CPU will try to prefetch up to 16 bytes of + * of instructions. This means that any configuration (e.g. MMU, PMS) must allow + * safe access to up to 16 bytes after the last real instruction, add + * dummy bytes to ensure this + */ + . += _esp_flash_mmap_prefetch_pad_size; + + _text_end = ABSOLUTE(.); + _etext = .; + + /* 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); + } >default_code_seg + + /* Marks the end of IRAM code segment */ + .iram0.text_end (NOLOAD) : + { + . = ALIGN (4); + _iram_text_end = ABSOLUTE(.); + } > iram0_0_seg + + .iram0.data : + { + . = ALIGN(4); + _iram_data_start = ABSOLUTE(.); + + *(.iram.data .iram.data.*) + _coredump_iram_start = ABSOLUTE(.); + *(.iram2.coredump .iram2.coredump.*) + _coredump_iram_end = ABSOLUTE(.); + + _iram_data_end = ABSOLUTE(.); + } > iram0_0_seg + + .iram0.bss (NOLOAD) : + { + . = ALIGN(4); + _iram_bss_start = ABSOLUTE(.); + + *(.iram.bss .iram.bss.*) + + _iram_bss_end = ABSOLUTE(.); + . = ALIGN(4); + _iram_end = ABSOLUTE(.); + } > iram0_0_seg + + /* Marks the end of data, bss and possibly rodata */ + .dram0.heap_start (NOLOAD) : + { + . = ALIGN (8); + _heap_start = ABSOLUTE(.); + } > dram0_0_seg +} + +ASSERT(((_iram_end - ORIGIN(iram0_0_seg)) <= LENGTH(iram0_0_seg)), + "IRAM0 segment data does not fit.") + +ASSERT(((_heap_start - ORIGIN(dram0_0_seg)) <= LENGTH(dram0_0_seg)), + "DRAM segment data does not fit.") diff --git a/FluidNC/ld/esp32/vtable_in_dram.ld b/FluidNC/ld/esp32/vtable_in_dram.ld index 55ed0bffe..92b234c67 100644 --- a/FluidNC/ld/esp32/vtable_in_dram.ld +++ b/FluidNC/ld/esp32/vtable_in_dram.ld @@ -13,8 +13,10 @@ *NullMotor.cpp.o(.rodata .rodata.* .xt.prop .xt.prop.*) *RcServo.cpp.o(.rodata .rodata.* .xt.prop .xt.prop.*) *Servo.cpp.o(.rodata .rodata.* .xt.prop .xt.prop.*) + *Solenoid.cpp.o(.rodata .rodata.* .xt.prop .xt.prop.*) *StandardStepper.cpp.o(.rodata .rodata.* .xt.prop .xt.prop.*) *StepStick.cpp.o(.rodata .rodata.* .xt.prop .xt.prop.*) + *TMC*Driver.cpp.o(.rodata .rodata.* .xt.prop .xt.prop.*) *TrinamicBase.cpp.o(.rodata .rodata.* .xt.prop .xt.prop.*) *TrinamicSpiDriver.cpp.o(.rodata .rodata.* .xt.prop .xt.prop.*) *TrinamicUartDriver.cpp.o(.rodata .rodata.* .xt.prop .xt.prop.*) diff --git a/FluidNC/src/Configuration/Parser.cpp b/FluidNC/src/Configuration/Parser.cpp index 84209382d..e23b7368e 100644 --- a/FluidNC/src/Configuration/Parser.cpp +++ b/FluidNC/src/Configuration/Parser.cpp @@ -53,7 +53,7 @@ namespace Configuration { } float fvalue; if (str.isFloat(fvalue)) { - return int(round(fvalue)); + return lroundf(fvalue); } parseError("Expected an integer value"); return 0; diff --git a/FluidNC/src/GCode.cpp b/FluidNC/src/GCode.cpp index 18b7fbdd3..dfb1593fe 100644 --- a/FluidNC/src/GCode.cpp +++ b/FluidNC/src/GCode.cpp @@ -161,17 +161,26 @@ Error gc_execute_line(char* line, Channel& channel) { size_t axis_words = 0; // XYZ tracking size_t ijk_words = 0; // IJK tracking // Initialize command and value words and parser flags variables. - uint32_t command_words = 0; // Tracks G and M command words. Also used for modal group violations. - uint32_t value_words = 0; // Tracks value words. - uint8_t gc_parser_flags = GCParserNone; - auto n_axis = config->_axes->_numberAxis; - float coord_data[MAX_N_AXIS]; // Used by WCO-related commands - uint8_t pValue; // Integer value of P word + uint32_t command_words = 0; // Tracks G and M command words. Also used for modal group violations. + uint32_t value_words = 0; // Tracks value words. + + bool jogMotion = false; + bool checkMantissa = false; + bool clockwiseArc = false; + bool probeAway = false; + bool probeNoError = false; + bool syncLaser = false; + bool disableLaser = false; + bool laserIsMotion = false; + + auto n_axis = config->_axes->_numberAxis; + float coord_data[MAX_N_AXIS]; // Used by WCO-related commands + uint8_t pValue; // Integer value of P word // Determine if the line is a jogging motion or a normal g-code block. if (line[0] == '$') { // NOTE: `$J=` already parsed when passed to this function. // Set G1 and G94 enforced modes to ensure accurate error checks. - gc_parser_flags |= GCParserJogMotion; + jogMotion = true; gc_block.modal.motion = Motion::Linear; gc_block.modal.feed_rate = FeedRate::UnitsPerMin; if (config->_useLineNumbers) { @@ -191,12 +200,8 @@ Error gc_execute_line(char* line, Channel& channel) { float value; uint8_t int_value = 0; uint16_t mantissa = 0; - if (gc_parser_flags & GCParserJogMotion) { - char_counter = 3; // Start parsing after `$J=` - } else { - char_counter = 0; - } - while (line[char_counter] != 0) { // Loop until no more g-code words in line. + char_counter = jogMotion ? 3 : 0; // Start parsing after `$J=` if jogging + while (line[char_counter] != 0) { // Loop until no more g-code words in line. // Import the next g-code word, expecting a letter followed by a value. Otherwise, error out. letter = line[char_counter]; if ((letter < 'A') || (letter > 'Z')) { @@ -213,8 +218,8 @@ Error gc_execute_line(char* line, Channel& channel) { // a good enough compromise and catch most all non-integer errors. To make it compliant, // we would simply need to change the mantissa to int16, but this add compiled flash space. // Maybe update this later. - int_value = int8_t(trunc(value)); - mantissa = int16_t(round(100 * (value - int_value))); // Compute mantissa for Gxx.x commands. + int_value = int8_t(truncf(value)); + mantissa = lroundf(100 * (value - int_value)); // Compute mantissa for Gxx.x commands. // NOTE: Rounding must be used to catch small floating point errors. // Check if the g-code word is supported or errors due to modal group violations or has // been repeated in the g-code block. If ok, update the command or record its value. @@ -646,7 +651,7 @@ Error gc_execute_line(char* line, Channel& channel) { break; case 'N': axis_word_bit = GCodeWord::N; - gc_block.values.n = int32_t(trunc(value)); + gc_block.values.n = int32_t(truncf(value)); break; case 'P': axis_word_bit = GCodeWord::P; @@ -771,7 +776,7 @@ Error gc_execute_line(char* line, Channel& channel) { // [2. Set feed rate mode ]: G93 F word missing with G1,G2/3 active, implicitly or explicitly. Feed rate // is not defined after switching to G94 from G93. // NOTE: For jogging, ignore prior feed rate mode. Enforce G94 and check for required F word. - if (gc_parser_flags & GCParserJogMotion) { + if (jogMotion) { if (bitnum_is_false(value_words, GCodeWord::F)) { FAIL(Error::GcodeUndefinedFeedRate); } @@ -946,7 +951,7 @@ Error gc_execute_line(char* line, Channel& channel) { } } // Select the coordinate system based on the P word - pValue = int8_t(trunc(gc_block.values.p)); // Convert p value to integer + pValue = int8_t(truncf(gc_block.values.p)); // Convert p value to integer if (pValue > 0) { // P1 means G54, P2 means G55, etc. coord_select = static_cast(pValue - 1 + int(CoordIndex::G54)); @@ -1102,7 +1107,7 @@ Error gc_execute_line(char* line, Channel& channel) { } break; case Motion::CwArc: - gc_parser_flags |= GCParserArcIsClockwise; // No break intentional. + clockwiseArc = true; // No break intentional. case Motion::CcwArc: // [G2/3 Errors All-Modes]: Feed rate undefined. // [G2/3 Radius-Mode Errors]: No axis words in selected plane. Target point is same as current. @@ -1247,11 +1252,11 @@ Error gc_execute_line(char* line, Channel& channel) { break; case Motion::ProbeTowardNoError: case Motion::ProbeAwayNoError: - gc_parser_flags |= GCParserProbeIsNoError; // No break intentional. + probeNoError = true; // No break intentional. case Motion::ProbeToward: case Motion::ProbeAway: if ((gc_block.modal.motion == Motion::ProbeAway) || (gc_block.modal.motion == Motion::ProbeAwayNoError)) { - gc_parser_flags |= GCParserProbeIsAway; + probeAway = true; } // [G38 Errors]: Target is same current. No axis words. Cutter compensation is enabled. Feed rate // is undefined. Probe is triggered. NOTE: Probe check moved to probe cycle. Instead of returning @@ -1279,7 +1284,7 @@ Error gc_execute_line(char* line, Channel& channel) { // [21. Program flow ]: No error checks required. // [0. Non-specific error-checks]: Complete unused value words check, i.e. IJK used when in arc // radius mode, or axis words that aren't used in the block. - if (gc_parser_flags & GCParserJogMotion) { + if (jogMotion) { // Jogging only uses the F feed rate and XYZ value words. N is valid, but S and T are invalid. clear_bits(value_words, (bitnum_to_mask(GCodeWord::N) | bitnum_to_mask(GCodeWord::F))); } else { @@ -1308,7 +1313,7 @@ Error gc_execute_line(char* line, Channel& channel) { // NOTE: G-code parser state is not updated, except the position to ensure sequential jog // targets are computed correctly. The final parser position after a jog is updated in // protocol_execute_realtime() when jogging completes or is canceled. - if (gc_parser_flags & GCParserJogMotion) { + if (jogMotion) { // Only distance and unit modal commands and G53 absolute override command are allowed. // NOTE: Feed rate word and axis word checks have already been performed in STEP 3. if (command_words & ~(bitnum_to_mask(ModalGroup::MG3) | bitnum_to_mask(ModalGroup::MG6) | bitnum_to_mask(ModalGroup::MG0))) { @@ -1331,29 +1336,37 @@ Error gc_execute_line(char* line, Channel& channel) { } // If in laser mode, setup laser power based on current and past parser conditions. if (spindle->isRateAdjusted()) { - if (!((gc_block.modal.motion == Motion::Linear) || (gc_block.modal.motion == Motion::CwArc) || - (gc_block.modal.motion == Motion::CcwArc))) { - if (gc_state.modal.spindle == SpindleState::Ccw) - gc_parser_flags |= GCParserLaserDisable; + bool blockIsFeedrateMotion = (gc_block.modal.motion == Motion::Linear) || (gc_block.modal.motion == Motion::CwArc) || + (gc_block.modal.motion == Motion::CcwArc); + bool stateIsFeedrateMotion = (gc_state.modal.motion == Motion::Linear) || (gc_state.modal.motion == Motion::CwArc) || + (gc_state.modal.motion == Motion::CcwArc); + + if (!blockIsFeedrateMotion) { + // If the new mode is not a feedrate move (G1/2/3) we want the laser off + disableLaser = true; + // If we are changing from a feedrate move to a non-feedrate move, + // we must sync the planner and then update the laser state + if (stateIsFeedrateMotion) { + syncLaser = true; + } } // Any motion mode with axis words is allowed to be passed from a spindle speed update. // NOTE: G1 and G0 without axis words sets axis_command to none. G28/30 are intentionally omitted. // TODO: Check sync conditions for M3 enabled motions that don't enter the planner. (zero length). - if (axis_words && (axis_command == AxisCommand::MotionMode)) { - gc_parser_flags |= GCParserLaserIsMotion; + if (blockIsFeedrateMotion && axis_words && (axis_command == AxisCommand::MotionMode)) { + laserIsMotion = true; } else { // M3 constant power laser requires planner syncs to update the laser when changing between // a G1/2/3 motion mode state and vice versa when there is no motion in the line. if (gc_state.modal.spindle == SpindleState::Cw) { - if ((gc_state.modal.motion == Motion::Linear) || (gc_state.modal.motion == Motion::CwArc) || - (gc_state.modal.motion == Motion::CcwArc)) { - if (bits_are_true(gc_parser_flags, GCParserLaserDisable)) { - gc_parser_flags |= GCParserLaserForceSync; // Change from G1/2/3 motion mode. + if (stateIsFeedrateMotion) { + if (disableLaser) { + syncLaser = true; // Change from G1/2/3 motion mode. } } else { // When changing to a G1 motion mode without axis words from a non-G1/2/3 motion mode. - if (bits_are_false(gc_parser_flags, GCParserLaserDisable)) { - gc_parser_flags |= GCParserLaserForceSync; + if (!disableLaser) { + syncLaser = true; } } } @@ -1374,16 +1387,12 @@ Error gc_execute_line(char* line, Channel& channel) { gc_state.feed_rate = gc_block.values.f; // Always copy this value. See feed rate error-checking. pl_data->feed_rate = gc_state.feed_rate; // Record data for planner use. // [4. Set spindle speed ]: - if ((gc_state.spindle_speed != gc_block.values.s) || bits_are_true(gc_parser_flags, GCParserLaserForceSync)) { + if ((gc_state.spindle_speed != gc_block.values.s) || syncLaser) { if (gc_state.modal.spindle != SpindleState::Disable) { - if (bits_are_false(gc_parser_flags, GCParserLaserIsMotion)) { + if (!laserIsMotion) { if (sys.state != State::CheckMode) { protocol_buffer_synchronize(); - if (bits_are_true(gc_parser_flags, GCParserLaserDisable)) { - spindle->setState(gc_state.modal.spindle, 0); - } else { - spindle->setState(gc_state.modal.spindle, (uint32_t)gc_block.values.s); - } + spindle->setState(gc_state.modal.spindle, disableLaser ? 0 : (uint32_t)gc_block.values.s); report_ovr_counter = 0; // Set to report change immediately } } @@ -1391,7 +1400,7 @@ Error gc_execute_line(char* line, Channel& channel) { gc_state.spindle_speed = gc_block.values.s; // Update spindle speed state. } // NOTE: Pass zero spindle speed for all restricted laser motions. - if (bits_are_false(gc_parser_flags, GCParserLaserDisable)) { + if (!disableLaser) { pl_data->spindle_speed = gc_state.spindle_speed; // Record data for planner use. } // else { pl_data->spindle_speed = 0.0; } // Initialized as zero already. // [5. Select tool ]: NOT SUPPORTED. Only tracks tool value. @@ -1408,8 +1417,8 @@ Error gc_execute_line(char* line, Channel& channel) { if (sys.state != State::CheckMode) { protocol_buffer_synchronize(); spindle->setState(gc_block.modal.spindle, (uint32_t)pl_data->spindle_speed); - report_ovr_counter = 0; // Set to report change immediately } + report_ovr_counter = 0; // Set to report change immediately gc_state.modal.spindle = gc_block.modal.spindle; } pl_data->spindle = gc_state.modal.spindle; @@ -1577,14 +1586,14 @@ Error gc_execute_line(char* line, Channel& channel) { axis_0, axis_1, axis_linear, - bits_are_true(gc_parser_flags, GCParserArcIsClockwise)); + clockwiseArc); } else { // NOTE: gc_block.values.xyz is returned from mc_probe_cycle with the updated position value. So // upon a successful probing cycle, the machine position and the returned value should be the same. if (!ALLOW_FEED_OVERRIDE_DURING_PROBE_CYCLES) { pl_data->motion.noFeedOverride = 1; } - gc_update_pos = mc_probe_cycle(gc_block.values.xyz, pl_data, gc_parser_flags, axis_words, gc_block.values.p); + gc_update_pos = mc_probe_cycle(gc_block.values.xyz, pl_data, probeAway, probeNoError, axis_words, gc_block.values.p); } // As far as the parser is concerned, the position is now == target. In reality the // motion control system might still be processing the action and the real tool position diff --git a/FluidNC/src/GCode.h b/FluidNC/src/GCode.h index 2faec7339..f49557bcf 100644 --- a/FluidNC/src/GCode.h +++ b/FluidNC/src/GCode.h @@ -202,19 +202,6 @@ enum class GCUpdatePos : uint8_t { None = 2, }; -// GCode parser flags for handling special cases. -enum GCParserFlags { - GCParserNone = 0, // Must be zero. - GCParserJogMotion = bitnum_to_mask(0), - GCParserCheckMantissa = bitnum_to_mask(1), - GCParserArcIsClockwise = bitnum_to_mask(2), - GCParserProbeIsAway = bitnum_to_mask(3), - GCParserProbeIsNoError = bitnum_to_mask(4), - GCParserLaserForceSync = bitnum_to_mask(5), - GCParserLaserDisable = bitnum_to_mask(6), // disable laser when motion stops - GCParserLaserIsMotion = bitnum_to_mask(7), // -}; - // Various places in the code access saved coordinate system data // by a small integer index according to the values below. enum CoordIndex : uint8_t { diff --git a/FluidNC/src/MotionControl.cpp b/FluidNC/src/MotionControl.cpp index 7c9524f07..49298bfcd 100644 --- a/FluidNC/src/MotionControl.cpp +++ b/FluidNC/src/MotionControl.cpp @@ -291,7 +291,7 @@ bool probe_succeeded = false; // Perform tool length probe cycle. Requires probe switch. // NOTE: Upon probe failure, the program will be stopped and placed into ALARM state. -GCUpdatePos mc_probe_cycle(float* target, plan_line_data_t* pl_data, uint8_t parser_flags, uint8_t offsetAxis, float offset) { +GCUpdatePos mc_probe_cycle(float* target, plan_line_data_t* pl_data, bool away, bool no_error, uint8_t offsetAxis, float offset) { if (!config->_probe->exists()) { log_error("Probe pin is not configured"); return GCUpdatePos::None; @@ -309,10 +309,8 @@ GCUpdatePos mc_probe_cycle(float* target, plan_line_data_t* pl_data, uint8_t par config->_stepping->beginLowLatency(); // Initialize probing control variables - bool is_probe_away = bits_are_true(parser_flags, GCParserProbeIsAway); - bool is_no_error = bits_are_true(parser_flags, GCParserProbeIsNoError); - probe_succeeded = false; // Re-initialize probe history before beginning cycle. - config->_probe->set_direction(is_probe_away); + probe_succeeded = false; // Re-initialize probe history before beginning cycle. + config->_probe->set_direction(away); // After syncing, check if probe is already triggered. If so, halt and issue alarm. // NOTE: This probe initialization error applies to all probing cycles. if (config->_probe->tripped()) { @@ -341,7 +339,7 @@ GCUpdatePos mc_probe_cycle(float* target, plan_line_data_t* pl_data, uint8_t par // Probing cycle complete! // Set state variables and error out, if the probe failed and cycle with error is enabled. if (probeState == ProbeState::Active) { - if (is_no_error) { + if (no_error) { copyAxes(probe_steps, get_motor_steps()); } else { rtAlarm = ExecAlarm::ProbeFailContact; diff --git a/FluidNC/src/MotionControl.h b/FluidNC/src/MotionControl.h index b420e9264..eaebb68be 100644 --- a/FluidNC/src/MotionControl.h +++ b/FluidNC/src/MotionControl.h @@ -50,7 +50,7 @@ bool mc_dwell(int32_t milliseconds); void mc_homing_cycle(AxisMask cycle_mask); // Perform tool length probe cycle. Requires probe switch. -GCUpdatePos mc_probe_cycle(float* target, plan_line_data_t* pl_data, uint8_t parser_flags, uint8_t offsetAxis = 0, float offset = 0.0); +GCUpdatePos mc_probe_cycle(float* target, plan_line_data_t* pl_data, bool away, bool no_error, uint8_t offsetAxis, float offset); // Handles updating the override control state. void mc_override_ctrl_update(Override override_state); diff --git a/FluidNC/src/Motors/Dynamixel2.cpp b/FluidNC/src/Motors/Dynamixel2.cpp index 45b042fc2..700c48f7a 100644 --- a/FluidNC/src/Motors/Dynamixel2.cpp +++ b/FluidNC/src/Motors/Dynamixel2.cpp @@ -187,8 +187,8 @@ namespace MotorDrivers { auto axis = config->_axes->_axis[_axis_index]; - uint32_t pos_min_steps = lround(mpos_to_steps(limitsMinPosition(_axis_index), _axis_index)); - uint32_t pos_max_steps = lround(mpos_to_steps(limitsMaxPosition(_axis_index), _axis_index)); + uint32_t pos_min_steps = mpos_to_steps(limitsMinPosition(_axis_index), _axis_index); + uint32_t pos_max_steps = mpos_to_steps(limitsMaxPosition(_axis_index), _axis_index); uint32_t temp = myMap(dxl_position, _countMin, _countMax, pos_min_steps, pos_max_steps); diff --git a/FluidNC/src/Planner.cpp b/FluidNC/src/Planner.cpp index 0adb95586..fededfafe 100644 --- a/FluidNC/src/Planner.cpp +++ b/FluidNC/src/Planner.cpp @@ -314,7 +314,7 @@ bool plan_buffer_line(float* target, plan_line_data_t* pl_data) { // Calculate target position in absolute steps, number of steps for each axis, and determine max step events. // Also, compute individual axes distance for move and prep unit vector calculations. // NOTE: Computes true distance from converted step values. - target_steps[idx] = lround(mpos_to_steps(target[idx], idx)); + target_steps[idx] = mpos_to_steps(target[idx], idx); block->steps[idx] = labs(target_steps[idx] - position_steps[idx]); block->step_event_count = MAX(block->step_event_count, block->steps[idx]); delta_mm = steps_to_mpos((target_steps[idx] - position_steps[idx]), idx); diff --git a/FluidNC/src/System.cpp b/FluidNC/src/System.cpp index cf567d4b1..00c038bed 100644 --- a/FluidNC/src/System.cpp +++ b/FluidNC/src/System.cpp @@ -12,6 +12,7 @@ #include "Machine/MachineConfig.h" // config #include // memset +#include // roundf // Declare system global variable structure system_t sys; @@ -34,7 +35,7 @@ float steps_to_mpos(int32_t steps, size_t axis) { return float(steps / config->_axes->_axis[axis]->_stepsPerMm); } int32_t mpos_to_steps(float mpos, size_t axis) { - return int32_t(mpos * config->_axes->_axis[axis]->_stepsPerMm); + return lroundf(mpos * config->_axes->_axis[axis]->_stepsPerMm); } void motor_steps_to_mpos(float* position, int32_t* steps) { diff --git a/fluidterm/fluidterm.exe b/fluidterm/fluidterm.exe index 62143e9c7..c05935ade 100644 Binary files a/fluidterm/fluidterm.exe and b/fluidterm/fluidterm.exe differ diff --git a/fluidterm/fluidterm.py b/fluidterm/fluidterm.py index f03a08665..1a99fb98a 100644 --- a/fluidterm/fluidterm.py +++ b/fluidterm/fluidterm.py @@ -9,6 +9,8 @@ from __future__ import absolute_import +VERSION = 'v1.2.0' + import codecs import os from re import split @@ -234,6 +236,9 @@ def cancel(self): hwnd = ctypes.windll.kernel32.GetConsoleWindow() ctypes.windll.user32.PostMessageA(hwnd, 0x100, 0x0d, 0) + def clear_screen(self): + os.system('cls'); + elif os.name == 'posix': import atexit import termios @@ -252,6 +257,7 @@ def __init__(self): def setup(self): new = termios.tcgetattr(self.fd) + new[0] = new[0] & ~termios.IXON new[3] = new[3] & ~termios.ICANON & ~termios.ECHO & ~termios.ISIG new[6][termios.VMIN] = 1 new[6][termios.VTIME] = 0 @@ -269,6 +275,9 @@ def cancel(self): def cleanup(self): termios.tcsetattr(self.fd, termios.TCSAFLUSH, self.old) + def clear_screen(self): + self.write('\x1b[2J') + else: raise NotImplementedError( 'Sorry no implementation for your platform ({}) available.'.format(sys.platform)) @@ -703,11 +712,13 @@ def writer(self): for c in data: if not self.alive: break + if c == '\x17': # CTRL+W -> clear screen + self.console.clear_screen() if c == '\x15': # CTRL+U -> upload file with XModem self.upload_xmodem() elif c == '\x12': # CTRL+R -> reset FluidNC self.reset_fluidnc() - elif c == self.exit_character or c == self.exit_character2: + elif c == self.exit_character or c == self.exit_character2 or c == unichr(3): self.stop() # exit app break else: @@ -1325,9 +1336,9 @@ def main(default_port=None, default_baudrate=115200, default_rts=None, default_d miniterm.set_tx_encoding(args.serial_port_encoding) if not args.quiet: - sys.stderr.write('--- Fluidterm on {p.name} {p.baudrate},{p.bytesize},{p.parity},{p.stopbits} ---\n'.format( + sys.stderr.write('--- FluidTerm ' + VERSION + ' on {p.name} {p.baudrate},{p.bytesize},{p.parity},{p.stopbits} ---\n'.format( p=miniterm.serial)) - sys.stderr.write('--- Quit: {} or {} | Upload: {} | Reset: {} ---\n'.format( + sys.stderr.write('--- Quit: {} or {} | Upload: {} | Reset: {} | ClearScreen: Ctrl+W ---\n'.format( key_description(miniterm.exit_character), key_description(miniterm.exit_character2), key_description('\x15'),