esp_rom: update ld scripts to export strong symbols

Similar to commits for esp32 target: e84b26f5, 8c2f2867, 5719cd6f
This commit is contained in:
Ivan Grokhotkov 2019-06-13 17:55:51 +08:00
parent cfba50811d
commit 7c723e121c
13 changed files with 474 additions and 556 deletions

View File

@ -1,19 +1,16 @@
idf_build_get_property(target IDF_TARGET)
if(BOOTLOADER_BUILD)
# For bootloader, all we need is headers
set(COMPONENT_ADD_INCLUDEDIRS "include")
set(COMPONENT_REQUIRES ${IDF_COMPONENTS})
set(COMPONENT_SRCS)
register_component()
idf_build_get_property(target IDF_TARGET)
set(scripts "${target}/ld/${target}.rom.ld")
if(target STREQUAL "esp32")
list(APPEND scripts
"${target}/ld/${target}.rom.newlib-funcs.ld"
"${target}/ld/${target}.rom.libgcc.ld")
elseif(target STREQUAL "esp32s2beta")
list(APPEND scripts
"${target}/ld/${target}.rom.spiflash.ld"
"${target}/ld/${target}.rom.spiram_incompatible_fns.ld")
set(scripts "${target}/ld/${target}.rom.ld"
"${target}/ld/${target}.rom.newlib-funcs.ld"
"${target}/ld/${target}.rom.libgcc.ld")
if (target STREQUAL "esp32s2beta")
list(APPEND scripts "esp32s2beta/ld/esp32s2beta.rom.spiflash.ld")
endif()
target_linker_script(${COMPONENT_LIB} "${scripts}")
else()
@ -23,14 +20,13 @@ else()
register_component()
if (IDF_TARGET STREQUAL "esp32")
set(scripts
"esp32/ld/esp32.rom.ld"
"esp32/ld/esp32.rom.libgcc.ld"
"esp32/ld/esp32.rom.syscalls.ld"
"esp32/ld/esp32.rom.newlib-data.ld"
)
target_linker_script(${COMPONENT_LIB} "${scripts}")
set(scripts
"${target}/ld/${target}.rom.ld"
"${target}/ld/${target}.rom.libgcc.ld"
"${target}/ld/${target}.rom.newlib-data.ld")
if (target STREQUAL "esp32")
list(APPEND scripts "${target}/ld/${target}.rom.syscalls.ld")
if(NOT CONFIG_SPIRAM_CACHE_WORKAROUND)
target_linker_script(${COMPONENT_LIB} "esp32/ld/esp32.rom.newlib-funcs.ld")
@ -48,12 +44,15 @@ else()
target_linker_script(${COMPONENT_LIB} "esp32/ld/esp32.rom.spiflash.ld")
endif()
elseif(IDF_TARGET STREQUAL "esp32s2beta")
set(scripts "esp32s2beta/ld/esp32s2beta.rom.ld"
"esp32s2beta/ld/esp32s2beta.rom.nanofmt.ld"
"esp32s2beta/ld/esp32s2beta.rom.spiflash.ld"
"esp32s2beta/ld/esp32s2beta.rom.spiram_incompatible_fns.ld")
target_linker_script(${COMPONENT_LIB} "${scripts}")
elseif(target STREQUAL "esp32s2beta")
# no SPIRAM workaround for esp32s2beta
# no nano formatting function in ROM
# no GCC 5.2.0 for esp32s2beta, hence not linking locale functions
list(APPEND scripts "esp32s2beta/ld/esp32s2beta.rom.newlib-funcs.ld"
"esp32s2beta/ld/esp32s2beta.rom.spiflash.ld")
endif()
target_linker_script(${COMPONENT_LIB} "${scripts}")
endif()

View File

