mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
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:
parent
07645955a2
commit
7f307423c1
@ -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
|
||||
|
@ -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.*)
|
@ -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.*)
|
@ -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)
|
||||
|
@ -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
|
||||
|
148
components/newlib/esp32-spiram-rom-functions.lf
Normal file
148
components/newlib/esp32-spiram-rom-functions.lf
Normal 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)
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user