From 7f307423c156776b546639be95510d12af8effbb Mon Sep 17 00:00:00 2001 From: Angus Gratton Date: Tue, 22 Jan 2019 11:49:17 +0800 Subject: [PATCH] newlib: Provide library name for ROM libc object files linked as PSRAM workarounds Works around bug reported on forums where any source file ending in *lock.c or *creat.c was being linked to IRAM. https://esp32.com/viewtopic.php?f=13&t=8909&p=37362#p37362 Also moves all related functionality to newlib component. --- components/esp32/ld/esp32.common.ld.in | 4 +- .../ld/esp32.spiram.rom-functions-dram.ld | 143 ----------------- .../ld/esp32.spiram.rom-functions-iram.ld | 144 ----------------- components/newlib/CMakeLists.txt | 4 +- components/newlib/component.mk | 2 +- .../newlib/esp32-spiram-rom-functions.lf | 148 ++++++++++++++++++ .../api-guides/linker-script-generation.rst | 2 - tools/ldgen/samples/template.ld | 2 - tools/ldgen/test/data/template.ld | 2 - 9 files changed, 153 insertions(+), 298 deletions(-) delete mode 100644 components/esp32/ld/esp32.spiram.rom-functions-dram.ld delete mode 100644 components/esp32/ld/esp32.spiram.rom-functions-iram.ld create mode 100644 components/newlib/esp32-spiram-rom-functions.lf diff --git a/components/esp32/ld/esp32.common.ld.in b/components/esp32/ld/esp32.common.ld.in index 7426dcb88..6b10c8694 100644 --- a/components/esp32/ld/esp32.common.ld.in +++ b/components/esp32/ld/esp32.common.ld.in @@ -159,8 +159,7 @@ SECTIONS _iram_text_start = ABSOLUTE(.); mapping[iram0_text] - - INCLUDE esp32.spiram.rom-functions-iram.ld + _iram_text_end = ABSOLUTE(.); _iram_end = ABSOLUTE(.); } > iram0_0_seg @@ -191,7 +190,6 @@ SECTIONS mapping[dram0_data] - INCLUDE esp32.spiram.rom-functions-dram.ld _data_end = ABSOLUTE(.); . = ALIGN(4); } > dram0_0_seg diff --git a/components/esp32/ld/esp32.spiram.rom-functions-dram.ld b/components/esp32/ld/esp32.spiram.rom-functions-dram.ld deleted file mode 100644 index da59bc09c..000000000 --- a/components/esp32/ld/esp32.spiram.rom-functions-dram.ld +++ /dev/null @@ -1,143 +0,0 @@ -/* - If the Newlib functions in ROM aren't used (eg because the external SPI RAM workaround is active), these functions will - be linked into the application directly instead. Normally, they would end up in flash, which is undesirable because esp-idf - and/or applications may assume that because these functions normally are in ROM, they are accessible even when flash is - inaccessible. To work around this, this ld fragment places these functions in RAM instead. If the ROM functions are used, - these defines do nothing, so they can still be included in that situation. - - This file is responsible for placing the rodata segment in DRAM. -*/ - - *lib_a-utoa.o(.rodata .rodata.*) - *lib_a-longjmp.o(.rodata .rodata.*) - *lib_a-setjmp.o(.rodata .rodata.*) - *lib_a-abs.o(.rodata .rodata.*) - *lib_a-div.o(.rodata .rodata.*) - *lib_a-labs.o(.rodata .rodata.*) - *lib_a-ldiv.o(.rodata .rodata.*) - *lib_a-quorem.o(.rodata .rodata.*) - *lib_a-qsort.o(.rodata .rodata.*) - *lib_a-utoa.o(.rodata .rodata.*) - *lib_a-itoa.o(.rodata .rodata.*) - *lib_a-atoi.o(.rodata .rodata.*) - *lib_a-atol.o(.rodata .rodata.*) - *lib_a-strtol.o(.rodata .rodata.*) - *lib_a-strtoul.o(.rodata .rodata.*) - *lib_a-wcrtomb.o(.rodata .rodata.*) - *lib_a-fvwrite.o(.rodata .rodata.*) - *lib_a-wbuf.o(.rodata .rodata.*) - *lib_a-wsetup.o(.rodata .rodata.*) - *lib_a-fputwc.o(.rodata .rodata.*) - *lib_a-wctomb_r.o(.rodata .rodata.*) - *lib_a-ungetc.o(.rodata .rodata.*) - *lib_a-makebuf.o(.rodata .rodata.*) - *lib_a-fflush.o(.rodata .rodata.*) - *lib_a-refill.o(.rodata .rodata.*) - *lib_a-s_fpclassify.o(.rodata .rodata.*) - *lib_a-locale.o(.rodata .rodata.*) - *lib_a-asctime.o(.rodata .rodata.*) - *lib_a-ctime.o(.rodata .rodata.*) - *lib_a-ctime_r.o(.rodata .rodata.*) - *lib_a-lcltime.o(.rodata .rodata.*) - *lib_a-lcltime_r.o(.rodata .rodata.*) - *lib_a-gmtime.o(.rodata .rodata.*) - *lib_a-gmtime_r.o(.rodata .rodata.*) - *lib_a-strftime.o(.rodata .rodata.*) - *lib_a-mktime.o(.rodata .rodata.*) - *lib_a-syswrite.o(.rodata .rodata.*) - *lib_a-tzset_r.o(.rodata .rodata.*) - *lib_a-tzset.o(.rodata .rodata.*) - *lib_a-toupper.o(.rodata .rodata.*) - *lib_a-tolower.o(.rodata .rodata.*) - *lib_a-toascii.o(.rodata .rodata.*) - *lib_a-systimes.o(.rodata .rodata.*) - *lib_a-time.o(.rodata .rodata.*) - *lib_a-bsd_qsort_r.o(.rodata .rodata.*) - *lib_a-qsort_r.o(.rodata .rodata.*) - *lib_a-gettzinfo.o(.rodata .rodata.*) - *lib_a-strupr.o(.rodata .rodata.*) - *lib_a-asctime_r.o(.rodata .rodata.*) - *lib_a-bzero.o(.rodata .rodata.*) - *lib_a-close.o(.rodata .rodata.*) - *lib_a-creat.o(.rodata .rodata.*) - *lib_a-environ.o(.rodata .rodata.*) - *lib_a-fclose.o(.rodata .rodata.*) - *lib_a-isalnum.o(.rodata .rodata.*) - *lib_a-isalpha.o(.rodata .rodata.*) - *lib_a-isascii.o(.rodata .rodata.*) - *lib_a-isblank.o(.rodata .rodata.*) - *lib_a-iscntrl.o(.rodata .rodata.*) - *lib_a-isdigit.o(.rodata .rodata.*) - *lib_a-isgraph.o(.rodata .rodata.*) - *lib_a-islower.o(.rodata .rodata.*) - *lib_a-isprint.o(.rodata .rodata.*) - *lib_a-ispunct.o(.rodata .rodata.*) - *lib_a-isspace.o(.rodata .rodata.*) - *lib_a-isupper.o(.rodata .rodata.*) - *lib_a-memccpy.o(.rodata .rodata.*) - *lib_a-memchr.o(.rodata .rodata.*) - *lib_a-memcmp.o(.rodata .rodata.*) - *lib_a-memcpy.o(.rodata .rodata.*) - *lib_a-memmove.o(.rodata .rodata.*) - *lib_a-memrchr.o(.rodata .rodata.*) - *lib_a-memset.o(.rodata .rodata.*) - *lib_a-open.o(.rodata .rodata.*) - *lib_a-rand.o(.rodata .rodata.*) - *lib_a-rand_r.o(.rodata .rodata.*) - *lib_a-read.o(.rodata .rodata.*) - *lib_a-rshift.o(.rodata .rodata.*) - *lib_a-sbrk.o(.rodata .rodata.*) - *lib_a-srand.o(.rodata .rodata.*) - *lib_a-strcasecmp.o(.rodata .rodata.*) - *lib_a-strcasestr.o(.rodata .rodata.*) - *lib_a-strcat.o(.rodata .rodata.*) - *lib_a-strchr.o(.rodata .rodata.*) - *lib_a-strcmp.o(.rodata .rodata.*) - *lib_a-strcoll.o(.rodata .rodata.*) - *lib_a-strcpy.o(.rodata .rodata.*) - *lib_a-strcspn.o(.rodata .rodata.*) - *lib_a-strdup.o(.rodata .rodata.*) - *lib_a-strlcat.o(.rodata .rodata.*) - *lib_a-strlcpy.o(.rodata .rodata.*) - *lib_a-strlen.o(.rodata .rodata.*) - *lib_a-strlwr.o(.rodata .rodata.*) - *lib_a-strncasecmp.o(.rodata .rodata.*) - *lib_a-strncat.o(.rodata .rodata.*) - *lib_a-strncmp.o(.rodata .rodata.*) - *lib_a-strncpy.o(.rodata .rodata.*) - *lib_a-strndup.o(.rodata .rodata.*) - *lib_a-strnlen.o(.rodata .rodata.*) - *lib_a-strrchr.o(.rodata .rodata.*) - *lib_a-strsep.o(.rodata .rodata.*) - *lib_a-strspn.o(.rodata .rodata.*) - *lib_a-strstr.o(.rodata .rodata.*) - *lib_a-strtok_r.o(.rodata .rodata.*) - *lib_a-strupr.o(.rodata .rodata.*) - *lib_a-stdio.o(.rodata .rodata.*) - *lib_a-syssbrk.o(.rodata .rodata.*) - *lib_a-sysclose.o(.rodata .rodata.*) - *lib_a-sysopen.o(.rodata .rodata.*) - *creat.o(.rodata .rodata.*) - *lib_a-sysread.o(.rodata .rodata.*) - *lib_a-syswrite.o(.rodata .rodata.*) - *lib_a-impure.o(.rodata .rodata.*) - *lib_a-tzvars.o(.rodata .rodata.*) - *lib_a-sf_nan.o(.rodata .rodata.*) - *lib_a-tzcalc_limits.o(.rodata .rodata.*) - *lib_a-month_lengths.o(.rodata .rodata.*) - *lib_a-timelocal.o(.rodata .rodata.*) - *lib_a-findfp.o(.rodata .rodata.*) - *lock.o(.rodata .rodata.*) - *lib_a-getenv_r.o(.rodata .rodata.*) - *isatty.o(.rodata .rodata.*) - *lib_a-fwalk.o(.rodata .rodata.*) - *lib_a-getenv_r.o(.rodata .rodata.*) - *lib_a-tzlock.o(.rodata .rodata.*) - *lib_a-ctype_.o(.rodata .rodata.*) - *lib_a-sccl.o(.rodata .rodata.*) - *lib_a-strptime.o(.rodata .rodata.*) - *lib_a-envlock.o(.rodata .rodata.*) - *lib_a-raise.o(.rodata .rodata.*) - *lib_a-strdup_r.o(.rodata .rodata.*) - *lib_a-system.o(.rodata .rodata.*) - *lib_a-strndup_r.o(.rodata .rodata.*) diff --git a/components/esp32/ld/esp32.spiram.rom-functions-iram.ld b/components/esp32/ld/esp32.spiram.rom-functions-iram.ld deleted file mode 100644 index 6f97fb6b1..000000000 --- a/components/esp32/ld/esp32.spiram.rom-functions-iram.ld +++ /dev/null @@ -1,144 +0,0 @@ -/* - If the Newlib functions in ROM aren't used (eg because the external SPI RAM workaround is active), these functions will - be linked into the application directly instead. Normally, they would end up in flash, which is undesirable because esp-idf - and/or applications may assume that because these functions normally are in ROM, they are accessible even when flash is - inaccessible. To work around this, this ld fragment places these functions in RAM instead. If the ROM functions are used, - these defines do nothing, so they can still be included in that situation. - - This file is responsible for placing the literal and text segments in IRAM. -*/ - - - *lib_a-utoa.o(.literal .text .literal.* .text.*) - *lib_a-longjmp.o(.literal .text .literal.* .text.*) - *lib_a-setjmp.o(.literal .text .literal.* .text.*) - *lib_a-abs.o(.literal .text .literal.* .text.*) - *lib_a-div.o(.literal .text .literal.* .text.*) - *lib_a-labs.o(.literal .text .literal.* .text.*) - *lib_a-ldiv.o(.literal .text .literal.* .text.*) - *lib_a-quorem.o(.literal .text .literal.* .text.*) - *lib_a-qsort.o(.literal .text .literal.* .text.*) - *lib_a-utoa.o(.literal .text .literal.* .text.*) - *lib_a-itoa.o(.literal .text .literal.* .text.*) - *lib_a-atoi.o(.literal .text .literal.* .text.*) - *lib_a-atol.o(.literal .text .literal.* .text.*) - *lib_a-strtol.o(.literal .text .literal.* .text.*) - *lib_a-strtoul.o(.literal .text .literal.* .text.*) - *lib_a-wcrtomb.o(.literal .text .literal.* .text.*) - *lib_a-fvwrite.o(.literal .text .literal.* .text.*) - *lib_a-wbuf.o(.literal .text .literal.* .text.*) - *lib_a-wsetup.o(.literal .text .literal.* .text.*) - *lib_a-fputwc.o(.literal .text .literal.* .text.*) - *lib_a-wctomb_r.o(.literal .text .literal.* .text.*) - *lib_a-ungetc.o(.literal .text .literal.* .text.*) - *lib_a-makebuf.o(.literal .text .literal.* .text.*) - *lib_a-fflush.o(.literal .text .literal.* .text.*) - *lib_a-refill.o(.literal .text .literal.* .text.*) - *lib_a-s_fpclassify.o(.literal .text .literal.* .text.*) - *lib_a-locale.o(.literal .text .literal.* .text.*) - *lib_a-asctime.o(.literal .text .literal.* .text.*) - *lib_a-ctime.o(.literal .text .literal.* .text.*) - *lib_a-ctime_r.o(.literal .text .literal.* .text.*) - *lib_a-lcltime.o(.literal .text .literal.* .text.*) - *lib_a-lcltime_r.o(.literal .text .literal.* .text.*) - *lib_a-gmtime.o(.literal .text .literal.* .text.*) - *lib_a-gmtime_r.o(.literal .text .literal.* .text.*) - *lib_a-strftime.o(.literal .text .literal.* .text.*) - *lib_a-mktime.o(.literal .text .literal.* .text.*) - *lib_a-syswrite.o(.literal .text .literal.* .text.*) - *lib_a-tzset_r.o(.literal .text .literal.* .text.*) - *lib_a-tzset.o(.literal .text .literal.* .text.*) - *lib_a-toupper.o(.literal .text .literal.* .text.*) - *lib_a-tolower.o(.literal .text .literal.* .text.*) - *lib_a-toascii.o(.literal .text .literal.* .text.*) - *lib_a-systimes.o(.literal .text .literal.* .text.*) - *lib_a-time.o(.literal .text .literal.* .text.*) - *lib_a-bsd_qsort_r.o(.literal .text .literal.* .text.*) - *lib_a-qsort_r.o(.literal .text .literal.* .text.*) - *lib_a-gettzinfo.o(.literal .text .literal.* .text.*) - *lib_a-strupr.o(.literal .text .literal.* .text.*) - *lib_a-asctime_r.o(.literal .text .literal.* .text.*) - *lib_a-bzero.o(.literal .text .literal.* .text.*) - *lib_a-close.o(.literal .text .literal.* .text.*) - *lib_a-creat.o(.literal .text .literal.* .text.*) - *lib_a-environ.o(.literal .text .literal.* .text.*) - *lib_a-fclose.o(.literal .text .literal.* .text.*) - *lib_a-isalnum.o(.literal .text .literal.* .text.*) - *lib_a-isalpha.o(.literal .text .literal.* .text.*) - *lib_a-isascii.o(.literal .text .literal.* .text.*) - *lib_a-isblank.o(.literal .text .literal.* .text.*) - *lib_a-iscntrl.o(.literal .text .literal.* .text.*) - *lib_a-isdigit.o(.literal .text .literal.* .text.*) - *lib_a-isgraph.o(.literal .text .literal.* .text.*) - *lib_a-islower.o(.literal .text .literal.* .text.*) - *lib_a-isprint.o(.literal .text .literal.* .text.*) - *lib_a-ispunct.o(.literal .text .literal.* .text.*) - *lib_a-isspace.o(.literal .text .literal.* .text.*) - *lib_a-isupper.o(.literal .text .literal.* .text.*) - *lib_a-memccpy.o(.literal .text .literal.* .text.*) - *lib_a-memchr.o(.literal .text .literal.* .text.*) - *lib_a-memcmp.o(.literal .text .literal.* .text.*) - *lib_a-memcpy.o(.literal .text .literal.* .text.*) - *lib_a-memmove.o(.literal .text .literal.* .text.*) - *lib_a-memrchr.o(.literal .text .literal.* .text.*) - *lib_a-memset.o(.literal .text .literal.* .text.*) - *lib_a-open.o(.literal .text .literal.* .text.*) - *lib_a-rand.o(.literal .text .literal.* .text.*) - *lib_a-rand_r.o(.literal .text .literal.* .text.*) - *lib_a-read.o(.literal .text .literal.* .text.*) - *lib_a-rshift.o(.literal .text .literal.* .text.*) - *lib_a-sbrk.o(.literal .text .literal.* .text.*) - *lib_a-srand.o(.literal .text .literal.* .text.*) - *lib_a-strcasecmp.o(.literal .text .literal.* .text.*) - *lib_a-strcasestr.o(.literal .text .literal.* .text.*) - *lib_a-strcat.o(.literal .text .literal.* .text.*) - *lib_a-strchr.o(.literal .text .literal.* .text.*) - *lib_a-strcmp.o(.literal .text .literal.* .text.*) - *lib_a-strcoll.o(.literal .text .literal.* .text.*) - *lib_a-strcpy.o(.literal .text .literal.* .text.*) - *lib_a-strcspn.o(.literal .text .literal.* .text.*) - *lib_a-strdup.o(.literal .text .literal.* .text.*) - *lib_a-strlcat.o(.literal .text .literal.* .text.*) - *lib_a-strlcpy.o(.literal .text .literal.* .text.*) - *lib_a-strlen.o(.literal .text .literal.* .text.*) - *lib_a-strlwr.o(.literal .text .literal.* .text.*) - *lib_a-strncasecmp.o(.literal .text .literal.* .text.*) - *lib_a-strncat.o(.literal .text .literal.* .text.*) - *lib_a-strncmp.o(.literal .text .literal.* .text.*) - *lib_a-strncpy.o(.literal .text .literal.* .text.*) - *lib_a-strndup.o(.literal .text .literal.* .text.*) - *lib_a-strnlen.o(.literal .text .literal.* .text.*) - *lib_a-strrchr.o(.literal .text .literal.* .text.*) - *lib_a-strsep.o(.literal .text .literal.* .text.*) - *lib_a-strspn.o(.literal .text .literal.* .text.*) - *lib_a-strstr.o(.literal .text .literal.* .text.*) - *lib_a-strtok_r.o(.literal .text .literal.* .text.*) - *lib_a-strupr.o(.literal .text .literal.* .text.*) - *lib_a-stdio.o(.literal .text .literal.* .text.*) - *lib_a-syssbrk.o(.literal .text .literal.* .text.*) - *lib_a-sysclose.o(.literal .text .literal.* .text.*) - *lib_a-sysopen.o(.literal .text .literal.* .text.*) - *creat.o(.literal .text .literal.* .text.*) - *lib_a-sysread.o(.literal .text .literal.* .text.*) - *lib_a-syswrite.o(.literal .text .literal.* .text.*) - *lib_a-impure.o(.literal .text .literal.* .text.*) - *lib_a-tzvars.o(.literal .text .literal.* .text.*) - *lib_a-sf_nan.o(.literal .text .literal.* .text.*) - *lib_a-tzcalc_limits.o(.literal .text .literal.* .text.*) - *lib_a-month_lengths.o(.literal .text .literal.* .text.*) - *lib_a-timelocal.o(.literal .text .literal.* .text.*) - *lib_a-findfp.o(.literal .text .literal.* .text.*) - *lock.o(.literal .text .literal.* .text.*) - *lib_a-getenv_r.o(.literal .text .literal.* .text.*) - *isatty.o(.literal .text .literal.* .text.*) - *lib_a-fwalk.o(.literal .text .literal.* .text.*) - *lib_a-getenv_r.o(.literal .text .literal.* .text.*) - *lib_a-tzlock.o(.literal .text .literal.* .text.*) - *lib_a-ctype_.o(.literal .text .literal.* .text.*) - *lib_a-sccl.o(.literal .text .literal.* .text.*) - *lib_a-strptime.o(.literal .text .literal.* .text.*) - *lib_a-envlock.o(.literal .text .literal.* .text.*) - *lib_a-raise.o(.literal .text .literal.* .text.*) - *lib_a-strdup_r.o(.literal .text .literal.* .text.*) - *lib_a-system.o(.literal .text .literal.* .text.*) - *lib_a-strndup_r.o(.literal .text .literal.* .text.*) diff --git a/components/newlib/CMakeLists.txt b/components/newlib/CMakeLists.txt index 893d9f7d1..208be1fe4 100644 --- a/components/newlib/CMakeLists.txt +++ b/components/newlib/CMakeLists.txt @@ -13,6 +13,8 @@ set(COMPONENT_ADD_INCLUDEDIRS platform_include include) if(CONFIG_SPIRAM_CACHE_WORKAROUND) set(LIBC c-psram-workaround) set(LIBM m-psram-workaround) + + set(COMPONENT_ADD_LDFRAGMENTS esp32-spiram-rom-functions.lf) else() if(CONFIG_NEWLIB_NANO_FORMAT) @@ -31,4 +33,4 @@ register_component() target_link_libraries(${COMPONENT_TARGET} "-L ${CMAKE_CURRENT_SOURCE_DIR}/lib") target_link_libraries(${COMPONENT_TARGET} ${LIBC} ${LIBM}) -set_source_files_properties(syscalls.c PROPERTIES COMPILE_FLAGS -fno-builtin) \ No newline at end of file +set_source_files_properties(syscalls.c PROPERTIES COMPILE_FLAGS -fno-builtin) diff --git a/components/newlib/component.mk b/components/newlib/component.mk index 4db4acd00..399af6526 100644 --- a/components/newlib/component.mk +++ b/components/newlib/component.mk @@ -2,7 +2,7 @@ ifdef CONFIG_SPIRAM_CACHE_WORKAROUND LIBC_PATH := $(COMPONENT_PATH)/lib/libc-psram-workaround.a LIBM_PATH := $(COMPONENT_PATH)/lib/libm-psram-workaround.a - +COMPONENT_ADD_LDFRAGMENTS := esp32-spiram-rom-functions.lf else ifdef CONFIG_NEWLIB_NANO_FORMAT diff --git a/components/newlib/esp32-spiram-rom-functions.lf b/components/newlib/esp32-spiram-rom-functions.lf new file mode 100644 index 000000000..4249a70fb --- /dev/null +++ b/components/newlib/esp32-spiram-rom-functions.lf @@ -0,0 +1,148 @@ +# If the Newlib functions in ROM aren't used (eg because the external SPI RAM workaround is active), these functions will +# be linked into the application directly instead. Normally, they would end up in flash, which is undesirable because esp-idf +# and/or applications may assume that because these functions normally are in ROM, they are accessible even when flash is +# inaccessible. To work around this, this ld fragment places these functions in RAM instead. If the ROM functions are used, +# these defines do nothing, so they can still be included in that situation. +# +# +# Note: We currently never link libg-psram-workaround.a, so no rules +# are generated for this library + +[mapping] +archive: libc-psram-workaround.a +entries: + : SPIRAM_CACHE_WORKAROUND = y + lib_a-utoa (noflash) + lib_a-longjmp (noflash) + lib_a-setjmp (noflash) + lib_a-abs (noflash) + lib_a-div (noflash) + lib_a-labs (noflash) + lib_a-ldiv (noflash) + lib_a-quorem (noflash) + lib_a-qsort (noflash) + lib_a-utoa (noflash) + lib_a-itoa (noflash) + lib_a-atoi (noflash) + lib_a-atol (noflash) + lib_a-strtol (noflash) + lib_a-strtoul (noflash) + lib_a-wcrtomb (noflash) + lib_a-fvwrite (noflash) + lib_a-wbuf (noflash) + lib_a-wsetup (noflash) + lib_a-fputwc (noflash) + lib_a-wctomb_r (noflash) + lib_a-ungetc (noflash) + lib_a-makebuf (noflash) + lib_a-fflush (noflash) + lib_a-refill (noflash) + lib_a-s_fpclassify (noflash) + lib_a-locale (noflash) + lib_a-asctime (noflash) + lib_a-ctime (noflash) + lib_a-ctime_r (noflash) + lib_a-lcltime (noflash) + lib_a-lcltime_r (noflash) + lib_a-gmtime (noflash) + lib_a-gmtime_r (noflash) + lib_a-strftime (noflash) + lib_a-mktime (noflash) + lib_a-syswrite (noflash) + lib_a-tzset_r (noflash) + lib_a-tzset (noflash) + lib_a-toupper (noflash) + lib_a-tolower (noflash) + lib_a-toascii (noflash) + lib_a-systimes (noflash) + lib_a-time (noflash) + lib_a-bsd_qsort_r (noflash) + lib_a-qsort_r (noflash) + lib_a-gettzinfo (noflash) + lib_a-strupr (noflash) + lib_a-asctime_r (noflash) + lib_a-bzero (noflash) + lib_a-close (noflash) + lib_a-creat (noflash) + lib_a-environ (noflash) + lib_a-fclose (noflash) + lib_a-isalnum (noflash) + lib_a-isalpha (noflash) + lib_a-isascii (noflash) + lib_a-isblank (noflash) + lib_a-iscntrl (noflash) + lib_a-isdigit (noflash) + lib_a-isgraph (noflash) + lib_a-islower (noflash) + lib_a-isprint (noflash) + lib_a-ispunct (noflash) + lib_a-isspace (noflash) + lib_a-isupper (noflash) + lib_a-memccpy (noflash) + lib_a-memchr (noflash) + lib_a-memcmp (noflash) + lib_a-memcpy (noflash) + lib_a-memmove (noflash) + lib_a-memrchr (noflash) + lib_a-memset (noflash) + lib_a-open (noflash) + lib_a-rand (noflash) + lib_a-rand_r (noflash) + lib_a-read (noflash) + lib_a-rshift (noflash) + lib_a-sbrk (noflash) + lib_a-srand (noflash) + lib_a-strcasecmp (noflash) + lib_a-strcasestr (noflash) + lib_a-strcat (noflash) + lib_a-strchr (noflash) + lib_a-strcmp (noflash) + lib_a-strcoll (noflash) + lib_a-strcpy (noflash) + lib_a-strcspn (noflash) + lib_a-strdup (noflash) + lib_a-strlcat (noflash) + lib_a-strlcpy (noflash) + lib_a-strlen (noflash) + lib_a-strlwr (noflash) + lib_a-strncasecmp (noflash) + lib_a-strncat (noflash) + lib_a-strncmp (noflash) + lib_a-strncpy (noflash) + lib_a-strndup (noflash) + lib_a-strnlen (noflash) + lib_a-strrchr (noflash) + lib_a-strsep (noflash) + lib_a-strspn (noflash) + lib_a-strstr (noflash) + lib_a-strtok_r (noflash) + lib_a-strupr (noflash) + lib_a-stdio (noflash) + lib_a-syssbrk (noflash) + lib_a-sysclose (noflash) + lib_a-sysopen (noflash) + creat (noflash) + lib_a-sysread (noflash) + lib_a-syswrite (noflash) + lib_a-impure (noflash) + lib_a-tzvars (noflash) + lib_a-sf_nan (noflash) + lib_a-tzcalc_limits (noflash) + lib_a-month_lengths (noflash) + lib_a-timelocal (noflash) + lib_a-findfp (noflash) + lock (noflash) + lib_a-getenv_r (noflash) + isatty (noflash) + lib_a-fwalk (noflash) + lib_a-getenv_r (noflash) + lib_a-tzlock (noflash) + lib_a-ctype_ (noflash) + lib_a-sccl (noflash) + lib_a-strptime (noflash) + lib_a-envlock (noflash) + lib_a-raise (noflash) + lib_a-strdup_r (noflash) + lib_a-system (noflash) + lib_a-strndup_r (noflash) + diff --git a/docs/en/api-guides/linker-script-generation.rst b/docs/en/api-guides/linker-script-generation.rst index 5ec246ffd..c98a5f181 100644 --- a/docs/en/api-guides/linker-script-generation.rst +++ b/docs/en/api-guides/linker-script-generation.rst @@ -470,7 +470,6 @@ the target ``iram0_text``. /* Marker referencing iram0_text */ mapping[iram0_text] - INCLUDE esp32.spiram.rom-functions-iram.ld _iram_text_end = ABSOLUTE(.); } > iram0_0_seg @@ -512,7 +511,6 @@ Then the corresponding excerpt from the generated linker script will be as follo *(.iram1 .iram1.*) *libfreertos.a:(.literal .text .literal.* .text.*) - INCLUDE esp32.spiram.rom-functions-iram.ld _iram_text_end = ABSOLUTE(.); } > iram0_0_seg diff --git a/tools/ldgen/samples/template.ld b/tools/ldgen/samples/template.ld index 02a0d21cb..512f724e2 100644 --- a/tools/ldgen/samples/template.ld +++ b/tools/ldgen/samples/template.ld @@ -90,7 +90,6 @@ SECTIONS mapping[iram0_text] - INCLUDE esp32.spiram.rom-functions-iram.ld _iram_text_end = ABSOLUTE(.); } > iram0_0_seg @@ -109,7 +108,6 @@ SECTIONS *(.sdata2.*) *(.gnu.linkonce.s2.*) *(.jcr) - INCLUDE esp32.spiram.rom-functions-dram.ld _data_end = ABSOLUTE(.); . = ALIGN(4); } >dram0_0_seg diff --git a/tools/ldgen/test/data/template.ld b/tools/ldgen/test/data/template.ld index 02a0d21cb..512f724e2 100644 --- a/tools/ldgen/test/data/template.ld +++ b/tools/ldgen/test/data/template.ld @@ -90,7 +90,6 @@ SECTIONS mapping[iram0_text] - INCLUDE esp32.spiram.rom-functions-iram.ld _iram_text_end = ABSOLUTE(.); } > iram0_0_seg @@ -109,7 +108,6 @@ SECTIONS *(.sdata2.*) *(.gnu.linkonce.s2.*) *(.jcr) - INCLUDE esp32.spiram.rom-functions-dram.ld _data_end = ABSOLUTE(.); . = ALIGN(4); } >dram0_0_seg