@ -3,22 +3,13 @@ ESP32C ROM address table
Generated for ROM with MD5sum:
f054d40c5f6b9207d3827460a6f5748c /home/jack/esp-rom/rom//.output/eagle/release/image/eagle.pro.rom.out
*/
PROVIDE ( abort = 0x400151e0 );
PROVIDE ( abs = 0x4000073c );
PROVIDE ( __absvdi2 = 0x40005eb4 );
PROVIDE ( __absvsi2 = 0x40005ea0 );
PROVIDE ( acm_config_descr = 0x3ffae859 );
PROVIDE ( acm_usb_descriptors = 0x3ffae7b0 );
PROVIDE ( __adddf3 = 0x40008a3c );
PROVIDE ( __addsf3 = 0x40008594 );
PROVIDE ( __addvdi3 = 0x4000916c );
PROVIDE ( __addvsi3 = 0x40009148 );
PROVIDE ( app_gpio_arg = 0x3fffc9b4 );
PROVIDE ( app_gpio_handler = 0x3fffc9b8 );
PROVIDE ( __ascii_mbtowc = 0x40007de0 );
PROVIDE ( __ascii_wctomb = 0x40001cac );
PROVIDE ( __ashldi3 = 0x4001622c );
PROVIDE ( __ashrdi3 = 0x40016244 );
PROVIDE ( __assert = 0x4001565c );
PROVIDE ( __assert_func = 0x40015634 );
PROVIDE ( atoi = 0x40000adc );
@ -26,8 +17,6 @@ PROVIDE ( _atoi_r = 0x40000aec );
PROVIDE ( atol = 0x40000b04 );
PROVIDE ( _atol_r = 0x40000b14 );
PROVIDE ( boot_prepare = 0x4000c020 );
PROVIDE ( __bswapdi2 = 0x40007110 );
PROVIDE ( __bswapsi2 = 0x400070e8 );
PROVIDE ( bzero = 0x40007ca4 );
PROVIDE ( Cache_Address_Through_DCache = 0x40013b50 );
PROVIDE ( Cache_Address_Through_ICache = 0x40013b10 );
@ -125,11 +114,6 @@ PROVIDE ( _cleanup_r = 0x400156ac );
PROVIDE ( __clear_cache = 0x40005e98 );
PROVIDE ( close = 0x4000848c );
PROVIDE ( _close_r = 0x40015378 );
PROVIDE ( __clrsbdi2 = 0x40007184 );
PROVIDE ( __clrsbsi2 = 0x4000716c );
PROVIDE ( __clzdi2 = 0x40016464 );
PROVIDE ( __clzsi2 = 0x400161fc );
PROVIDE ( __cmpdi2 = 0x40005e58 );
PROVIDE ( cpio_destroy = 0x40012088 );
PROVIDE ( cpio_done = 0x40012054 );
PROVIDE ( cpio_feed = 0x40011d5c );
@ -142,8 +126,6 @@ PROVIDE ( crc8_be = 0x4000e7b4 );
PROVIDE ( crc8_le = 0x4000e784 );
PROVIDE ( creat = 0x40007c68 );
PROVIDE ( _ctype_ = 0x3ffab96c );
PROVIDE ( __ctzdi2 = 0x40016478 );
PROVIDE ( __ctzsi2 = 0x40016204 );
PROVIDE ( _cvt = 0x4000c6d8 );
PROVIDE ( _data_end_all_pro = 0x3fffdd10 );
PROVIDE ( _data_end_c = 0x3fffc040 );
@ -224,12 +206,6 @@ PROVIDE ( dh_group5_prime = 0x3ffad899 );
PROVIDE ( disable_default_watchdog = 0x4000bf84 );
PROVIDE ( Disable_QMode = 0x40012d24 );
PROVIDE ( div = 0x40000744 );
PROVIDE ( __divdc3 = 0x40006c30 );
PROVIDE ( __divdf3 = 0x40008e00 );
PROVIDE ( __divdi3 = 0x40016498 );
PROVIDE ( __divsc3 = 0x40006920 );
PROVIDE ( __divsf3 = 0x400087f8 );
PROVIDE ( __divsi3 = 0x400161cc );
PROVIDE ( _DoubleExceptionVector = 0x400003c0 );
PROVIDE ( _DoubleExceptionVector_text_end = 0x400003c6 );
PROVIDE ( _DoubleExceptionVector_text_start = 0x400003c0 );
@ -237,8 +213,6 @@ PROVIDE ( _dram0_0_start = 0x3fffc000 );
PROVIDE ( _dram0_1_start = 0x3fffdd00 );
PROVIDE ( dummy_len_plus = 0x3fffc250 );
PROVIDE ( Enable_QMode = 0x40012cd4 );
PROVIDE ( __eqdf2 = 0x40005ce0 );
PROVIDE ( __eqsf2 = 0x400059ac );
PROVIDE ( esp_crc8 = 0x4000e7e0 );
PROVIDE ( _etext = 0x400170fc );
PROVIDE ( ets_aes_block = 0x4000aa2c );
@ -337,13 +311,6 @@ PROVIDE ( ets_sha_starts = 0x4000d27c );
PROVIDE ( ets_sha_update = 0x4000d484 );
PROVIDE ( ets_startup_callback = 0x3fffcd24 );
PROVIDE ( ets_task = 0x4000acbc );
PROVIDE ( ets_timer_arm = 0x4000d76c );
PROVIDE ( ets_timer_arm_us = 0x4000d7b0 );
PROVIDE ( ets_timer_disarm = 0x4000d7f0 );
PROVIDE ( ets_timer_done = 0x4000d82c );
PROVIDE ( ets_timer_handler_isr = 0x4000d858 );
PROVIDE ( ets_timer_init = 0x4000d8ec );
PROVIDE ( ets_timer_setfn = 0x4000d754 );
PROVIDE ( ets_unpack_flash_code_legacy = 0x4000e138 );
PROVIDE ( ets_update_cpu_frequency = 0x4000d954 );
PROVIDE ( ets_vprintf = 0x4000c75c );
@ -353,38 +320,20 @@ PROVIDE ( ets_write_char = 0x4000c694 );
PROVIDE ( ets_write_char_uart = 0x4000c6b8 );
PROVIDE ( exc_cause_table = 0x3ffabda8 );
PROVIDE ( _exit_r = 0x40015364 );
PROVIDE ( __extendsfdf2 = 0x400090e4 );
PROVIDE ( fclose = 0x40015a30 );
PROVIDE ( _fclose_r = 0x40015940 );
PROVIDE ( fflush = 0x40001f94 );
PROVIDE ( _fflush_r = 0x40001f0c );
PROVIDE ( __ffsdi2 = 0x40016440 );
PROVIDE ( __ffssi2 = 0x40016218 );
PROVIDE ( FilePacketSendDeflatedReqMsgProc = 0x4000ec20 );
PROVIDE ( FilePacketSendReqMsgProc = 0x4000e920 );
PROVIDE ( fiprintf = 0x40000e18 );
PROVIDE ( _fiprintf_r = 0x40000df4 );
PROVIDE ( __fixdfdi = 0x40008f74 );
PROVIDE ( __fixdfsi = 0x40008f28 );
PROVIDE ( __fixsfdi = 0x400088f8 );
PROVIDE ( __fixsfsi = 0x400088b8 );
PROVIDE ( __fixunsdfsi = 0x40008fe0 );
PROVIDE ( __fixunssfdi = 0x400089b0 );
PROVIDE ( __fixunssfsi = 0x40008958 );
PROVIDE ( flashchip = 0x3fffc230 );
PROVIDE ( FlashDwnLdDeflatedStartMsgProc = 0x4000ebc8 );
PROVIDE ( FlashDwnLdParamCfgMsgProc = 0x4000ea08 );
PROVIDE ( FlashDwnLdStartMsgProc = 0x4000e8bc );
PROVIDE ( FlashDwnLdStopDeflatedReqMsgProc = 0x4000ed20 );
PROVIDE ( FlashDwnLdStopReqMsgProc = 0x4000e9d8 );
PROVIDE ( __floatdidf = 0x4001639c );
PROVIDE ( __floatdisf = 0x400162d4 );
PROVIDE ( __floatsidf = 0x40016358 );
PROVIDE ( __floatsisf = 0x40016284 );
PROVIDE ( __floatundidf = 0x4001638c );
PROVIDE ( __floatundisf = 0x400162c4 );
PROVIDE ( __floatunsidf = 0x4001634c );
PROVIDE ( __floatunsisf = 0x40016278 );
PROVIDE ( __fp_lock_all = 0x40015864 );
PROVIDE ( fprintf = 0x40000e18 );
PROVIDE ( _fprintf_r = 0x40000df4 );
@ -397,11 +346,8 @@ PROVIDE ( _free_r = 0x40015208 );
PROVIDE ( _fstat_r = 0x40015308 );
PROVIDE ( _fwalk = 0x40016efc );
PROVIDE ( _fwalk_reent = 0x40016f34 );
PROVIDE ( __gcc_bcmp = 0x400071bc );
PROVIDE ( __gedf2 = 0x40005da0 );
PROVIDE ( general_device_descr = 0x3fffc2a8 );
PROVIDE ( _GeneralException = 0x400077ab );
PROVIDE ( __gesf2 = 0x40005a44 );
PROVIDE ( get_id = 0x4001272c );
PROVIDE ( _getpid_r = 0x40015338 );
PROVIDE ( __getreent = 0x400154c8 );
@ -440,9 +386,7 @@ PROVIDE ( gpio_pin_wakeup_disable = 0x40014f48 );
PROVIDE ( gpio_pin_wakeup_enable = 0x40014f14 );
PROVIDE ( gpio_register_get = 0x40014d58 );
PROVIDE ( gpio_register_set = 0x40014c54 );
PROVIDE ( __gtdf2 = 0x40005d14 );
PROVIDE ( g_ticks_per_us = 0x3fffcb00 );
PROVIDE ( __gtsf2 = 0x400059d8 );
PROVIDE ( hmac_md5 = 0x4000586c );
PROVIDE ( hmac_md5_vector = 0x4000577c );
PROVIDE ( ibus_ahb_baseaddrs = 0x3ffae8f8 );
@ -473,8 +417,6 @@ PROVIDE ( _KernelExceptionVector_text_start = 0x40000300 );
PROVIDE ( _kill_r = 0x4001534c );
PROVIDE ( labs = 0x4000076c );
PROVIDE ( ldiv = 0x40000774 );
PROVIDE ( __ledf2 = 0x40005d3c );
PROVIDE ( __lesf2 = 0x400059f8 );
PROVIDE ( _Level2FromVector = 0x400078d4 );
PROVIDE ( _Level2HandlerLabel = 0x00000000 );
PROVIDE ( _Level2InterruptVector_text_end = 0x40000186 );
@ -517,9 +459,6 @@ PROVIDE ( _lock_try_acquire = 0x40015478 );
PROVIDE ( _lock_try_acquire_recursive = 0x4001548c );
PROVIDE ( longjmp = 0x400006c8 );
PROVIDE ( _lseek_r = 0x400153c8 );
PROVIDE ( __lshrdi3 = 0x40016260 );
PROVIDE ( __ltdf2 = 0x40005dc8 );
PROVIDE ( __ltsf2 = 0x40005a64 );
PROVIDE ( main = 0x4000c390 );
PROVIDE ( malloc = 0x400154dc );
PROVIDE ( _malloc_r = 0x400151f0 );
@ -557,42 +496,18 @@ PROVIDE ( memrchr = 0x40015f18 );
PROVIDE ( memset = 0x40015f68 );
PROVIDE ( MMU_Drom0_I2D_Copy = 0x40014788 );
PROVIDE ( MMU_Drom_ICache_Unmap = 0x400147a0 );
PROVIDE ( __moddi3 = 0x40016760 );
PROVIDE ( __modsi3 = 0x400161d4 );
PROVIDE ( __muldc3 = 0x400062e8 );
PROVIDE ( __muldf3 = 0x40005bc4 );
PROVIDE ( __muldi3 = 0x40016410 );
PROVIDE ( __mulsc3 = 0x40005f80 );
PROVIDE ( __mulsf3 = 0x40005900 );
PROVIDE ( __mulsi3 = 0x400161c4 );
PROVIDE ( multofup = 0x40009d90 );
PROVIDE ( __mulvdi3 = 0x4000922c );
PROVIDE ( __mulvsi3 = 0x40009214 );
PROVIDE ( mz_adler32 = 0x4000326c );
PROVIDE ( mz_crc32 = 0x40003334 );
PROVIDE ( mz_free = 0x40003380 );
PROVIDE ( __nedf2 = 0x40005ce0 );
PROVIDE ( __negdf2 = 0x40005ad8 );
PROVIDE ( __negdi2 = 0x40016428 );
PROVIDE ( __negsf2 = 0x4000856c );
PROVIDE ( __negvdi2 = 0x40009348 );
PROVIDE ( __negvsi2 = 0x40009328 );
PROVIDE ( __nesf2 = 0x400059ac );
PROVIDE ( _NMIExceptionVector = 0x400002c0 );
PROVIDE ( _NMIExceptionVector_text_end = 0x400002c3 );
PROVIDE ( _NMIExceptionVector_text_start = 0x400002c0 );
PROVIDE ( __nsau_data = 0x3ffaba70 );
PROVIDE ( open = 0x400084a0 );
PROVIDE ( _open_r = 0x40015390 );
PROVIDE ( __packed = 0x3fffc530 );
PROVIDE ( __paritysi2 = 0x40009414 );
PROVIDE ( _PathLocale = 0x3fffc040 );
PROVIDE ( phy_get_romfuncs = 0x4000a8d4 );
PROVIDE ( __popcountdi2 = 0x400093bc );
PROVIDE ( __popcountsi2 = 0x40009384 );
PROVIDE ( __popcount_tab = 0x3ffaba70 );
PROVIDE ( __powidf2 = 0x40005f1c );
PROVIDE ( __powisf2 = 0x40005ed4 );
PROVIDE ( _Pri_4_HandlerAddress = 0x3fffcfa8 );
PROVIDE ( _Pri_5_HandlerAddress = 0x3fffcfac );
PROVIDE ( _printf_common = 0x4000123c );
@ -888,10 +803,6 @@ PROVIDE ( strtoul = 0x40000dcc );
PROVIDE ( strtoul_l = 0x40000db4 );
PROVIDE ( _strtoul_r = 0x40000d90 );
PROVIDE ( strupr = 0x40008460 );
PROVIDE ( __subdf3 = 0x40008b90 );
PROVIDE ( __subsf3 = 0x4000867c );
PROVIDE ( __subvdi3 = 0x400091d0 );
PROVIDE ( __subvsi3 = 0x400091ac );
PROVIDE ( s_usb_osglue = 0x3fffc520 );
PROVIDE ( __swbuf = 0x40001a58 );
PROVIDE ( __swbuf_r = 0x40001998 );
@ -920,7 +831,6 @@ PROVIDE ( tinfl_decompress_mem_to_mem = 0x40004544 );
PROVIDE ( toascii = 0x400161bc );
PROVIDE ( tolower = 0x40008534 );
PROVIDE ( toupper = 0x40008550 );
PROVIDE ( __truncdfsf2 = 0x40009040 );
PROVIDE ( uart_acm_dev = 0x3fffc9c0 );
PROVIDE ( uartAttach = 0x4000f524 );
PROVIDE ( uart_baudrate_detect = 0x4000f588 );
@ -950,17 +860,7 @@ PROVIDE ( uart_tx_one_char2 = 0x4000f7b0 );
PROVIDE ( uart_tx_switch = 0x4000f57c );
PROVIDE ( uart_tx_wait_idle = 0x4000f7f4 );
PROVIDE ( uart_usb_enable_reset_on_rts = 0x4000f4e8 );
PROVIDE ( __ucmpdi2 = 0x40005e78 );
PROVIDE ( __udivdi3 = 0x40016a08 );
PROVIDE ( __udivmoddi4 = 0x400071fc );
PROVIDE ( __udivsi3 = 0x400161dc );
PROVIDE ( __udiv_w_sdiv = 0x400071f4 );
PROVIDE ( __umoddi3 = 0x40016c8c );
PROVIDE ( __umodsi3 = 0x400161e4 );
PROVIDE ( __umulsidi3 = 0x400161ec );
PROVIDE ( _unlink_r = 0x400152c0 );
PROVIDE ( __unorddf2 = 0x40005e2c );
PROVIDE ( __unordsf2 = 0x40005ab0 );
PROVIDE ( usb_cancel_transfer = 0x4001189c );
PROVIDE ( usb_data_stuff = 0x3ffabe48 );
PROVIDE ( usb_dc_attach = 0x400104f8 );

