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.
This commit is contained in:
Angus Gratton 2019-01-22 11:49:17 +08:00 committed by Angus Gratton
parent 07645955a2
commit 7f307423c1
9 changed files with 153 additions and 298 deletions

View File

@ -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

View File

@ -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.*)

View File

@ -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.*)

View File

@ -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)
set_source_files_properties(syscalls.c PROPERTIES COMPILE_FLAGS -fno-builtin)

View File

@ -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

View File

@ -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)

View File

@ -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

View File

@ -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

View File

@ -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