View File

@ -0,0 +1,98 @@
/* Unlike other ROM functions which are exported using PROVIDE, which declares
weak symbols, these libgcc functions are exported using assignment,
which declares strong symbols. This is done so that ROM functions are always
used instead of the ones provided by libgcc.a.
*/
__absvdi2 = 0x40005eb4;
__absvsi2 = 0x40005ea0;
__adddf3 = 0x40008a3c;
__addsf3 = 0x40008594;
__addvdi3 = 0x4000916c;
__addvsi3 = 0x40009148;
__ashldi3 = 0x4001622c;
__ashrdi3 = 0x40016244;
__bswapdi2 = 0x40007110;
__bswapsi2 = 0x400070e8;
__clrsbdi2 = 0x40007184;
__clrsbsi2 = 0x4000716c;
__clzdi2 = 0x40016464;
__clzsi2 = 0x400161fc;
__cmpdi2 = 0x40005e58;
__ctzdi2 = 0x40016478;
__ctzsi2 = 0x40016204;
__divdc3 = 0x40006c30;
__divdf3 = 0x40008e00;
__divdi3 = 0x40016498;
__divsc3 = 0x40006920;
__divsf3 = 0x400087f8;
__divsi3 = 0x400161cc;
__eqdf2 = 0x40005ce0;
__eqsf2 = 0x400059ac;
__extendsfdf2 = 0x400090e4;
__ffsdi2 = 0x40016440;
__ffssi2 = 0x40016218;
__fixdfdi = 0x40008f74;
__fixdfsi = 0x40008f28;
__fixsfdi = 0x400088f8;
__fixsfsi = 0x400088b8;
__fixunsdfsi = 0x40008fe0;
__fixunssfdi = 0x400089b0;
__fixunssfsi = 0x40008958;
__floatdidf = 0x4001639c;
__floatdisf = 0x400162d4;
__floatsidf = 0x40016358;
__floatsisf = 0x40016284;
__floatundidf = 0x4001638c;
__floatundisf = 0x400162c4;
__floatunsidf = 0x4001634c;
__floatunsisf = 0x40016278;
__gcc_bcmp = 0x400071bc;
__gedf2 = 0x40005da0;
__gesf2 = 0x40005a44;
__gtdf2 = 0x40005d14;
__gtsf2 = 0x400059d8;
__ledf2 = 0x40005d3c;
__lesf2 = 0x400059f8;
__lshrdi3 = 0x40016260;
__ltdf2 = 0x40005dc8;
__ltsf2 = 0x40005a64;
__moddi3 = 0x40016760;
__modsi3 = 0x400161d4;
__muldc3 = 0x400062e8;
__muldf3 = 0x40005bc4;
__muldi3 = 0x40016410;
__mulsc3 = 0x40005f80;
__mulsf3 = 0x40005900;
__mulsi3 = 0x400161c4;
__mulvdi3 = 0x4000922c;
__mulvsi3 = 0x40009214;
__nedf2 = 0x40005ce0;
__negdf2 = 0x40005ad8;
__negdi2 = 0x40016428;
__negsf2 = 0x4000856c;
__negvdi2 = 0x40009348;
__negvsi2 = 0x40009328;
__nesf2 = 0x400059ac;
__nsau_data = 0x3ffaba70;
__paritysi2 = 0x40009414;
__popcountdi2 = 0x400093bc;
__popcountsi2 = 0x40009384;
__popcount_tab = 0x3ffaba70;
__powidf2 = 0x40005f1c;
__powisf2 = 0x40005ed4;
__subdf3 = 0x40008b90;
__subsf3 = 0x4000867c;
__subvdi3 = 0x400091d0;
__subvsi3 = 0x400091ac;
__truncdfsf2 = 0x40009040;
__ucmpdi2 = 0x40005e78;
__udivdi3 = 0x40016a08;
__udivmoddi4 = 0x400071fc;
__udivsi3 = 0x400161dc;
__udiv_w_sdiv = 0x400071f4;
__umoddi3 = 0x40016c8c;
__umodsi3 = 0x400161e4;
__umulsidi3 = 0x400161ec;
__unorddf2 = 0x40005e2c;
__unordsf2 = 0x40005ab0;

View File

@ -1,101 +0,0 @@
/*
Address table for printf/scanf family of functions in ESP32C ROM.
These functions are compiled with newlib "nano" format option.
As such, they don's support 64-bit integer formats.
Floating point formats are supported by setting _printf_float and
_scanf_float entries in syscall table. This is done automatically
by startup code.
Generated for ROM with MD5sum:
b8cb1311c14d3fd5d32ed57d176e99d9 eagle.pro.rom.out
*/
/*
fucntions that support in ESP32, but not in ESP32C
PROVIDE ( asiprintf = 0x40056d9c );
PROVIDE ( _asiprintf_r = 0x40056d4c );
PROVIDE ( asniprintf = 0x40056cd8 );
PROVIDE ( _asniprintf_r = 0x40056c64 );
PROVIDE ( asnprintf = 0x40056cd8 );
PROVIDE ( _asnprintf_r = 0x40056c64 );
PROVIDE ( asprintf = 0x40056d9c );
PROVIDE ( _asprintf_r = 0x40056d4c );
PROVIDE ( fiscanf = 0x40058884 );
PROVIDE ( _fiscanf_r = 0x400588b4 );
PROVIDE ( iprintf = 0x40056978 );
PROVIDE ( _iprintf_r = 0x40056944 );
PROVIDE ( printf = 0x40056978 );
PROVIDE ( _printf_r = 0x40056944 );
PROVIDE ( __svfiscanf_r = 0x40057b08 );
PROVIDE ( __svfscanf = 0x40057f04 );
PROVIDE ( __svfscanf_r = 0x40057b08 );
PROVIDE ( vasiprintf = 0x40056eb8 );
PROVIDE ( _vasiprintf_r = 0x40056e80 );
PROVIDE ( vasniprintf = 0x40056e58 );
PROVIDE ( _vasniprintf_r = 0x40056df8 );
PROVIDE ( vasnprintf = 0x40056e58 );
PROVIDE ( _vasnprintf_r = 0x40056df8 );
PROVIDE ( vasprintf = 0x40056eb8 );
PROVIDE ( _vasprintf_r = 0x40056e80 );
PROVIDE ( vfiscanf = 0x40057eb8 );
PROVIDE ( _vfiscanf_r = 0x40057f24 );
PROVIDE ( vfscanf = 0x40057eb8 );
PROVIDE ( _vfscanf_r = 0x40057f24 );
PROVIDE ( viprintf = 0x400569b4 );
PROVIDE ( _viprintf_r = 0x400569e4 );
PROVIDE ( viscanf = 0x40058698 );
PROVIDE ( _viscanf_r = 0x400586c8 );
PROVIDE ( vprintf = 0x400569b4 );
PROVIDE ( _vprintf_r = 0x400569e4 );
PROVIDE ( vscanf = 0x40058698 );
PROVIDE ( _vscanf_r = 0x400586c8 );
PROVIDE ( vsiprintf = 0x40056ac4 );
PROVIDE ( _vsiprintf_r = 0x40056a90 );
PROVIDE ( vsiscanf = 0x40058740 );
PROVIDE ( _vsiscanf_r = 0x400586f8 );
PROVIDE ( vsniprintf = 0x40056a68 );
PROVIDE ( _vsniprintf_r = 0x40056a14 );
PROVIDE ( vsnprintf = 0x40056a68 );
PROVIDE ( _vsnprintf_r = 0x40056a14 );
PROVIDE ( vsprintf = 0x40056ac4 );
PROVIDE ( _vsprintf_r = 0x40056a90 );
PROVIDE ( vsscanf = 0x40058740 );
PROVIDE ( _vsscanf_r = 0x400586f8 );
PROVIDE ( fscanf = 0x40058884 );
PROVIDE ( _fscanf_r = 0x400588b4 );
PROVIDE ( iscanf = 0x40058760 );
PROVIDE ( _iscanf_r = 0x4005879c );
PROVIDE ( scanf = 0x40058760 );
PROVIDE ( _scanf_r = 0x4005879c );
*/
PROVIDE ( fiprintf = 0x400220d4 );
PROVIDE ( _fiprintf_r = 0x400220b0 );
PROVIDE ( fprintf = 0x400220d4 );
PROVIDE ( _fprintf_r = 0x400220b0 );
PROVIDE ( _printf_common = 0x40022510 );
PROVIDE ( _printf_float = 0x4000dc40 );
PROVIDE ( _printf_i = 0x400225dc );
PROVIDE ( siprintf = 0x40022054 );
PROVIDE ( _siprintf_r = 0x40022008 );
PROVIDE ( sniprintf = 0x40021f98 );
PROVIDE ( _sniprintf_r = 0x40021f30 );
PROVIDE ( snprintf = 0x40021f98 );
PROVIDE ( _snprintf_r = 0x40021f30 );
PROVIDE ( sprintf = 0x40022054 );
PROVIDE ( _sprintf_r = 0x40022008 );
PROVIDE ( __sprint_r = 0x400230e8 );
PROVIDE ( _svfiprintf_r = 0x400222d8 );
PROVIDE ( _svfprintf_r = 0x400222d8 );
PROVIDE ( vfiprintf = 0x400233ec );
PROVIDE ( _vfiprintf_r = 0x40023154 );
PROVIDE ( vfprintf = 0x400233ec );
PROVIDE ( _vfprintf_r = 0x40023154 );
PROVIDE ( _scanf_chars = 0x40022d4c );
PROVIDE ( _scanf_float = 0x4000dc5c );
PROVIDE ( _scanf_i = 0x40022e24 );
PROVIDE ( siscanf = 0x4002340c );
PROVIDE ( _siscanf_r = 0x4002346c );
PROVIDE ( sscanf = 0x4002340c );
PROVIDE ( _sscanf_r = 0x4002346c );
PROVIDE ( __ssvfiscanf_r = 0x400229f4 );
PROVIDE ( __ssvfscanf_r = 0x400229f4 );

View File

@ -0,0 +1,19 @@
/* These are the .bss/.data symbols used by newlib functions present in ESP32S2beta ROM.
See also esp32s2beta.rom.newlib-funcs.ld for the list of general newlib functions,
and esp32s2beta.rom.newlib-stdio.ld for stdio related newlib functions.
Unlike other ROM functions and data which are exported using PROVIDE, which declares
weak symbols, newlib related functions are exported using assignment,
which declares strong symbols. This is done so that ROM functions are always
used instead of the ones provided by libc.a.
*/
_ctype_ = 0x3ffab96c;
__default_global_locale = 0x3ffab800;
_global_impure_ptr = 0x3fffc04c;
__global_locale_ptr = 0x3fffc030;
__locale_ctype_ptr = 0x40002008;
__locale_ctype_ptr_l = 0x40002000;
__locale_mb_cur_max = 0x40001fe8;
__packed = 0x3fffc530;
_PathLocale = 0x3fffc040;

View File

@ -0,0 +1,96 @@
/* These are the newlib functions present in ESP32S2beta ROM.
See also esp32s2beta.rom.newlib-data.ld for the list of .data/.bss symbols
used by these functions, and esp32s2beta.rom.newlib-stdio.ld for stdio related
functions.
Unlike other ROM functions which are exported using PROVIDE, which declares
weak symbols, newlib related functions are exported using assignment,
which declares strong symbols. This is done so that ROM functions are always
used instead of the ones provided by libc.a.
*/
abs = 0x4000073c;
__ascii_mbtowc = 0x40007de0;
__ascii_wctomb = 0x40001cac;
__assert = 0x4001565c;
__assert_func = 0x40015634;
atoi = 0x40000adc;
_atoi_r = 0x40000aec;
atol = 0x40000b04;
_atol_r = 0x40000b14;
bzero = 0x40007ca4;
_cvt = 0x4000c6d8;
div = 0x40000744;
isalnum = 0x40007cb4;
isalpha = 0x40007cc4;
isascii = 0x40015d18;
isblank = 0x40007cd4;
iscntrl = 0x40007cf4;
isdigit = 0x40007d0c;
isgraph = 0x40007d44;
islower = 0x40007d24;
isprint = 0x40007d5c;
ispunct = 0x40007d70;
isspace = 0x40007d88;
isupper = 0x40007da0;
itoa = 0x40000acc;
__itoa = 0x40000a90;
labs = 0x4000076c;
ldiv = 0x40000774;
longjmp = 0x400006c8;
_mbtowc_r = 0x40007dbc;
memccpy = 0x40015d2c;
memchr = 0x40015d50;
memcmp = 0x40015d6c;
memcpy = 0x40015dd4;
memmove = 0x40015edc;
memrchr = 0x40015f18;
memset = 0x40015f68;
pthread_setcancelstate = 0x400151d4;
qsort = 0x40000818;
rand = 0x40007e54;
rand_r = 0x40007ed0;
setjmp = 0x40000664;
srand = 0x40007e00;
strcasecmp = 0x40007f14;
strcasestr = 0x40007f58;
strcat = 0x40015fbc;
strchr = 0x40015fdc;
strcmp = 0x40007fc0;
strcoll = 0x400080c4;
strcpy = 0x400080d8;
strcspn = 0x40015ff8;
strdup = 0x40008160;
_strdup_r = 0x40008174;
strlcat = 0x40008194;
strlcpy = 0x40016024;
strlen = 0x400081e4;
strlwr = 0x40008244;
strncasecmp = 0x40008270;
strncat = 0x40016060;
strncmp = 0x40016090;
strncpy = 0x400082fc;
strndup = 0x400083c4;
_strndup_r = 0x400083d8;
strnlen = 0x400160c8;
strrchr = 0x4000841c;
strsep = 0x40008448;
strspn = 0x400160e8;
strstr = 0x40016114;
__strtok_r = 0x40016144;
strtok_r = 0x400161a8;
strtol = 0x40000c70;
strtol_l = 0x40000c58;
_strtol_r = 0x40000c34;
strtoul = 0x40000dcc;
strtoul_l = 0x40000db4;
_strtoul_r = 0x40000d90;
strupr = 0x40008460;
toascii = 0x400161bc;
tolower = 0x40008534;
toupper = 0x40008550;
utoa = 0x40000654;
__utoa = 0x400005f0;
wcrtomb = 0x400016d0;
_wcrtomb_r = 0x4000167c;
_wctomb_r = 0x40001c88;

View File

@ -0,0 +1,54 @@
/* These are the stdio related newlib functions present in ESP32S2beta ROM.
They are not used when compiling with newlib 3.
*/
PROVIDE ( fclose = 0x40015a30 );
PROVIDE ( _fclose_r = 0x40015940 );
PROVIDE ( fflush = 0x40001f94 );
PROVIDE ( _fflush_r = 0x40001f0c );
PROVIDE ( __fp_lock_all = 0x40015864 );
PROVIDE ( _fwalk = 0x40016efc );
PROVIDE ( _fwalk_reent = 0x40016f34 );
PROVIDE ( fiprintf = 0x40000e18 );
PROVIDE ( _fiprintf_r = 0x40000df4 );
PROVIDE ( fprintf = 0x40000e18 );
PROVIDE ( _fprintf_r = 0x40000df4 );
PROVIDE ( __fp_unlock_all = 0x40015878 );
PROVIDE ( fputwc = 0x40001c40 );
PROVIDE ( __fputwc = 0x40001b4c );
PROVIDE ( _fputwc_r = 0x40001bd4 );
PROVIDE ( _printf_common = 0x4000123c );
PROVIDE ( _printf_float = 0x40015538 );
PROVIDE ( _printf_i = 0x40001308 );
PROVIDE ( vfiprintf = 0x4000121c );
PROVIDE ( _vfiprintf_r = 0x40000f34 );
PROVIDE ( vfprintf = 0x4000121c );
PROVIDE ( _vfprintf_r = 0x40000f34 );
PROVIDE ( _scanf_float = 0x40015554 );
PROVIDE ( __sclose = 0x4001592c );
PROVIDE ( __seofread = 0x400158bc );
PROVIDE ( __sf_fake_stderr = 0x3ffae938 );
PROVIDE ( __sf_fake_stdin = 0x3ffae978 );
PROVIDE ( __sf_fake_stdout = 0x3ffae958 );
PROVIDE ( __sflush_r = 0x40001db8 );
PROVIDE ( __sfmoreglue = 0x400156f4 );
PROVIDE ( __sfp = 0x400157bc );
PROVIDE ( __sfp_lock_acquire = 0x40015734 );
PROVIDE ( __sfp_lock_release = 0x40015740 );
PROVIDE ( __sfputs_r = 0x40000e7c );
PROVIDE ( __sfvwrite_r = 0x400016ec );
PROVIDE ( __sinit = 0x40015764 );
PROVIDE ( __sinit_lock_acquire = 0x4001574c );
PROVIDE ( __sinit_lock_release = 0x40015758 );
PROVIDE ( __smakebuf_r = 0x40001d30 );
PROVIDE ( __sprint_r = 0x40000ec8 );
PROVIDE ( __sread = 0x4001588c );
PROVIDE ( __sseek = 0x400158f8 );
PROVIDE ( __swbuf = 0x40001a58 );
PROVIDE ( __swbuf_r = 0x40001998 );
PROVIDE ( __swhatbuf_r = 0x40001cd4 );
PROVIDE ( __swrite = 0x400158c4 );
PROVIDE ( __swsetup_r = 0x40001a6c );
PROVIDE ( _cleanup = 0x40015724 );
PROVIDE ( _cleanup_r = 0x400156ac );
PROVIDE ( creat = 0x40007c68 );

View File

@ -0,0 +1,103 @@
/*
ROM Functions defined in this file are not used in ESP-IDF as is,
and different definitions for functions with the same names are provided.
This file is not used when linking ESP-IDF and is intended for reference only
*/
PROVIDE ( abort = 0x400151e0 );
PROVIDE ( ets_timer_arm = 0x4000d76c );
PROVIDE ( ets_timer_arm_us = 0x4000d7b0 );
PROVIDE ( ets_timer_disarm = 0x4000d7f0 );
PROVIDE ( ets_timer_done = 0x4000d82c );
PROVIDE ( ets_timer_handler_isr = 0x4000d858 );
PROVIDE ( ets_timer_init = 0x4000d8ec );
PROVIDE ( ets_timer_setfn = 0x4000d754 );
PROVIDE ( _KernelExceptionVector = 0x40000300 );
PROVIDE ( _KernelExceptionVector_text_end = 0x40000306 );
PROVIDE ( _KernelExceptionVector_text_start = 0x40000300 );
PROVIDE ( _NMIExceptionVector = 0x400002c0 );
PROVIDE ( _NMIExceptionVector_text_end = 0x400002c3 );
PROVIDE ( _NMIExceptionVector_text_start = 0x400002c0 );
PROVIDE ( _UserExceptionVector = 0x40000340 );
PROVIDE ( _UserExceptionVector_text_end = 0x40000357 );
PROVIDE ( _UserExceptionVector_text_start = 0x40000340 );
PROVIDE ( _DebugExceptionVector = 0x40000280 );
PROVIDE ( _DebugExceptionVector_text_end = 0x4000028b );
PROVIDE ( _DebugExceptionVector_text_start = 0x40000280 );
PROVIDE ( _DoubleExceptionVector = 0x400003c0 );
PROVIDE ( _DoubleExceptionVector_text_end = 0x400003c6 );
PROVIDE ( _DoubleExceptionVector_text_start = 0x400003c0 );
PROVIDE ( _Level2FromVector = 0x400078d4 );
PROVIDE ( _Level2HandlerLabel = 0x00000000 );
PROVIDE ( _Level2InterruptVector_text_end = 0x40000186 );
PROVIDE ( _Level2InterruptVector_text_start = 0x40000180 );
PROVIDE ( _Level2Vector = 0x40000180 );
PROVIDE ( _Level3FromVector = 0x40007970 );
PROVIDE ( _Level3HandlerLabel = 0x00000000 );
PROVIDE ( _Level3InterruptVector_text_end = 0x400001c6 );
PROVIDE ( _Level3InterruptVector_text_start = 0x400001c0 );
PROVIDE ( _Level3Vector = 0x400001c0 );
PROVIDE ( _Level4FromVector = 0x40007a08 );
PROVIDE ( _Level4HandlerLabel = 0x00000000 );
PROVIDE ( _Level4InterruptVector_text_end = 0x40000206 );
PROVIDE ( _Level4InterruptVector_text_start = 0x40000200 );
PROVIDE ( _Level4Vector = 0x40000200 );
PROVIDE ( _Level5FromVector = 0x40007b38 );
PROVIDE ( _Level5HandlerLabel = 0x00000000 );
PROVIDE ( _Level5InterruptVector_text_end = 0x40000246 );
PROVIDE ( _Level5InterruptVector_text_start = 0x40000240 );
PROVIDE ( _Level5Vector = 0x40000240 );
PROVIDE ( _LevelOneInterrupt = 0x400077e6 );
PROVIDE ( _ResetHandler = 0x4000044c );
PROVIDE ( _ResetVector = 0x40000400 );
PROVIDE ( _ResetVector_literal_end = 0x40000540 );
PROVIDE ( _ResetVector_literal_start = 0x40000540 );
PROVIDE ( _ResetVector_text_end = 0x4000053d );
PROVIDE ( _ResetVector_text_start = 0x40000400 );
PROVIDE ( _SyscallException = 0x40007706 );
PROVIDE ( _WindowOverflow12 = 0x40000100 );
PROVIDE ( _WindowOverflow4 = 0x40000000 );
PROVIDE ( _WindowOverflow8 = 0x40000080 );
PROVIDE ( _WindowUnderflow12 = 0x40000140 );
PROVIDE ( _WindowUnderflow4 = 0x40000040 );
PROVIDE ( _WindowUnderflow8 = 0x400000c0 );
PROVIDE ( _WindowVectors_text_end = 0x40000170 );
PROVIDE ( _WindowVectors_text_start = 0x40000000 );
PROVIDE ( hmac_md5 = 0x4000586c );
PROVIDE ( hmac_md5_vector = 0x4000577c );
PROVIDE ( MD5Final = 0x400056e8 );
PROVIDE ( MD5Init = 0x40005648 );
PROVIDE ( MD5Update = 0x40005668 );
PROVIDE ( md5_vector = 0x40005750 );
PROVIDE ( _xtos_alloca_handler = 0x40000010 );
PROVIDE ( xtos_cause3_handler = 0x4000774c );
PROVIDE ( xtos_c_handler_table = 0x3fffcea8 );
PROVIDE ( xtos_c_wrapper_handler = 0x4000775c );
PROVIDE ( _xtos_enabled = 0x3fffcfb0 );
PROVIDE ( xtos_exc_handler_table = 0x3fffcda8 );
PROVIDE ( xtos_interrupt_mask_table = 0x3fffd0b8 );
PROVIDE ( xtos_interrupt_table = 0x3fffcfb8 );
PROVIDE ( _xtos_ints_off = 0x4001560c );
PROVIDE ( _xtos_ints_on = 0x400155e8 );
PROVIDE ( _xtos_intstruct = 0x3fffcfb0 );
PROVIDE ( _xtos_l1int_handler = 0x400077c8 );
PROVIDE ( xtos_p_none = 0x40015acc );
PROVIDE ( _xtos_restore_intlevel = 0x400078a8 );
PROVIDE ( _xtos_return_from_exc = 0x40015ad4 );
PROVIDE ( _xtos_set_exception_handler = 0x40007690 );
PROVIDE ( _xtos_set_interrupt_handler = 0x400155ac );
PROVIDE ( _xtos_set_interrupt_handler_arg = 0x40015570 );
PROVIDE ( _xtos_set_intlevel = 0x40015aec );
PROVIDE ( _xtos_set_min_intlevel = 0x40015b08 );
PROVIDE ( _xtos_set_vpri = 0x400078b4 );
PROVIDE ( _xtos_syscall_handler = 0x400076d8 );
PROVIDE ( xtos_unhandled_exception = 0x40015b2c );
PROVIDE ( xtos_unhandled_interrupt = 0x40015b3c );
PROVIDE ( _xtos_vectors_ref_ = 0x00000000 );
PROVIDE ( _xtos_vpri_enabled = 0x3fffcfb4 );
PROVIDE ( setlocale = 0x40002020 );
PROVIDE ( _setlocale_r = 0x40001fb8 );

View File

@ -1,28 +1,25 @@
/*
Address table for SPI driver functions in ESP32 ROM.
These functions are only linked from ROM when SPI_FLASH_ROM_DRIVER_PATCH is not set in configuration.
SPI flash driver function, compatibility names.
*/
/*
PROVIDE ( esp_rom_spiflash_write_encrypted = 0x4000ae24 );
PROVIDE ( esp_rom_spiflash_erase_area = 0x4000b0a0 );
PROVIDE ( esp_rom_spiflash_erase_block = 0x4000ac20 );
PROVIDE ( esp_rom_spiflash_erase_chip = 0x4000ac00 );
PROVIDE ( esp_rom_spiflash_erase_sector = 0x4000ac80 );
PROVIDE ( esp_rom_spiflash_lock = 0x4000aa30 );
PROVIDE ( esp_rom_spiflash_read = 0x4000ae84 );
*/
/* SPIMasterReadModeCnfig */
/*
PROVIDE ( esp_rom_spiflash_config_readmode = 0x4000ab2c );
PROVIDE ( esp_rom_spiflash_read_status = 0x40009db8 );
PROVIDE ( esp_rom_spiflash_read_statushigh = 0x40009ffc );
PROVIDE ( esp_rom_spiflash_write = 0x4000ace0 );
PROVIDE ( esp_rom_spiflash_enable_write = 0x4000a2b8 );
PROVIDE ( esp_rom_spiflash_write_status = 0x4000a01c );
*/
/* always using patched versions of these functions
PROVIDE ( esp_rom_spiflash_wait_idle = 0x40009e64 );
PROVIDE ( esp_rom_spiflash_unlock = 0x400????? );
*/
PROVIDE ( cache_ibus_mmu_set_rom = cache_ibus_mmu_set );
PROVIDE ( Cache_Read_Disable_rom = Cache_Read_Disable );
PROVIDE ( Cache_Read_Enable_rom = Cache_Read_Enable );
PROVIDE ( cache_dbus_mmu_set_rom = cache_dbus_mmu_set );
PROVIDE ( g_rom_spiflash_dummy_len_plus = dummy_len_plus);
PROVIDE ( g_ticks_per_us_pro = g_ticks_per_us );
PROVIDE ( g_rom_flashchip = SPI_flashchip_data );
PROVIDE ( g_rom_spiflash_chip = SPI_flashchip_data );
PROVIDE ( esp_rom_spiflash_config_param = SPIParamCfg );
PROVIDE ( esp_rom_spiflash_read = SPIRead );
PROVIDE ( esp_rom_spiflash_read_status = SPI_read_status );
PROVIDE ( esp_rom_spiflash_read_statushigh = SPI_read_status_high );
PROVIDE ( esp_rom_spiflash_read_user_cmd = SPI_user_command_read );
PROVIDE ( esp_rom_spiflash_write = SPIWrite );
PROVIDE ( esp_rom_spiflash_write_encrypted_disable = SPI_Write_Encrypt_Disable );
PROVIDE ( esp_rom_spiflash_write_encrypted_enable = SPI_Write_Encrypt_Enable );
PROVIDE ( esp_rom_spiflash_config_clk = SPIClkConfig );
PROVIDE ( esp_rom_spiflash_select_qio_pins = SelectSpiQIO );
PROVIDE ( esp_rom_spiflash_unlock = SPIUnlock );
PROVIDE ( esp_rom_spiflash_erase_sector = SPIEraseSector );

View File

@ -1,20 +0,0 @@
PROVIDE ( cache_ibus_mmu_set_rom = cache_ibus_mmu_set );
PROVIDE ( Cache_Read_Disable_rom = Cache_Read_Disable );
PROVIDE ( Cache_Read_Enable_rom = Cache_Read_Enable );
PROVIDE ( cache_dbus_mmu_set_rom = cache_dbus_mmu_set );
PROVIDE ( g_rom_spiflash_dummy_len_plus = dummy_len_plus);
PROVIDE ( g_ticks_per_us_pro = g_ticks_per_us );
PROVIDE ( g_rom_flashchip = SPI_flashchip_data );
PROVIDE ( g_rom_spiflash_chip = SPI_flashchip_data );
PROVIDE ( esp_rom_spiflash_config_param = SPIParamCfg );
PROVIDE ( esp_rom_spiflash_read = SPIRead );
PROVIDE ( esp_rom_spiflash_read_status = SPI_read_status );
PROVIDE ( esp_rom_spiflash_read_statushigh = SPI_read_status_high );
PROVIDE ( esp_rom_spiflash_read_user_cmd = SPI_user_command_read );
PROVIDE ( esp_rom_spiflash_write = SPIWrite );
PROVIDE ( esp_rom_spiflash_write_encrypted_disable = SPI_Write_Encrypt_Disable );
PROVIDE ( esp_rom_spiflash_write_encrypted_enable = SPI_Write_Encrypt_Enable );
PROVIDE ( esp_rom_spiflash_config_clk = SPIClkConfig );
PROVIDE ( esp_rom_spiflash_select_qio_pins = SelectSpiQIO );
PROVIDE ( esp_rom_spiflash_unlock = SPIUnlock );
PROVIDE ( esp_rom_spiflash_erase_sector = SPIEraseSector );

View File

@ -0,0 +1,60 @@
/* These ROM functions call respective entries in the syscall table.
They are called by other ROM functions (mostly from newlib).
We don't link to them directly, since in IDF there are actual
implementations of these functions, with same names.
I.e.:
times (in ROM) -> _times_r (in ROM) -> syscall table entry _times_r -> _times_r (in IDF)
Hence the following entries are provided only for reference
and commented out.
*/
/*
PROVIDE ( calloc = 0x40015520 );
PROVIDE ( _calloc_r = 0x40015234 );
PROVIDE ( close = 0x4000848c );
PROVIDE ( _close_r = 0x40015378 );
PROVIDE ( free = 0x400154f4 );
PROVIDE ( _free_r = 0x40015208 );
PROVIDE ( _fstat_r = 0x40015308 );
PROVIDE ( _getpid_r = 0x40015338 );
PROVIDE ( __getreent = 0x400154c8 );
PROVIDE ( _gettimeofday_r = 0x40015294 );
PROVIDE ( _kill_r = 0x4001534c );
PROVIDE ( _link_r = 0x400152d8 );
PROVIDE ( _lock_acquire = 0x40015450 );
PROVIDE ( _lock_acquire_recursive = 0x40015464 );
PROVIDE ( _lock_close = 0x40015428 );
PROVIDE ( _lock_close_recursive = 0x4001543c );
PROVIDE ( _lock_init = 0x40015400 );
PROVIDE ( _lock_init_recursive = 0x40015414 );
PROVIDE ( _lock_release = 0x400154a0 );
PROVIDE ( _lock_release_recursive = 0x400154b4 );
PROVIDE ( _lock_try_acquire = 0x40015478 );
PROVIDE ( _lock_try_acquire_recursive = 0x4001548c );
PROVIDE ( _lseek_r = 0x400153c8 );
PROVIDE ( malloc = 0x400154dc );
PROVIDE ( _malloc_r = 0x400151f0 );
PROVIDE ( open = 0x400084a0 );
PROVIDE ( _open_r = 0x40015390 );
PROVIDE ( _raise_r = 0x400152ac );
PROVIDE ( read = 0x400084f0 );
PROVIDE ( _read_r = 0x400153e4 );
PROVIDE ( realloc = 0x40015508 );
PROVIDE ( _realloc_r = 0x4001521c );
PROVIDE ( _rename_r = 0x40015264 );
PROVIDE ( sbrk = 0x40008508 );
PROVIDE ( _sbrk_r = 0x40015320 );
PROVIDE ( _stat_r = 0x400152f0 );
PROVIDE ( _system_r = 0x4001524c );
PROVIDE ( _times_r = 0x4001527c );
PROVIDE ( _unlink_r = 0x400152c0 );
PROVIDE ( write = 0x4000851c );
PROVIDE ( _write_r = 0x400153ac );
PROVIDE ( _isatty_r = 0x40007c7c );
PROVIDE ( _exit_r = 0x40015364 );
*/

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