From 888b5f7e8dabc4534351cbd44cdd9f3c7e26e738 Mon Sep 17 00:00:00 2001 From: Alexey Lapshin Date: Thu, 26 Sep 2024 13:13:20 +0700 Subject: [PATCH] feat(newlib): add picolibc support --- .codespellrc | 2 +- .pre-commit-config.yaml | 4 +- Kconfig | 1 + .../subproject/main/bootloader_start.c | 2 + .../bt/common/osi/include/osi/hash_map.h | 1 + components/console/linenoise/linenoise.c | 12 +- components/driver/deprecated/mcpwm_legacy.c | 1 + .../test_apps/twai/main/test_app_main.c | 1 + components/esp-tls/test_apps/main/app_main.c | 1 + .../dvp/src/esp_cam_ctlr_dvp_cam.c | 1 + .../test_apps/gpio/main/test_app_main.c | 1 + .../gpio_extensions/main/test_app_main.c | 1 + .../esp_driver_gptimer/src/gptimer_common.c | 1 + components/esp_driver_i2c/i2c_common.c | 1 + components/esp_driver_ledc/src/ledc.c | 1 + .../test_apps/ledc/main/test_app_main.c | 1 + .../test_apps/parlio/main/test_app_main.c | 1 + components/esp_driver_ppa/src/ppa_priv.h | 1 + .../test_apps/main/test_app_main.c | 1 + .../test_apps/rmt/main/test_app_main.c | 1 + .../test_apps/sdmmc/main/test_app_main.c | 1 + .../test_apps/master/main/test_app_main.c | 1 + .../test_apps/param/main/test_app_main.c | 1 + .../test_apps/slave/main/test_app_main.c | 1 + .../test_apps/slave_hd/main/test_app_main.c | 1 + components/esp_driver_uart/src/uart_vfs.c | 18 +- .../test_apps/rs485/main/test_app_main.c | 1 + .../test_apps/uart/main/test_app_main.c | 1 + .../test_apps/uart_vfs/main/test_app_main.c | 1 + .../src/usb_serial_jtag_vfs.c | 8 +- .../usb_serial_jtag_vfs/main/test_app_main.c | 1 + components/esp_gdbstub/src/gdbstub.c | 72 +- .../test_apps/dma2d/main/test_app_main.c | 1 + .../test_apps/mspi/main/test_app_main.c | 1 + .../mspi_psram_with_dfs/main/test_app_main.c | 1 + components/esp_netif/include/esp_netif_sntp.h | 3 +- components/esp_phy/include/esp_private/phy.h | 1 + components/esp_phy/src/btbb_init.c | 1 + components/esp_pm/pm_impl.c | 1 + components/esp_rom/CMakeLists.txt | 34 +- ...ewlib-funcs.ld => esp32.rom.libc-funcs.ld} | 61 +- .../esp32/ld/esp32.rom.newlib-reent-funcs.ld | 61 + .../esp_rom/esp32c2/ld/esp32c2.rom.libc.ld | 90 + .../esp_rom/esp32c2/ld/esp32c2.rom.newlib.ld | 92 +- .../esp_rom/esp32c3/ld/esp32c3.rom.libc.ld | 65 + .../esp_rom/esp32c3/ld/esp32c3.rom.newlib.ld | 69 +- .../esp_rom/esp32c5/ld/esp32c5.rom.libc.ld | 65 + .../esp_rom/esp32c5/ld/esp32c5.rom.newlib.ld | 64 +- .../esp_rom/esp32c6/ld/esp32c6.rom.libc.ld | 65 + .../esp_rom/esp32c6/ld/esp32c6.rom.newlib.ld | 66 +- .../esp_rom/esp32c61/ld/esp32c61.rom.libc.ld | 65 + .../esp32c61/ld/esp32c61.rom.newlib.ld | 64 +- .../esp_rom/esp32h2/ld/esp32h2.rom.libc.ld | 65 + .../esp_rom/esp32h2/ld/esp32h2.rom.newlib.ld | 66 +- .../esp_rom/esp32p4/ld/esp32p4.rom.libc.ld | 65 + .../esp_rom/esp32p4/ld/esp32p4.rom.newlib.ld | 66 +- .../esp32s2/include/esp32s2/rom/efuse.h | 1 + ...lib-funcs.ld => esp32s2.rom.libc-funcs.ld} | 52 +- .../ld/esp32s2.rom.newlib-reent-funcs.ld | 52 + .../esp_rom/esp32s3/ld/esp32s3.rom.libc.ld | 66 + .../esp_rom/esp32s3/ld/esp32s3.rom.newlib.ld | 75 +- .../esp_rom/patches/esp_rom_multi_heap.c | 1 + components/esp_rom/patches/esp_rom_tlsf.c | 1 + components/esp_system/startup_funcs.c | 5 +- components/esp_system/system_init_fn.txt | 4 +- components/esp_vfs_console/vfs_cdcacm.c | 8 +- components/fatfs/vfs/vfs_fat.c | 4 + .../include/freertos/FreeRTOSConfig_arch.h | 4 + .../include/freertos/FreeRTOSConfig_arch.h | 4 + components/mbedtls/test_apps/main/app_main.c | 1 + .../test_apps/main/test_mbedtls_utils.c | 1 + components/newlib/CMakeLists.txt | 83 +- components/newlib/COPYING.picolibc | 6332 +++++++++++++++++ components/newlib/Kconfig | 50 +- components/newlib/platform_include/endian.h | 3 + .../newlib/platform_include/esp_newlib.h | 56 +- components/newlib/platform_include/stdio.h | 14 + .../newlib/platform_include/stdio_ext.h | 14 + .../newlib/platform_include/{ => sys}/errno.h | 8 +- components/newlib/platform_include/sys/lock.h | 12 + .../newlib/platform_include/sys/reent.h | 15 + .../newlib/priv_include/esp_time_impl.h | 6 +- components/newlib/sdkconfig.rename | 17 + components/newlib/sdkconfig.rename.esp32 | 12 +- components/newlib/sdkconfig.rename.esp32c3 | 8 +- components/newlib/sdkconfig.rename.esp32s2 | 12 +- components/newlib/sdkconfig.rename.esp32s3 | 12 +- components/newlib/{ => src}/.gitignore | 0 components/newlib/{ => src}/abort.c | 0 components/newlib/{ => src}/assert.c | 6 +- .../{ => src}/esp32-spiram-rom-functions-c.lf | 0 components/newlib/{ => src}/flockfile.c | 0 components/newlib/{ => src}/getentropy.c | 2 +- components/newlib/{ => src}/heap.c | 42 +- components/newlib/src/init.c | 30 + components/newlib/{ => src}/locks.c | 51 +- components/newlib/{ => src}/newlib.lf | 0 components/newlib/{ => src}/newlib_init.c | 74 +- .../picolibc/esp32-spiram-rom-functions-c.lf | 162 + .../newlib/src/picolibc/open_memstream.c | 128 + .../newlib/src/picolibc/picolibc_init.c | 179 + components/newlib/src/picolibc/rand.c | 22 + components/newlib/{ => src}/poll.c | 4 +- .../newlib/{ => src}/port/CMakeLists.txt | 0 .../newlib/{ => src}/port/esp_time_impl.c | 5 - .../{ => src}/port/xtensa/stdatomic_s32c1i.c | 0 components/newlib/{ => src}/pthread.c | 2 +- components/newlib/{ => src}/random.c | 2 +- components/newlib/{ => src}/realpath.c | 0 components/newlib/{ => src}/reent_init.c | 0 .../{syscalls.c => src/reent_syscalls.c} | 30 +- components/newlib/{ => src}/scandir.c | 0 components/newlib/{ => src}/stdatomic.c | 0 components/newlib/src/syscalls.c | 131 + components/newlib/{ => src}/sysconf.c | 0 components/newlib/{ => src}/system_libs.lf | 0 components/newlib/{ => src}/termios.c | 0 components/newlib/{ => src}/time.c | 6 +- .../newlib/test_apps/newlib/CMakeLists.txt | 1 - .../test_apps/newlib/main/CMakeLists.txt | 32 +- .../test_apps/newlib/main/test_memstream.c | 72 + .../test_apps/newlib/main/test_newlib.c | 16 +- .../newlib/test_apps/newlib/pytest_newlib.py | 1 + .../test_apps/newlib/sdkconfig.ci.picolibc | 2 + .../newlib/sdkconfig.ci.release_esp32c2 | 8 +- components/nvs_flash/src/nvs_platform.hpp | 3 + .../nvs_flash/test_apps/main/app_main.c | 1 + components/pthread/pthread_cond_var.c | 1 + components/spi_flash/spi_flash_os_func_app.c | 1 + .../esp_flash_stress/main/test_app_main.c | 1 + components/ulp/cmake/IDFULPProject.cmake | 5 + components/ulp/esp32ulp_mapgen.py | 11 +- components/ulp/project_include.cmake | 1 + components/vfs/vfs.c | 48 +- docs/en/COPYRIGHT.rst | 3 +- docs/en/api-guides/c.rst | 9 +- docs/en/api-guides/lwip.rst | 2 +- docs/en/api-guides/performance/ram-usage.rst | 1 + docs/en/api-guides/performance/size.rst | 17 +- docs/en/api-guides/stdio.rst | 4 +- docs/en/api-reference/system/system_time.rst | 2 +- docs/zh_CN/COPYRIGHT.rst | 5 +- docs/zh_CN/api-guides/c.rst | 9 +- docs/zh_CN/api-guides/lwip.rst | 2 +- .../api-guides/performance/ram-usage.rst | 1 + docs/zh_CN/api-guides/performance/size.rst | 17 +- .../api-reference/system/system_time.rst | 2 +- .../include/bt_hci_common.h | 3 +- .../main/import_lib_example_main.cpp | 4 +- .../plugins/components/plugins/plugins.c | 1 + .../main/bootloader_start.c | 3 + .../deep_sleep/sdkconfig.defaults | 2 +- examples/system/deep_sleep/sdkconfig.ci.basic | 2 +- .../deep_sleep/sdkconfig.ci.esp32_singlecore | 2 +- examples/system/deep_sleep/sdkconfig.defaults | 2 +- examples/system/esp_timer/sdkconfig.ci.rtc | 2 +- .../unit_test/main/example_unit_test_main.c | 1 + tools/ci/check_copyright_ignore.txt | 4 - tools/cmake/project.cmake | 7 + tools/cmake/toolchain-esp32.cmake | 2 + tools/cmake/toolchain-esp32c2.cmake | 3 +- tools/cmake/toolchain-esp32c3.cmake | 3 +- tools/cmake/toolchain-esp32c5.cmake | 3 +- tools/cmake/toolchain-esp32c6.cmake | 3 +- tools/cmake/toolchain-esp32c61.cmake | 3 +- tools/cmake/toolchain-esp32h2.cmake | 3 +- tools/cmake/toolchain-esp32p4.cmake | 3 +- tools/cmake/toolchain-esp32s2.cmake | 2 + tools/cmake/toolchain-esp32s3.cmake | 2 + tools/ldgen/samples/sdkconfig | 20 +- .../partition_table_readonly/main/main.c | 4 + 171 files changed, 8434 insertions(+), 1012 deletions(-) rename components/esp_rom/esp32/ld/{esp32.rom.newlib-funcs.ld => esp32.rom.libc-funcs.ld} (59%) create mode 100644 components/esp_rom/esp32/ld/esp32.rom.newlib-reent-funcs.ld create mode 100644 components/esp_rom/esp32c2/ld/esp32c2.rom.libc.ld create mode 100644 components/esp_rom/esp32c3/ld/esp32c3.rom.libc.ld create mode 100644 components/esp_rom/esp32c5/ld/esp32c5.rom.libc.ld create mode 100644 components/esp_rom/esp32c6/ld/esp32c6.rom.libc.ld create mode 100644 components/esp_rom/esp32c61/ld/esp32c61.rom.libc.ld create mode 100644 components/esp_rom/esp32h2/ld/esp32h2.rom.libc.ld create mode 100644 components/esp_rom/esp32p4/ld/esp32p4.rom.libc.ld rename components/esp_rom/esp32s2/ld/{esp32s2.rom.newlib-funcs.ld => esp32s2.rom.libc-funcs.ld} (58%) create mode 100644 components/esp_rom/esp32s2/ld/esp32s2.rom.newlib-reent-funcs.ld create mode 100644 components/esp_rom/esp32s3/ld/esp32s3.rom.libc.ld create mode 100644 components/newlib/COPYING.picolibc create mode 100644 components/newlib/platform_include/stdio.h create mode 100644 components/newlib/platform_include/stdio_ext.h rename components/newlib/platform_include/{ => sys}/errno.h (83%) create mode 100644 components/newlib/sdkconfig.rename rename components/newlib/{ => src}/.gitignore (100%) rename components/newlib/{ => src}/abort.c (100%) rename components/newlib/{ => src}/assert.c (93%) rename components/newlib/{ => src}/esp32-spiram-rom-functions-c.lf (100%) rename components/newlib/{ => src}/flockfile.c (100%) rename components/newlib/{ => src}/getentropy.c (92%) rename components/newlib/{ => src}/heap.c (92%) create mode 100644 components/newlib/src/init.c rename components/newlib/{ => src}/locks.c (95%) rename components/newlib/{ => src}/newlib.lf (100%) rename components/newlib/{ => src}/newlib_init.c (74%) create mode 100644 components/newlib/src/picolibc/esp32-spiram-rom-functions-c.lf create mode 100644 components/newlib/src/picolibc/open_memstream.c create mode 100644 components/newlib/src/picolibc/picolibc_init.c create mode 100644 components/newlib/src/picolibc/rand.c rename components/newlib/{ => src}/poll.c (96%) rename components/newlib/{ => src}/port/CMakeLists.txt (100%) rename components/newlib/{ => src}/port/esp_time_impl.c (98%) rename components/newlib/{ => src}/port/xtensa/stdatomic_s32c1i.c (100%) rename components/newlib/{ => src}/pthread.c (95%) rename components/newlib/{ => src}/random.c (92%) rename components/newlib/{ => src}/realpath.c (100%) rename components/newlib/{ => src}/reent_init.c (100%) rename components/newlib/{syscalls.c => src/reent_syscalls.c} (85%) rename components/newlib/{ => src}/scandir.c (100%) rename components/newlib/{ => src}/stdatomic.c (100%) create mode 100644 components/newlib/src/syscalls.c rename components/newlib/{ => src}/sysconf.c (100%) rename components/newlib/{ => src}/system_libs.lf (100%) rename components/newlib/{ => src}/termios.c (100%) rename components/newlib/{ => src}/time.c (98%) create mode 100644 components/newlib/test_apps/newlib/main/test_memstream.c create mode 100644 components/newlib/test_apps/newlib/sdkconfig.ci.picolibc diff --git a/.codespellrc b/.codespellrc index e9be43f21608..3e7c39a06b6d 100644 --- a/.codespellrc +++ b/.codespellrc @@ -1,4 +1,4 @@ [codespell] -skip = build,*.yuv,components/fatfs/src/*,alice.txt,*.rgb,components/wpa_supplicant/*,components/esp_wifi/*,*.pem +skip = build,*.yuv,components/fatfs/src/*,alice.txt,*.rgb,components/wpa_supplicant/*,components/esp_wifi/*,*.pem,components/newlib/COPYING.* ignore-words-list = ser,dout,rsource,fram,inout,shs,ans,aci,unstall,unstalling,hart,wheight,wel,ot,fane,assertIn,registr,oen,parms write-changes = true diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 439b6250fb1a..f034e59202b1 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -14,6 +14,7 @@ repos: # 2 - any file matching *test*/*expected* (for host tests, if possible use this naming pattern always) # 3 - any directory named 'testdata' # 4 - protobuf auto-generated files + # 5 - COPYING files exclude: &whitespace_excludes | (?x)^( .+\.(md|rst|map|bin)| @@ -23,7 +24,8 @@ repos: .*.pb-c.h| .*.pb-c.c| .*.yuv| - .*.rgb + .*.rgb| + .*COPYING.* )$ - id: end-of-file-fixer exclude: *whitespace_excludes diff --git a/Kconfig b/Kconfig index 6e16fb3248db..da25de649daf 100644 --- a/Kconfig +++ b/Kconfig @@ -696,3 +696,4 @@ mainmenu "Espressif IoT Development Framework Configuration" - CONFIG_ESP_WIFI_ENABLE_ROAMING_APP - CONFIG_USB_HOST_EXT_PORT_SUPPORT_LS - CONFIG_USB_HOST_EXT_PORT_RESET_ATTEMPTS + - CONFIG_LIBC_PICOLIBC diff --git a/components/bootloader/subproject/main/bootloader_start.c b/components/bootloader/subproject/main/bootloader_start.c index 71d83a79d031..64d80c77c9ba 100644 --- a/components/bootloader/subproject/main/bootloader_start.c +++ b/components/bootloader/subproject/main/bootloader_start.c @@ -134,8 +134,10 @@ static int selected_boot_partition(const bootloader_state_t *bs) return boot_index; } +#if CONFIG_LIBC_NEWLIB // Return global reent struct if any newlib functions are linked to bootloader struct _reent *__getreent(void) { return _GLOBAL_REENT; } +#endif diff --git a/components/bt/common/osi/include/osi/hash_map.h b/components/bt/common/osi/include/osi/hash_map.h index fea1e0212c56..a26eda613c77 100644 --- a/components/bt/common/osi/include/osi/hash_map.h +++ b/components/bt/common/osi/include/osi/hash_map.h @@ -20,6 +20,7 @@ #define _HASH_MAP_H_ #include +#include #include struct hash_map_t; diff --git a/components/console/linenoise/linenoise.c b/components/console/linenoise/linenoise.c index e585ab7e89c6..b1f16db0179b 100644 --- a/components/console/linenoise/linenoise.c +++ b/components/console/linenoise/linenoise.c @@ -112,7 +112,8 @@ // On Linux, we don't need __fbufsize (see comments below), and // __fbufsize not available on MacOS (which is also considered "Linux" target) #include // for __fbufsize -#endif +#endif // !CONFIG_IDF_TARGET_LINUX +#include #include #include #include @@ -226,10 +227,15 @@ static void flushWrite(void) { // Performance on Linux is not considered as critical as on chip targets. Additionally, // MacOS does not have __fbufsize. #if !CONFIG_IDF_TARGET_LINUX - if (__fbufsize(stdout) > 0) { +#if CONFIG_LIBC_PICOLIBC + if (((struct __file_bufio *)(stdout))->len > 0) +#else // CONFIG_LIBC_PICOLIBC + if (__fbufsize(stdout) > 0) +#endif // CONFIG_LIBC_PICOLIBC + { fflush(stdout); } -#endif +#endif // !CONFIG_IDF_TARGET_LINUX fsync(fileno(stdout)); } diff --git a/components/driver/deprecated/mcpwm_legacy.c b/components/driver/deprecated/mcpwm_legacy.c index 87d5cdda7cff..625895c74137 100644 --- a/components/driver/deprecated/mcpwm_legacy.c +++ b/components/driver/deprecated/mcpwm_legacy.c @@ -5,6 +5,7 @@ */ #include "sdkconfig.h" +#include #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "esp_log.h" diff --git a/components/driver/test_apps/twai/main/test_app_main.c b/components/driver/test_apps/twai/main/test_app_main.c index 5743bdfde588..f581eec3c302 100644 --- a/components/driver/test_apps/twai/main/test_app_main.c +++ b/components/driver/test_apps/twai/main/test_app_main.c @@ -7,6 +7,7 @@ #include "unity.h" #include "unity_test_utils.h" #include "esp_heap_caps.h" +#include "esp_newlib.h" // Some resources are lazy allocated in the TWAI driver, the threshold is left for that case #define TEST_MEMORY_LEAK_THRESHOLD (200) diff --git a/components/esp-tls/test_apps/main/app_main.c b/components/esp-tls/test_apps/main/app_main.c index aad946e1f12a..813d724f0473 100644 --- a/components/esp-tls/test_apps/main/app_main.c +++ b/components/esp-tls/test_apps/main/app_main.c @@ -17,6 +17,7 @@ #else #include "sha/sha_block.h" #endif +#include "esp_newlib.h" #if SOC_SHA_SUPPORT_SHA512 #define SHA_TYPE SHA2_512 diff --git a/components/esp_driver_cam/dvp/src/esp_cam_ctlr_dvp_cam.c b/components/esp_driver_cam/dvp/src/esp_cam_ctlr_dvp_cam.c index 405d8f8cea50..d4d0ddb46368 100644 --- a/components/esp_driver_cam/dvp/src/esp_cam_ctlr_dvp_cam.c +++ b/components/esp_driver_cam/dvp/src/esp_cam_ctlr_dvp_cam.c @@ -4,6 +4,7 @@ * SPDX-License-Identifier: Apache-2.0 */ +#include #include #include "hal/gpio_ll.h" #include "hal/cam_ll.h" diff --git a/components/esp_driver_gpio/test_apps/gpio/main/test_app_main.c b/components/esp_driver_gpio/test_apps/gpio/main/test_app_main.c index bb65240ed5fb..d9cb1833ab66 100644 --- a/components/esp_driver_gpio/test_apps/gpio/main/test_app_main.c +++ b/components/esp_driver_gpio/test_apps/gpio/main/test_app_main.c @@ -8,6 +8,7 @@ #include "unity_test_runner.h" #include "unity_test_utils.h" #include "esp_heap_caps.h" +#include "esp_newlib.h" // Some resources are lazy allocated in gpio/rtcio driver, the threshold is left for that case #define TEST_MEMORY_LEAK_THRESHOLD (100) diff --git a/components/esp_driver_gpio/test_apps/gpio_extensions/main/test_app_main.c b/components/esp_driver_gpio/test_apps/gpio_extensions/main/test_app_main.c index 60becdb1e94d..a05593ffd6df 100644 --- a/components/esp_driver_gpio/test_apps/gpio_extensions/main/test_app_main.c +++ b/components/esp_driver_gpio/test_apps/gpio_extensions/main/test_app_main.c @@ -7,6 +7,7 @@ #include "unity.h" #include "unity_test_utils.h" #include "esp_heap_caps.h" +#include "esp_newlib.h" // Some resources are lazy allocated in the driver, the threshold is left for that case #define TEST_MEMORY_LEAK_THRESHOLD (300) diff --git a/components/esp_driver_gptimer/src/gptimer_common.c b/components/esp_driver_gptimer/src/gptimer_common.c index c9909fc4cc5e..4cf0a2240c60 100644 --- a/components/esp_driver_gptimer/src/gptimer_common.c +++ b/components/esp_driver_gptimer/src/gptimer_common.c @@ -4,6 +4,7 @@ * SPDX-License-Identifier: Apache-2.0 */ +#include #include "esp_check.h" #include "esp_clk_tree.h" #include "esp_private/esp_clk_tree_common.h" diff --git a/components/esp_driver_i2c/i2c_common.c b/components/esp_driver_i2c/i2c_common.c index b45c64d6502e..ed0de35cb38a 100644 --- a/components/esp_driver_i2c/i2c_common.c +++ b/components/esp_driver_i2c/i2c_common.c @@ -3,6 +3,7 @@ * * SPDX-License-Identifier: Apache-2.0 */ +#include #include #include #include "sdkconfig.h" diff --git a/components/esp_driver_ledc/src/ledc.c b/components/esp_driver_ledc/src/ledc.c index 9194e1aae2c2..841d193a4684 100644 --- a/components/esp_driver_ledc/src/ledc.c +++ b/components/esp_driver_ledc/src/ledc.c @@ -4,6 +4,7 @@ * SPDX-License-Identifier: Apache-2.0 */ #include +#include #include #include "esp_types.h" #include "freertos/FreeRTOS.h" diff --git a/components/esp_driver_ledc/test_apps/ledc/main/test_app_main.c b/components/esp_driver_ledc/test_apps/ledc/main/test_app_main.c index dabba32336ad..50ecab423226 100644 --- a/components/esp_driver_ledc/test_apps/ledc/main/test_app_main.c +++ b/components/esp_driver_ledc/test_apps/ledc/main/test_app_main.c @@ -7,6 +7,7 @@ #include "unity.h" #include "unity_test_utils.h" #include "esp_heap_caps.h" +#include "esp_newlib.h" // Some resources are lazy allocated in LEDC driver, the threshold is left for that case // This leak is large since LEDC driver does not provide channel delete mechanism diff --git a/components/esp_driver_parlio/test_apps/parlio/main/test_app_main.c b/components/esp_driver_parlio/test_apps/parlio/main/test_app_main.c index 8d493b061d4a..1c76a5a85379 100644 --- a/components/esp_driver_parlio/test_apps/parlio/main/test_app_main.c +++ b/components/esp_driver_parlio/test_apps/parlio/main/test_app_main.c @@ -8,6 +8,7 @@ #include "unity_test_runner.h" #include "unity_test_utils.h" #include "esp_heap_caps.h" +#include "esp_newlib.h" // Some resources are lazy allocated in pulse_cnt driver, the threshold is left for that case #define TEST_MEMORY_LEAK_THRESHOLD (400) diff --git a/components/esp_driver_ppa/src/ppa_priv.h b/components/esp_driver_ppa/src/ppa_priv.h index 2a3b1e5d57de..6cefafefd281 100644 --- a/components/esp_driver_ppa/src/ppa_priv.h +++ b/components/esp_driver_ppa/src/ppa_priv.h @@ -8,6 +8,7 @@ #include #include +#include #include "sdkconfig.h" #include "driver/ppa.h" #include "freertos/FreeRTOS.h" diff --git a/components/esp_driver_ppa/test_apps/main/test_app_main.c b/components/esp_driver_ppa/test_apps/main/test_app_main.c index bdc0d7ecb3ec..51b9f862bfec 100644 --- a/components/esp_driver_ppa/test_apps/main/test_app_main.c +++ b/components/esp_driver_ppa/test_apps/main/test_app_main.c @@ -7,6 +7,7 @@ #include "unity.h" #include "unity_test_runner.h" #include "esp_heap_caps.h" +#include "esp_newlib.h" #include "unity_test_utils.h" // Some resources are lazy allocated in the driver, the threshold is left for that case diff --git a/components/esp_driver_rmt/test_apps/rmt/main/test_app_main.c b/components/esp_driver_rmt/test_apps/rmt/main/test_app_main.c index 308ead92b10b..a60ce0eaeb49 100644 --- a/components/esp_driver_rmt/test_apps/rmt/main/test_app_main.c +++ b/components/esp_driver_rmt/test_apps/rmt/main/test_app_main.c @@ -8,6 +8,7 @@ #include "unity_test_runner.h" #include "unity_test_utils.h" #include "esp_heap_caps.h" +#include "esp_newlib.h" // Some resources are lazy allocated in RMT driver, so we reserved this threadhold when checking memory leak // A better way to check a potential memory leak is running a same case by twice, for the second time, the memory usage delta should be zero diff --git a/components/esp_driver_sdmmc/test_apps/sdmmc/main/test_app_main.c b/components/esp_driver_sdmmc/test_apps/sdmmc/main/test_app_main.c index e36a7a945e81..2950ffce24ff 100644 --- a/components/esp_driver_sdmmc/test_apps/sdmmc/main/test_app_main.c +++ b/components/esp_driver_sdmmc/test_apps/sdmmc/main/test_app_main.c @@ -7,6 +7,7 @@ #include "unity.h" #include "unity_test_utils.h" #include "esp_heap_caps.h" +#include "esp_newlib.h" #include "sdkconfig.h" #define TEST_MEMORY_LEAK_THRESHOLD (300) diff --git a/components/esp_driver_spi/test_apps/master/main/test_app_main.c b/components/esp_driver_spi/test_apps/master/main/test_app_main.c index 16ba4072f346..1fb355f3d88d 100644 --- a/components/esp_driver_spi/test_apps/master/main/test_app_main.c +++ b/components/esp_driver_spi/test_apps/master/main/test_app_main.c @@ -7,6 +7,7 @@ #include "unity.h" #include "unity_test_utils.h" #include "esp_heap_caps.h" +#include "esp_newlib.h" // iterator to load partition tables in `test spi bus lock, with flash` will lead memory not free #define TEST_MEMORY_LEAK_THRESHOLD (350) diff --git a/components/esp_driver_spi/test_apps/param/main/test_app_main.c b/components/esp_driver_spi/test_apps/param/main/test_app_main.c index 05ce4fae9854..9f9ab99ac8c3 100644 --- a/components/esp_driver_spi/test_apps/param/main/test_app_main.c +++ b/components/esp_driver_spi/test_apps/param/main/test_app_main.c @@ -7,6 +7,7 @@ #include "unity.h" #include "unity_test_utils.h" #include "esp_heap_caps.h" +#include "esp_newlib.h" #define TEST_MEMORY_LEAK_THRESHOLD (200) diff --git a/components/esp_driver_spi/test_apps/slave/main/test_app_main.c b/components/esp_driver_spi/test_apps/slave/main/test_app_main.c index e66cde4a0344..85c249ef1056 100644 --- a/components/esp_driver_spi/test_apps/slave/main/test_app_main.c +++ b/components/esp_driver_spi/test_apps/slave/main/test_app_main.c @@ -7,6 +7,7 @@ #include "unity.h" #include "unity_test_utils.h" #include "esp_heap_caps.h" +#include "esp_newlib.h" #define TEST_MEMORY_LEAK_THRESHOLD (200) diff --git a/components/esp_driver_spi/test_apps/slave_hd/main/test_app_main.c b/components/esp_driver_spi/test_apps/slave_hd/main/test_app_main.c index 3beae81ebfcf..ed90c0c9b698 100644 --- a/components/esp_driver_spi/test_apps/slave_hd/main/test_app_main.c +++ b/components/esp_driver_spi/test_apps/slave_hd/main/test_app_main.c @@ -7,6 +7,7 @@ #include "unity.h" #include "unity_test_utils.h" #include "esp_heap_caps.h" +#include "esp_newlib.h" #define TEST_MEMORY_LEAK_THRESHOLD (200) diff --git a/components/esp_driver_uart/src/uart_vfs.c b/components/esp_driver_uart/src/uart_vfs.c index a4ea3ca34714..8bc9ee0c3f06 100644 --- a/components/esp_driver_uart/src/uart_vfs.c +++ b/components/esp_driver_uart/src/uart_vfs.c @@ -27,17 +27,17 @@ // Token signifying that no character is available #define NONE -1 -#if CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF +#if CONFIG_LIBC_STDOUT_LINE_ENDING_CRLF # define DEFAULT_TX_MODE ESP_LINE_ENDINGS_CRLF -#elif CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR +#elif CONFIG_LIBC_STDOUT_LINE_ENDING_CR # define DEFAULT_TX_MODE ESP_LINE_ENDINGS_CR #else # define DEFAULT_TX_MODE ESP_LINE_ENDINGS_LF #endif -#if CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF +#if CONFIG_LIBC_STDIN_LINE_ENDING_CRLF # define DEFAULT_RX_MODE ESP_LINE_ENDINGS_CRLF -#elif CONFIG_NEWLIB_STDIN_LINE_ENDING_CR +#elif CONFIG_LIBC_STDIN_LINE_ENDING_CR # define DEFAULT_RX_MODE ESP_LINE_ENDINGS_CR #else # define DEFAULT_RX_MODE ESP_LINE_ENDINGS_LF @@ -226,6 +226,8 @@ static int uart_rx_char_via_driver(int fd) static ssize_t uart_write(int fd, const void * data, size_t size) { assert(fd >= 0 && fd < 3); + tx_func_t tx_func = s_ctx[fd]->tx_func; + esp_line_endings_t tx_mode = s_ctx[fd]->tx_mode; const char *data_c = (const char *)data; /* Even though newlib does stream locking on each individual stream, we need * a dedicated UART lock if two streams (stdout and stderr) point to the @@ -234,13 +236,13 @@ static ssize_t uart_write(int fd, const void * data, size_t size) _lock_acquire_recursive(&s_ctx[fd]->write_lock); for (size_t i = 0; i < size; i++) { int c = data_c[i]; - if (c == '\n' && s_ctx[fd]->tx_mode != ESP_LINE_ENDINGS_LF) { - s_ctx[fd]->tx_func(fd, '\r'); - if (s_ctx[fd]->tx_mode == ESP_LINE_ENDINGS_CR) { + if (c == '\n' && tx_mode != ESP_LINE_ENDINGS_LF) { + tx_func(fd, '\r'); + if (tx_mode == ESP_LINE_ENDINGS_CR) { continue; } } - s_ctx[fd]->tx_func(fd, c); + tx_func(fd, c); } _lock_release_recursive(&s_ctx[fd]->write_lock); return size; diff --git a/components/esp_driver_uart/test_apps/rs485/main/test_app_main.c b/components/esp_driver_uart/test_apps/rs485/main/test_app_main.c index 0eb34f65b5f1..cfdd58655af4 100644 --- a/components/esp_driver_uart/test_apps/rs485/main/test_app_main.c +++ b/components/esp_driver_uart/test_apps/rs485/main/test_app_main.c @@ -8,6 +8,7 @@ #include "unity_test_runner.h" #include "unity_test_utils.h" #include "esp_heap_caps.h" +#include "esp_newlib.h" #define TEST_MEMORY_LEAK_THRESHOLD (200) diff --git a/components/esp_driver_uart/test_apps/uart/main/test_app_main.c b/components/esp_driver_uart/test_apps/uart/main/test_app_main.c index 8eaeec99ab6c..1e64c861f390 100644 --- a/components/esp_driver_uart/test_apps/uart/main/test_app_main.c +++ b/components/esp_driver_uart/test_apps/uart/main/test_app_main.c @@ -8,6 +8,7 @@ #include "unity_test_runner.h" #include "unity_test_utils.h" #include "esp_heap_caps.h" +#include "esp_newlib.h" #define TEST_MEMORY_LEAK_THRESHOLD (212) diff --git a/components/esp_driver_uart/test_apps/uart_vfs/main/test_app_main.c b/components/esp_driver_uart/test_apps/uart_vfs/main/test_app_main.c index 6ab21f1f6736..422a90234062 100644 --- a/components/esp_driver_uart/test_apps/uart_vfs/main/test_app_main.c +++ b/components/esp_driver_uart/test_apps/uart_vfs/main/test_app_main.c @@ -7,6 +7,7 @@ #include "unity.h" #include "unity_test_utils.h" #include "esp_heap_caps.h" +#include "esp_newlib.h" // Some resources are lazy allocated, the threadhold is left for that case #define TEST_MEMORY_LEAK_THRESHOLD (500) diff --git a/components/esp_driver_usb_serial_jtag/src/usb_serial_jtag_vfs.c b/components/esp_driver_usb_serial_jtag/src/usb_serial_jtag_vfs.c index d24ef0c35190..1aad04c1c0aa 100644 --- a/components/esp_driver_usb_serial_jtag/src/usb_serial_jtag_vfs.c +++ b/components/esp_driver_usb_serial_jtag/src/usb_serial_jtag_vfs.c @@ -35,17 +35,17 @@ // Token signifying that no character is available #define NONE -1 -#if CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF +#if CONFIG_LIBC_STDOUT_LINE_ENDING_CRLF # define DEFAULT_TX_MODE ESP_LINE_ENDINGS_CRLF -#elif CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR +#elif CONFIG_LIBC_STDOUT_LINE_ENDING_CR # define DEFAULT_TX_MODE ESP_LINE_ENDINGS_CR #else # define DEFAULT_TX_MODE ESP_LINE_ENDINGS_LF #endif -#if CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF +#if CONFIG_LIBC_STDIN_LINE_ENDING_CRLF # define DEFAULT_RX_MODE ESP_LINE_ENDINGS_CRLF -#elif CONFIG_NEWLIB_STDIN_LINE_ENDING_CR +#elif CONFIG_LIBC_STDIN_LINE_ENDING_CR # define DEFAULT_RX_MODE ESP_LINE_ENDINGS_CR #else # define DEFAULT_RX_MODE ESP_LINE_ENDINGS_LF diff --git a/components/esp_driver_usb_serial_jtag/test_apps/usb_serial_jtag_vfs/main/test_app_main.c b/components/esp_driver_usb_serial_jtag/test_apps/usb_serial_jtag_vfs/main/test_app_main.c index 7e481a9f4d0e..4bd01cce16fd 100644 --- a/components/esp_driver_usb_serial_jtag/test_apps/usb_serial_jtag_vfs/main/test_app_main.c +++ b/components/esp_driver_usb_serial_jtag/test_apps/usb_serial_jtag_vfs/main/test_app_main.c @@ -7,6 +7,7 @@ #include "unity.h" #include "unity_test_utils.h" #include "esp_heap_caps.h" +#include "esp_newlib.h" // Some resources are lazy allocated, the threadhold is left for that case #define TEST_MEMORY_LEAK_THRESHOLD (500) diff --git a/components/esp_gdbstub/src/gdbstub.c b/components/esp_gdbstub/src/gdbstub.c index 68ae4fe75a20..d3c7097652a4 100644 --- a/components/esp_gdbstub/src/gdbstub.c +++ b/components/esp_gdbstub/src/gdbstub.c @@ -5,6 +5,7 @@ */ #include +#include "sys/reent.h" #include "esp_gdbstub.h" #include "esp_gdbstub_common.h" #include "esp_gdbstub_memory_regions.h" @@ -21,6 +22,7 @@ #include "hal/wdt_hal.h" #include "freertos/FreeRTOS.h" #include "freertos/task.h" +#include "sdkconfig.h" #ifdef CONFIG_ESP_GDBSTUB_SUPPORT_TASKS static inline int gdb_tid_to_task_index(int tid); @@ -41,7 +43,6 @@ static bool command_name_matches(const char *pattern, const unsigned char *ucmd, #endif // (CONFIG_ESP_SYSTEM_GDBSTUB_RUNTIME || CONFIG_ESP_GDBSTUB_SUPPORT_TASKS) static void send_reason(void); -static char gdb_packet(char *dest_buff, char *src_buff, int len); esp_gdbstub_scratch_t s_scratch; esp_gdbstub_gdb_regfile_t *gdb_local_regfile = &s_scratch.regfile; @@ -237,8 +238,12 @@ void gdbstub_handle_uart_int(esp_gdbstub_frame_t *regs_frame) if (doDebug) { process_gdb_kill = false; /* To enable console output in GDB, we replace the default stdout->_write function */ +#if CONFIG_LIBC_NEWLIB stdout->_write = gdbstub__swrite; stderr->_write = gdbstub__swrite; +#else + // TODO IDF-11287 +#endif /* Stall other core until GDB exit */ esp_gdbstub_stall_other_cpus_start(); #ifdef CONFIG_ESP_GDBSTUB_SUPPORT_TASKS @@ -753,8 +758,12 @@ int esp_gdbstub_handle_command(unsigned char *cmd, int len) } else if (cmd[0] == 'k') { /* Kill GDB and continue without */ /* By exit from GDB we have to replcae stdout->_write back */ +#if CONFIG_LIBC_NEWLIB stdout->_write = __swrite; stderr->_write = __swrite; +#else + // TODO IDF-11287 +#endif process_gdb_kill = true; return GDBSTUB_ST_CONT; } else if (cmd[0] == 's') { @@ -784,6 +793,35 @@ int esp_gdbstub_handle_command(unsigned char *cmd, int len) } return GDBSTUB_ST_OK; } + +#if CONFIG_LIBC_NEWLIB +/** @brief Convert to ASCI + * Function convert byte value to two ASCI carecters + */ +void gdb_get_asci_char(unsigned char data, char *buff) +{ + const char *hex_chars = "0123456789abcdef"; + buff[0] = hex_chars[(data >> 4) & 0x0f]; + buff[1] = hex_chars[(data) & 0x0f]; +} + +/** @brief Prepare GDB packet + * Function build GDB asci packet and return checksum + * + * Return checksum + */ +char gdb_packet(char *dest_buff, char *src_buff, int len) +{ + char s_chsum = 0; + for (size_t i = 0; i < len; i++) { + gdb_get_asci_char(src_buff[i], &dest_buff[i * 2 + 0]); + } + for (size_t i = 0; i < len * 2; i++) { + s_chsum += dest_buff[i]; + } + return s_chsum; +} + /** * Replace standard __swrite function for GDB */ @@ -813,38 +851,12 @@ int gdbstub__swrite(struct _reent *data1, void *data2, const char *buff, int len } return len; } - - -/** @brief Convert to ASCI - * Function convert byte value to two ASCI carecters - */ -void gdb_get_asci_char(unsigned char data, char *buff) -{ - const char *hex_chars = "0123456789abcdef"; - buff[0] = hex_chars[(data >> 4) & 0x0f]; - buff[1] = hex_chars[(data) & 0x0f]; -} - +#else +// TODO IDF-11287 +#endif // CONFIG_LIBC_NEWLIB /* Everything below is related to the support for listing FreeRTOS tasks as threads in GDB */ -/** @brief Prepare GDB packet - * Function build GDB asci packet and return checksum - * - * Return checksum - */ -char gdb_packet(char *dest_buff, char *src_buff, int len) -{ - char s_chsum = 0; - for (size_t i = 0; i < len; i++) { - gdb_get_asci_char(src_buff[i], &dest_buff[i * 2 + 0]); - } - for (size_t i = 0; i < len * 2; i++) { - s_chsum += dest_buff[i]; - } - return s_chsum; -} - #if (CONFIG_ESP_SYSTEM_GDBSTUB_RUNTIME || CONFIG_ESP_GDBSTUB_SUPPORT_TASKS) static bool command_name_matches(const char *pattern, const unsigned char *ucmd, int len) { diff --git a/components/esp_hw_support/test_apps/dma2d/main/test_app_main.c b/components/esp_hw_support/test_apps/dma2d/main/test_app_main.c index c4ff3a0c9e2e..7bafe165b5e0 100644 --- a/components/esp_hw_support/test_apps/dma2d/main/test_app_main.c +++ b/components/esp_hw_support/test_apps/dma2d/main/test_app_main.c @@ -7,6 +7,7 @@ #include "unity.h" #include "unity_test_runner.h" #include "esp_heap_caps.h" +#include "esp_newlib.h" #include "unity_test_utils.h" // Some resources are lazy allocated in the driver, the threshold is left for that case diff --git a/components/esp_hw_support/test_apps/mspi/main/test_app_main.c b/components/esp_hw_support/test_apps/mspi/main/test_app_main.c index 72be1dc2848f..3b4a02ffbc0f 100644 --- a/components/esp_hw_support/test_apps/mspi/main/test_app_main.c +++ b/components/esp_hw_support/test_apps/mspi/main/test_app_main.c @@ -7,6 +7,7 @@ #include "unity.h" #include "unity_test_utils.h" #include "esp_heap_caps.h" +#include "esp_newlib.h" // load partition table in tests will use memory #define TEST_MEMORY_LEAK_THRESHOLD (450) diff --git a/components/esp_hw_support/test_apps/mspi_psram_with_dfs/main/test_app_main.c b/components/esp_hw_support/test_apps/mspi_psram_with_dfs/main/test_app_main.c index 149fb3d30745..103ee9dc6c1f 100644 --- a/components/esp_hw_support/test_apps/mspi_psram_with_dfs/main/test_app_main.c +++ b/components/esp_hw_support/test_apps/mspi_psram_with_dfs/main/test_app_main.c @@ -7,6 +7,7 @@ #include "unity.h" #include "unity_test_utils.h" #include "esp_heap_caps.h" +#include "esp_newlib.h" // load partition table in tests will use memory #define TEST_MEMORY_LEAK_THRESHOLD (450) diff --git a/components/esp_netif/include/esp_netif_sntp.h b/components/esp_netif/include/esp_netif_sntp.h index 51d7e42bd419..69fa4135b628 100644 --- a/components/esp_netif/include/esp_netif_sntp.h +++ b/components/esp_netif/include/esp_netif_sntp.h @@ -6,6 +6,7 @@ #pragma once +#include #include #include #include "freertos/FreeRTOS.h" @@ -101,7 +102,7 @@ void esp_netif_sntp_deinit(void); /** * @brief Wait for time sync event * @param tout Specified timeout in RTOS ticks - * @return ESP_TIMEOUT if sync event didn't came withing the timeout + * @return ESP_TIMEOUT if sync event didn't came within the timeout * ESP_ERR_NOT_FINISHED if the sync event came, but we're in smooth update mode and still in progress (SNTP_SYNC_STATUS_IN_PROGRESS) * ESP_OK if time sync'ed */ diff --git a/components/esp_phy/include/esp_private/phy.h b/components/esp_phy/include/esp_private/phy.h index 1489ac889b41..5d3864f56a4d 100644 --- a/components/esp_phy/include/esp_private/phy.h +++ b/components/esp_phy/include/esp_private/phy.h @@ -5,6 +5,7 @@ */ #pragma once +#include #include "esp_phy_init.h" #ifdef __cplusplus diff --git a/components/esp_phy/src/btbb_init.c b/components/esp_phy/src/btbb_init.c index a21bfe212a01..b6d0e82f89b4 100644 --- a/components/esp_phy/src/btbb_init.c +++ b/components/esp_phy/src/btbb_init.c @@ -5,6 +5,7 @@ */ #include +#include "sys/lock.h" #include "esp_check.h" #include "esp_log.h" #include "freertos/FreeRTOS.h" diff --git a/components/esp_pm/pm_impl.c b/components/esp_pm/pm_impl.c index c4c1d91f4be7..11b562786d39 100644 --- a/components/esp_pm/pm_impl.c +++ b/components/esp_pm/pm_impl.c @@ -8,6 +8,7 @@ #include #include #include +#include #include #include "sdkconfig.h" diff --git a/components/esp_rom/CMakeLists.txt b/components/esp_rom/CMakeLists.txt index 647da6539636..580a5bfc480a 100644 --- a/components/esp_rom/CMakeLists.txt +++ b/components/esp_rom/CMakeLists.txt @@ -147,22 +147,30 @@ if(BOOTLOADER_BUILD) if(CONFIG_ESP_ROM_HAS_NEWLIB) if(target STREQUAL "esp32" OR target STREQUAL "esp32s2") - rom_linker_script("newlib-funcs") + rom_linker_script("libc-funcs") else() - rom_linker_script("newlib") + rom_linker_script("libc") + if(CONFIG_LIBC_NEWLIB) + rom_linker_script("newlib") + endif() endif() endif() else() # Regular app build if(target STREQUAL "esp32") - rom_linker_script("newlib-data") - rom_linker_script("syscalls") + if(CONFIG_LIBC_NEWLIB) + rom_linker_script("newlib-data") + rom_linker_script("syscalls") + endif() if(NOT CONFIG_SPIRAM_CACHE_WORKAROUND) # ESP32 only: these ROM functions may only be used if PSRAM cache workaround is disabled. # Otherwise we need to link to a multilib version of libc compiled with PSRAM workaround. - rom_linker_script("newlib-funcs") + rom_linker_script("libc-funcs") + if(CONFIG_LIBC_NEWLIB) + rom_linker_script("newlib-reent-funcs") + endif() endif() if(NOT CONFIG_SPI_FLASH_ROM_DRIVER_PATCH) @@ -175,8 +183,11 @@ else() # Regular app build endif() elseif(target STREQUAL "esp32s2") - rom_linker_script("newlib-funcs") - rom_linker_script("newlib-data") + rom_linker_script("libc-funcs") + if(CONFIG_LIBC_NEWLIB) + rom_linker_script("newlib-reent-funcs") + rom_linker_script("newlib-data") + endif() # For ESP32S2, inclusion of ROM driver do not depend on CONFIG_SPI_FLASH_ROM_IMPL rom_linker_script("spiflash_legacy") @@ -282,9 +293,12 @@ else() # Regular app build if(CONFIG_ESP_ROM_HAS_NEWLIB AND NOT target STREQUAL "esp32" AND NOT target STREQUAL "esp32s2") # ESP32 and S2 are a bit different, keep them as special cases in the target specific include section - rom_linker_script("newlib") + rom_linker_script("libc") + if(CONFIG_LIBC_NEWLIB) + rom_linker_script("newlib") + endif() - if(CONFIG_ESP_ROM_HAS_NEWLIB_NANO_FORMAT AND CONFIG_NEWLIB_NANO_FORMAT) + if(CONFIG_ESP_ROM_HAS_NEWLIB_NANO_FORMAT AND CONFIG_LIBC_NEWLIB AND CONFIG_NEWLIB_NANO_FORMAT) if(NOT CONFIG_ESP_ROM_HAS_NEWLIB_32BIT_TIME AND NOT CONFIG_ESP_ROM_HAS_NEWLIB_NANO_PRINTF_FLOAT_BUG) # Newlib-nano functions contains time_t related functions # and cannot be used if they were compiled with 32 bit time_t @@ -292,7 +306,7 @@ else() # Regular app build endif() endif() - if(CONFIG_ESP_ROM_HAS_NEWLIB_NORMAL_FORMAT AND NOT CONFIG_NEWLIB_NANO_FORMAT) + if(CONFIG_ESP_ROM_HAS_NEWLIB_NORMAL_FORMAT AND CONFIG_LIBC_NEWLIB AND NOT CONFIG_NEWLIB_NANO_FORMAT) rom_linker_script("newlib-normal") endif() endif() diff --git a/components/esp_rom/esp32/ld/esp32.rom.newlib-funcs.ld b/components/esp_rom/esp32/ld/esp32.rom.libc-funcs.ld similarity index 59% rename from components/esp_rom/esp32/ld/esp32.rom.newlib-funcs.ld rename to components/esp_rom/esp32/ld/esp32.rom.libc-funcs.ld index 79d5c5be0d80..506c0f77535c 100644 --- a/components/esp_rom/esp32/ld/esp32.rom.newlib-funcs.ld +++ b/components/esp_rom/esp32/ld/esp32.rom.libc-funcs.ld @@ -1,3 +1,8 @@ +/* + * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ /* These are the newlib functions present in ESP32 ROM. They should not be used when compiling with PSRAM cache workaround enabled. See also esp32.rom.newlib-data.ld for the list of .data/.bss symbols @@ -13,33 +18,10 @@ */ abs = 0x40056340; -__ascii_wctomb = 0x40058ef0; -atoi = 0x400566c4; -_atoi_r = 0x400566d4; -atol = 0x400566ec; -_atol_r = 0x400566fc; bzero = 0x4000c1f4; -_cleanup = 0x40001df8; -_cleanup_r = 0x40001d48; -creat = 0x40000e8c; div = 0x40056348; __dummy_lock = 0x4000c728; __dummy_lock_try = 0x4000c730; -__env_lock = 0x40001fd4; -__env_unlock = 0x40001fe0; -fclose = 0x400020ac; -_fclose_r = 0x40001fec; -fflush = 0x40059394; -_fflush_r = 0x40059320; -_findenv_r = 0x40001f44; -__fp_lock_all = 0x40001f1c; -__fp_unlock_all = 0x40001f30; -__fputwc = 0x40058da0; -fputwc = 0x40058ea8; -_fputwc_r = 0x40058e4c; -_fwalk = 0x4000c738; -_fwalk_reent = 0x4000c770; -_getenv_r = 0x40001fbc; isalnum = 0x40000f04; isalpha = 0x40000f18; isascii = 0x4000c20c; @@ -65,23 +47,8 @@ memmove = 0x4000c3c0; memrchr = 0x4000c400; memset = 0x4000c44c; qsort = 0x40056424; -rand = 0x40001058; -rand_r = 0x400010d4; __sccl = 0x4000c498; -__sclose = 0x400011b8; -__seofread = 0x40001148; setjmp = 0x40056268; -__sflush_r = 0x400591e0; -__sfmoreglue = 0x40001dc8; -__sfp = 0x40001e90; -__sfp_lock_acquire = 0x40001e08; -__sfp_lock_release = 0x40001e14; -__sinit = 0x40001e38; -__sinit_lock_acquire = 0x40001e20; -__sinit_lock_release = 0x40001e2c; -srand = 0x40001004; -__sread = 0x40001118; -__sseek = 0x40001184; strcasecmp = 0x400011cc; strcasestr = 0x40001210; strcat = 0x4000c518; @@ -90,8 +57,6 @@ strcmp = 0x40001274; strcoll = 0x40001398; strcpy = 0x400013ac; strcspn = 0x4000c558; -strdup = 0x4000143c; -_strdup_r = 0x40001450; strlcat = 0x40001470; strlcpy = 0x4000c584; strlen = 0x400014c0; @@ -100,31 +65,15 @@ strncasecmp = 0x40001550; strncat = 0x4000c5c4; strncmp = 0x4000c5f4; strncpy = 0x400015d4; -strndup = 0x400016b0; -_strndup_r = 0x400016c4; strnlen = 0x4000c628; strrchr = 0x40001708; strsep = 0x40001734; strspn = 0x4000c648; strstr = 0x4000c674; -__strtok_r = 0x4000c6a8; -strtok_r = 0x4000c70c; -strtol = 0x4005681c; -_strtol_r = 0x40056714; -strtoul = 0x4005692c; -_strtoul_r = 0x40056834; strupr = 0x4000174c; __submore = 0x40058f3c; -__swbuf = 0x40058cb4; -__swbuf_r = 0x40058bec; -__swrite = 0x40001150; toascii = 0x4000c720; tolower = 0x40001868; toupper = 0x40001884; -ungetc = 0x400590f4; -_ungetc_r = 0x40058fa0; __utoa = 0x400561f0; utoa = 0x40056258; -wcrtomb = 0x40058920; -_wcrtomb_r = 0x400588d8; -_wctomb_r = 0x40058f14; diff --git a/components/esp_rom/esp32/ld/esp32.rom.newlib-reent-funcs.ld b/components/esp_rom/esp32/ld/esp32.rom.newlib-reent-funcs.ld new file mode 100644 index 000000000000..49c49b19b2e3 --- /dev/null +++ b/components/esp_rom/esp32/ld/esp32.rom.newlib-reent-funcs.ld @@ -0,0 +1,61 @@ +/* + * SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ +_cleanup = 0x40001df8; +_cleanup_r = 0x40001d48; +creat = 0x40000e8c; +fclose = 0x400020ac; +_fclose_r = 0x40001fec; +fflush = 0x40059394; +_fflush_r = 0x40059320; +_findenv_r = 0x40001f44; +__fp_lock_all = 0x40001f1c; +__fp_unlock_all = 0x40001f30; +__fputwc = 0x40058da0; +fputwc = 0x40058ea8; +_fputwc_r = 0x40058e4c; +_fwalk = 0x4000c738; +_fwalk_reent = 0x4000c770; +__swbuf = 0x40058cb4; +__swbuf_r = 0x40058bec; +__swrite = 0x40001150; +__sread = 0x40001118; +__sseek = 0x40001184; +ungetc = 0x400590f4; +_ungetc_r = 0x40058fa0; +srand = 0x40001004; +rand_r = 0x400010d4; +rand = 0x40001058; +atoi = 0x400566c4; +_atoi_r = 0x400566d4; +atol = 0x400566ec; +_atol_r = 0x400566fc; +strdup = 0x4000143c; +_strdup_r = 0x40001450; +strndup = 0x400016b0; +_strndup_r = 0x400016c4; +__strtok_r = 0x4000c6a8; +strtok_r = 0x4000c70c; +strtol = 0x4005681c; +_strtol_r = 0x40056714; +strtoul = 0x4005692c; +_strtoul_r = 0x40056834; +__ascii_wctomb = 0x40058ef0; +__sclose = 0x400011b8; +__seofread = 0x40001148; +wcrtomb = 0x40058920; +_wcrtomb_r = 0x400588d8; +_wctomb_r = 0x40058f14; +__sflush_r = 0x400591e0; +__sfmoreglue = 0x40001dc8; +__sfp = 0x40001e90; +__sfp_lock_acquire = 0x40001e08; +__sfp_lock_release = 0x40001e14; +__sinit = 0x40001e38; +__sinit_lock_acquire = 0x40001e20; +__sinit_lock_release = 0x40001e2c; +__env_lock = 0x40001fd4; +__env_unlock = 0x40001fe0; +_getenv_r = 0x40001fbc; diff --git a/components/esp_rom/esp32c2/ld/esp32c2.rom.libc.ld b/components/esp_rom/esp32c2/ld/esp32c2.rom.libc.ld new file mode 100644 index 000000000000..4ea20f83b0fe --- /dev/null +++ b/components/esp_rom/esp32c2/ld/esp32c2.rom.libc.ld @@ -0,0 +1,90 @@ +/* + * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ +esp_rom_newlib_init_common_mutexes = 0x40000484; +memset = 0x40000488; +memcpy = 0x4000048c; +memmove = 0x40000490; +memcmp = 0x40000494; +strcpy = 0x40000498; +strncpy = 0x4000049c; +strcmp = 0x400004a0; +strncmp = 0x400004a4; +strlen = 0x400004a8; +strstr = 0x400004ac; +bzero = 0x400004b0; +sbrk = 0x400004b8; +isalnum = 0x400004bc; +isalpha = 0x400004c0; +isascii = 0x400004c4; +isblank = 0x400004c8; +iscntrl = 0x400004cc; +isdigit = 0x400004d0; +islower = 0x400004d4; +isgraph = 0x400004d8; +isprint = 0x400004dc; +ispunct = 0x400004e0; +isspace = 0x400004e4; +isupper = 0x400004e8; +toupper = 0x400004ec; +tolower = 0x400004f0; +toascii = 0x400004f4; +memccpy = 0x400004f8; +memchr = 0x400004fc; +memrchr = 0x40000500; +strcasecmp = 0x40000504; +strcasestr = 0x40000508; +strcat = 0x4000050c; +strchr = 0x40000514; +strcspn = 0x40000518; +strcoll = 0x4000051c; +strlcat = 0x40000520; +strlcpy = 0x40000524; +strlwr = 0x40000528; +strncasecmp = 0x4000052c; +strncat = 0x40000530; +strnlen = 0x40000538; +strrchr = 0x4000053c; +strsep = 0x40000540; +strspn = 0x40000544; +strtok_r = 0x40000548; +strupr = 0x4000054c; +longjmp = 0x40000550; +setjmp = 0x40000554; +abs = 0x40000558; +div = 0x4000055c; +labs = 0x40000560; +ldiv = 0x40000564; +qsort = 0x40000568; +utoa = 0x40000578; +itoa = 0x4000057c; +__match = 0x400005dc; +__hexnan = 0x400005e0; +__hexdig_fun = 0x400005e4; +__gethex = 0x400005e8; +_Balloc = 0x400005ec; +_Bfree = 0x400005f0; +__multadd = 0x400005f4; +__s2b = 0x400005f8; +__hi0bits = 0x400005fc; +__lo0bits = 0x40000600; +__i2b = 0x40000604; +__multiply = 0x40000608; +__pow5mult = 0x4000060c; +__lshift = 0x40000610; +__mcmp = 0x40000614; +__mdiff = 0x40000618; +__ulp = 0x4000061c; +__b2d = 0x40000620; +__d2b = 0x40000624; +__ratio = 0x40000628; +_mprec_log10 = 0x4000062c; +__copybits = 0x40000630; +__any_on = 0x40000634; +nan = 0x40000668; +nanf = 0x4000066c; +/* Data (.data, .bss, .rodata) */ +syscall_table_ptr = 0x3fcdffd8; +_global_impure_ptr = 0x3fcdffd4; diff --git a/components/esp_rom/esp32c2/ld/esp32c2.rom.newlib.ld b/components/esp_rom/esp32c2/ld/esp32c2.rom.newlib.ld index e30c91d07ddf..a6963f86d010 100644 --- a/components/esp_rom/esp32c2/ld/esp32c2.rom.newlib.ld +++ b/components/esp_rom/esp32c2/ld/esp32c2.rom.newlib.ld @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2021-2024 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -10,77 +10,23 @@ * * Compatible with ROM where ECO version equal or greater to 1. * - * THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT EDIT. + * THIS FILE WAS AUTOMATICALLY GENERATED. !!! BUT EDITED !!! + * The file was originally generated for use with newlib, but it was split into + * multiple files to make it compatible with picolibc. */ + /*************************************** Group newlib ***************************************/ /* Functions */ -esp_rom_newlib_init_common_mutexes = 0x40000484; -memset = 0x40000488; -memcpy = 0x4000048c; -memmove = 0x40000490; -memcmp = 0x40000494; -strcpy = 0x40000498; -strncpy = 0x4000049c; -strcmp = 0x400004a0; -strncmp = 0x400004a4; -strlen = 0x400004a8; -strstr = 0x400004ac; -bzero = 0x400004b0; _isatty_r = 0x400004b4; -sbrk = 0x400004b8; -isalnum = 0x400004bc; -isalpha = 0x400004c0; -isascii = 0x400004c4; -isblank = 0x400004c8; -iscntrl = 0x400004cc; -isdigit = 0x400004d0; -islower = 0x400004d4; -isgraph = 0x400004d8; -isprint = 0x400004dc; -ispunct = 0x400004e0; -isspace = 0x400004e4; -isupper = 0x400004e8; -toupper = 0x400004ec; -tolower = 0x400004f0; -toascii = 0x400004f4; -memccpy = 0x400004f8; -memchr = 0x400004fc; -memrchr = 0x40000500; -strcasecmp = 0x40000504; -strcasestr = 0x40000508; -strcat = 0x4000050c; strdup = 0x40000510; -strchr = 0x40000514; -strcspn = 0x40000518; -strcoll = 0x4000051c; -strlcat = 0x40000520; -strlcpy = 0x40000524; -strlwr = 0x40000528; -strncasecmp = 0x4000052c; -strncat = 0x40000530; strndup = 0x40000534; -strnlen = 0x40000538; -strrchr = 0x4000053c; -strsep = 0x40000540; -strspn = 0x40000544; -strtok_r = 0x40000548; -strupr = 0x4000054c; -longjmp = 0x40000550; -setjmp = 0x40000554; -abs = 0x40000558; -div = 0x4000055c; -labs = 0x40000560; -ldiv = 0x40000564; -qsort = 0x40000568; rand_r = 0x4000056c; rand = 0x40000570; srand = 0x40000574; -utoa = 0x40000578; -itoa = 0x4000057c; atoi = 0x40000580; atol = 0x40000584; strtol = 0x40000588; @@ -104,29 +50,6 @@ _strtol_r = 0x400005cc; strtol_l = 0x400005d0; _strtoul_r = 0x400005d4; strtoul_l = 0x400005d8; -__match = 0x400005dc; -__hexnan = 0x400005e0; -__hexdig_fun = 0x400005e4; -__gethex = 0x400005e8; -_Balloc = 0x400005ec; -_Bfree = 0x400005f0; -__multadd = 0x400005f4; -__s2b = 0x400005f8; -__hi0bits = 0x400005fc; -__lo0bits = 0x40000600; -__i2b = 0x40000604; -__multiply = 0x40000608; -__pow5mult = 0x4000060c; -__lshift = 0x40000610; -__mcmp = 0x40000614; -__mdiff = 0x40000618; -__ulp = 0x4000061c; -__b2d = 0x40000620; -__d2b = 0x40000624; -__ratio = 0x40000628; -_mprec_log10 = 0x4000062c; -__copybits = 0x40000630; -__any_on = 0x40000634; asctime = 0x40000638; asctime_r = 0x4000063c; atof = 0x40000640; @@ -139,9 +62,4 @@ __ascii_mbtowc = 0x40000658; puts = 0x4000065c; putc = 0x40000660; putchar = 0x40000664; -nan = 0x40000668; -nanf = 0x4000066c; __errno = 0x40000670; -/* Data (.data, .bss, .rodata) */ -syscall_table_ptr = 0x3fcdffd8; -_global_impure_ptr = 0x3fcdffd4; diff --git a/components/esp_rom/esp32c3/ld/esp32c3.rom.libc.ld b/components/esp_rom/esp32c3/ld/esp32c3.rom.libc.ld new file mode 100644 index 000000000000..8f14615d9417 --- /dev/null +++ b/components/esp_rom/esp32c3/ld/esp32c3.rom.libc.ld @@ -0,0 +1,65 @@ +/* + * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ +esp_rom_newlib_init_common_mutexes = 0x40000350; +memset = 0x40000354; +memcpy = 0x40000358; +memmove = 0x4000035c; +memcmp = 0x40000360; +strcpy = 0x40000364; +strncpy = 0x40000368; +strcmp = 0x4000036c; +strncmp = 0x40000370; +strlen = 0x40000374; +strstr = 0x40000378; +bzero = 0x4000037c; +sbrk = 0x40000384; +isalnum = 0x40000388; +isalpha = 0x4000038c; +isascii = 0x40000390; +isblank = 0x40000394; +iscntrl = 0x40000398; +isdigit = 0x4000039c; +islower = 0x400003a0; +isgraph = 0x400003a4; +isprint = 0x400003a8; +ispunct = 0x400003ac; +isspace = 0x400003b0; +isupper = 0x400003b4; +toupper = 0x400003b8; +tolower = 0x400003bc; +toascii = 0x400003c0; +memccpy = 0x400003c4; +memchr = 0x400003c8; +memrchr = 0x400003cc; +strcasecmp = 0x400003d0; +strcasestr = 0x400003d4; +strcat = 0x400003d8; +strchr = 0x400003e0; +strcspn = 0x400003e4; +strcoll = 0x400003e8; +strlcat = 0x400003ec; +strlcpy = 0x400003f0; +strlwr = 0x400003f4; +strncasecmp = 0x400003f8; +strncat = 0x400003fc; +strnlen = 0x40000404; +strrchr = 0x40000408; +strsep = 0x4000040c; +strspn = 0x40000410; +strtok_r = 0x40000414; +strupr = 0x40000418; +longjmp = 0x4000041c; +setjmp = 0x40000420; +abs = 0x40000424; +div = 0x40000428; +labs = 0x4000042c; +ldiv = 0x40000430; +qsort = 0x40000434; +utoa = 0x40000444; +itoa = 0x40000448; +/* Data (.data, .bss, .rodata) */ +syscall_table_ptr = 0x3fcdffe0; +_global_impure_ptr = 0x3fcdffdc; diff --git a/components/esp_rom/esp32c3/ld/esp32c3.rom.newlib.ld b/components/esp_rom/esp32c3/ld/esp32c3.rom.newlib.ld index 257a919f3e35..69e93fccd9c1 100644 --- a/components/esp_rom/esp32c3/ld/esp32c3.rom.newlib.ld +++ b/components/esp_rom/esp32c3/ld/esp32c3.rom.newlib.ld @@ -1,3 +1,8 @@ +/* + * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ /* ROM function interface esp32c3.rom.newlib.ld for esp32c3 * * @@ -5,7 +10,9 @@ * * Compatible with ROM where ECO version equal or greater to 0. * - * THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT EDIT. + * THIS FILE WAS AUTOMATICALLY GENERATED. !!! BUT EDITED !!! + * The file was originally generated for use with newlib, but it was split into + * multiple files to make it compatible with picolibc. */ /*************************************** @@ -13,68 +20,11 @@ ***************************************/ /* Functions */ -esp_rom_newlib_init_common_mutexes = 0x40000350; -memset = 0x40000354; -memcpy = 0x40000358; -memmove = 0x4000035c; -memcmp = 0x40000360; -strcpy = 0x40000364; -strncpy = 0x40000368; -strcmp = 0x4000036c; -strncmp = 0x40000370; -strlen = 0x40000374; -strstr = 0x40000378; -bzero = 0x4000037c; -sbrk = 0x40000384; -isalnum = 0x40000388; -isalpha = 0x4000038c; -isascii = 0x40000390; -isblank = 0x40000394; -iscntrl = 0x40000398; -isdigit = 0x4000039c; -islower = 0x400003a0; -isgraph = 0x400003a4; -isprint = 0x400003a8; -ispunct = 0x400003ac; -isspace = 0x400003b0; -isupper = 0x400003b4; -toupper = 0x400003b8; -tolower = 0x400003bc; -toascii = 0x400003c0; -memccpy = 0x400003c4; -memchr = 0x400003c8; -memrchr = 0x400003cc; -strcasecmp = 0x400003d0; -strcasestr = 0x400003d4; -strcat = 0x400003d8; strdup = 0x400003dc; -strchr = 0x400003e0; -strcspn = 0x400003e4; -strcoll = 0x400003e8; -strlcat = 0x400003ec; -strlcpy = 0x400003f0; -strlwr = 0x400003f4; -strncasecmp = 0x400003f8; -strncat = 0x400003fc; strndup = 0x40000400; -strnlen = 0x40000404; -strrchr = 0x40000408; -strsep = 0x4000040c; -strspn = 0x40000410; -strtok_r = 0x40000414; -strupr = 0x40000418; -longjmp = 0x4000041c; -setjmp = 0x40000420; -abs = 0x40000424; -div = 0x40000428; -labs = 0x4000042c; -ldiv = 0x40000430; -qsort = 0x40000434; rand_r = 0x40000438; rand = 0x4000043c; srand = 0x40000440; -utoa = 0x40000444; -itoa = 0x40000448; atoi = 0x4000044c; atol = 0x40000450; strtol = 0x40000454; @@ -85,6 +35,3 @@ PROVIDE( _fwalk = 0x40000464 ); PROVIDE( _fwalk_reent = 0x40000468 ); PROVIDE( __swbuf_r = 0x40000474 ); __swbuf = 0x40000478; -/* Data (.data, .bss, .rodata) */ -syscall_table_ptr = 0x3fcdffe0; -_global_impure_ptr = 0x3fcdffdc; diff --git a/components/esp_rom/esp32c5/ld/esp32c5.rom.libc.ld b/components/esp_rom/esp32c5/ld/esp32c5.rom.libc.ld new file mode 100644 index 000000000000..a7764d3bd342 --- /dev/null +++ b/components/esp_rom/esp32c5/ld/esp32c5.rom.libc.ld @@ -0,0 +1,65 @@ +/* + * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ +esp_rom_newlib_init_common_mutexes = 0x400004b4; +memset = 0x400004b8; +memcpy = 0x400004bc; +memmove = 0x400004c0; +memcmp = 0x400004c4; +strcpy = 0x400004c8; +strncpy = 0x400004cc; +strcmp = 0x400004d0; +strncmp = 0x400004d4; +strlen = 0x400004d8; +strstr = 0x400004dc; +bzero = 0x400004e0; +sbrk = 0x400004e8; +isalnum = 0x400004ec; +isalpha = 0x400004f0; +isascii = 0x400004f4; +isblank = 0x400004f8; +iscntrl = 0x400004fc; +isdigit = 0x40000500; +islower = 0x40000504; +isgraph = 0x40000508; +isprint = 0x4000050c; +ispunct = 0x40000510; +isspace = 0x40000514; +isupper = 0x40000518; +toupper = 0x4000051c; +tolower = 0x40000520; +toascii = 0x40000524; +memccpy = 0x40000528; +memchr = 0x4000052c; +memrchr = 0x40000530; +strcasecmp = 0x40000534; +strcasestr = 0x40000538; +strcat = 0x4000053c; +strchr = 0x40000544; +strcspn = 0x40000548; +strcoll = 0x4000054c; +strlcat = 0x40000550; +strlcpy = 0x40000554; +strlwr = 0x40000558; +strncasecmp = 0x4000055c; +strncat = 0x40000560; +strnlen = 0x40000568; +strrchr = 0x4000056c; +strsep = 0x40000570; +strspn = 0x40000574; +strtok_r = 0x40000578; +strupr = 0x4000057c; +longjmp = 0x40000580; +setjmp = 0x40000584; +abs = 0x40000588; +div = 0x4000058c; +labs = 0x40000590; +ldiv = 0x40000594; +qsort = 0x40000598; +utoa = 0x400005a8; +itoa = 0x400005ac; +/* Data (.data, .bss, .rodata) */ +syscall_table_ptr = 0x4085ffd4; +_global_impure_ptr = 0x4085ffd0; diff --git a/components/esp_rom/esp32c5/ld/esp32c5.rom.newlib.ld b/components/esp_rom/esp32c5/ld/esp32c5.rom.newlib.ld index 851e0f2be575..ed8de2286b03 100644 --- a/components/esp_rom/esp32c5/ld/esp32c5.rom.newlib.ld +++ b/components/esp_rom/esp32c5/ld/esp32c5.rom.newlib.ld @@ -10,7 +10,9 @@ * * Compatible with ROM where ECO version equal or greater to 0. * - * THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT EDIT. + * THIS FILE WAS AUTOMATICALLY GENERATED. !!! BUT EDITED !!! + * The file was originally generated for use with newlib, but it was split into + * multiple files to make it compatible with picolibc. */ /*************************************** @@ -18,69 +20,12 @@ ***************************************/ /* Functions */ -esp_rom_newlib_init_common_mutexes = 0x400004b4; -memset = 0x400004b8; -memcpy = 0x400004bc; -memmove = 0x400004c0; -memcmp = 0x400004c4; -strcpy = 0x400004c8; -strncpy = 0x400004cc; -strcmp = 0x400004d0; -strncmp = 0x400004d4; -strlen = 0x400004d8; -strstr = 0x400004dc; -bzero = 0x400004e0; _isatty_r = 0x400004e4; -sbrk = 0x400004e8; -isalnum = 0x400004ec; -isalpha = 0x400004f0; -isascii = 0x400004f4; -isblank = 0x400004f8; -iscntrl = 0x400004fc; -isdigit = 0x40000500; -islower = 0x40000504; -isgraph = 0x40000508; -isprint = 0x4000050c; -ispunct = 0x40000510; -isspace = 0x40000514; -isupper = 0x40000518; -toupper = 0x4000051c; -tolower = 0x40000520; -toascii = 0x40000524; -memccpy = 0x40000528; -memchr = 0x4000052c; -memrchr = 0x40000530; -strcasecmp = 0x40000534; -strcasestr = 0x40000538; -strcat = 0x4000053c; strdup = 0x40000540; -strchr = 0x40000544; -strcspn = 0x40000548; -strcoll = 0x4000054c; -strlcat = 0x40000550; -strlcpy = 0x40000554; -strlwr = 0x40000558; -strncasecmp = 0x4000055c; -strncat = 0x40000560; strndup = 0x40000564; -strnlen = 0x40000568; -strrchr = 0x4000056c; -strsep = 0x40000570; -strspn = 0x40000574; -strtok_r = 0x40000578; -strupr = 0x4000057c; -longjmp = 0x40000580; -setjmp = 0x40000584; -abs = 0x40000588; -div = 0x4000058c; -labs = 0x40000590; -ldiv = 0x40000594; -qsort = 0x40000598; rand_r = 0x4000059c; rand = 0x400005a0; srand = 0x400005a4; -utoa = 0x400005a8; -itoa = 0x400005ac; atoi = 0x400005b0; atol = 0x400005b4; strtol = 0x400005b8; @@ -94,6 +39,3 @@ __swhatbuf_r = 0x400005d4; __swbuf_r = 0x400005d8; __swbuf = 0x400005dc; __swsetup_r = 0x400005e0; -/* Data (.data, .bss, .rodata) */ -syscall_table_ptr = 0x4085ffd4; -_global_impure_ptr = 0x4085ffd0; diff --git a/components/esp_rom/esp32c6/ld/esp32c6.rom.libc.ld b/components/esp_rom/esp32c6/ld/esp32c6.rom.libc.ld new file mode 100644 index 000000000000..abc58cb644b3 --- /dev/null +++ b/components/esp_rom/esp32c6/ld/esp32c6.rom.libc.ld @@ -0,0 +1,65 @@ +/* + * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ +esp_rom_newlib_init_common_mutexes = 0x400004a4; +memset = 0x400004a8; +memcpy = 0x400004ac; +memmove = 0x400004b0; +memcmp = 0x400004b4; +strcpy = 0x400004b8; +strncpy = 0x400004bc; +strcmp = 0x400004c0; +strncmp = 0x400004c4; +strlen = 0x400004c8; +strstr = 0x400004cc; +bzero = 0x400004d0; +sbrk = 0x400004d8; +isalnum = 0x400004dc; +isalpha = 0x400004e0; +isascii = 0x400004e4; +isblank = 0x400004e8; +iscntrl = 0x400004ec; +isdigit = 0x400004f0; +islower = 0x400004f4; +isgraph = 0x400004f8; +isprint = 0x400004fc; +ispunct = 0x40000500; +isspace = 0x40000504; +isupper = 0x40000508; +toupper = 0x4000050c; +tolower = 0x40000510; +toascii = 0x40000514; +memccpy = 0x40000518; +memchr = 0x4000051c; +memrchr = 0x40000520; +strcasecmp = 0x40000524; +strcasestr = 0x40000528; +strcat = 0x4000052c; +strchr = 0x40000534; +strcspn = 0x40000538; +strcoll = 0x4000053c; +strlcat = 0x40000540; +strlcpy = 0x40000544; +strlwr = 0x40000548; +strncasecmp = 0x4000054c; +strncat = 0x40000550; +strnlen = 0x40000558; +strrchr = 0x4000055c; +strsep = 0x40000560; +strspn = 0x40000564; +strtok_r = 0x40000568; +strupr = 0x4000056c; +longjmp = 0x40000570; +setjmp = 0x40000574; +abs = 0x40000578; +div = 0x4000057c; +labs = 0x40000580; +ldiv = 0x40000584; +qsort = 0x40000588; +utoa = 0x40000598; +itoa = 0x4000059c; +/* Data (.data, .bss, .rodata) */ +syscall_table_ptr = 0x4087ffd4; +_global_impure_ptr = 0x4087ffd0; diff --git a/components/esp_rom/esp32c6/ld/esp32c6.rom.newlib.ld b/components/esp_rom/esp32c6/ld/esp32c6.rom.newlib.ld index fcc63288a8bf..2bae47924798 100644 --- a/components/esp_rom/esp32c6/ld/esp32c6.rom.newlib.ld +++ b/components/esp_rom/esp32c6/ld/esp32c6.rom.newlib.ld @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -10,7 +10,9 @@ * * Compatible with ROM where ECO version equal or greater to 0. * - * THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT EDIT. + * THIS FILE WAS AUTOMATICALLY GENERATED. !!! BUT EDITED !!! + * The file was originally generated for use with newlib, but it was split into + * multiple files to make it compatible with picolibc. */ /*************************************** @@ -18,69 +20,12 @@ ***************************************/ /* Functions */ -esp_rom_newlib_init_common_mutexes = 0x400004a4; -memset = 0x400004a8; -memcpy = 0x400004ac; -memmove = 0x400004b0; -memcmp = 0x400004b4; -strcpy = 0x400004b8; -strncpy = 0x400004bc; -strcmp = 0x400004c0; -strncmp = 0x400004c4; -strlen = 0x400004c8; -strstr = 0x400004cc; -bzero = 0x400004d0; _isatty_r = 0x400004d4; -sbrk = 0x400004d8; -isalnum = 0x400004dc; -isalpha = 0x400004e0; -isascii = 0x400004e4; -isblank = 0x400004e8; -iscntrl = 0x400004ec; -isdigit = 0x400004f0; -islower = 0x400004f4; -isgraph = 0x400004f8; -isprint = 0x400004fc; -ispunct = 0x40000500; -isspace = 0x40000504; -isupper = 0x40000508; -toupper = 0x4000050c; -tolower = 0x40000510; -toascii = 0x40000514; -memccpy = 0x40000518; -memchr = 0x4000051c; -memrchr = 0x40000520; -strcasecmp = 0x40000524; -strcasestr = 0x40000528; -strcat = 0x4000052c; strdup = 0x40000530; -strchr = 0x40000534; -strcspn = 0x40000538; -strcoll = 0x4000053c; -strlcat = 0x40000540; -strlcpy = 0x40000544; -strlwr = 0x40000548; -strncasecmp = 0x4000054c; -strncat = 0x40000550; strndup = 0x40000554; -strnlen = 0x40000558; -strrchr = 0x4000055c; -strsep = 0x40000560; -strspn = 0x40000564; -strtok_r = 0x40000568; -strupr = 0x4000056c; -longjmp = 0x40000570; -setjmp = 0x40000574; -abs = 0x40000578; -div = 0x4000057c; -labs = 0x40000580; -ldiv = 0x40000584; -qsort = 0x40000588; rand_r = 0x4000058c; rand = 0x40000590; srand = 0x40000594; -utoa = 0x40000598; -itoa = 0x4000059c; atoi = 0x400005a0; atol = 0x400005a4; strtol = 0x400005a8; @@ -94,6 +39,3 @@ __swhatbuf_r = 0x400005c4; __swbuf_r = 0x400005c8; __swbuf = 0x400005cc; __swsetup_r = 0x400005d0; -/* Data (.data, .bss, .rodata) */ -syscall_table_ptr = 0x4087ffd4; -_global_impure_ptr = 0x4087ffd0; diff --git a/components/esp_rom/esp32c61/ld/esp32c61.rom.libc.ld b/components/esp_rom/esp32c61/ld/esp32c61.rom.libc.ld new file mode 100644 index 000000000000..8fd3bbab779d --- /dev/null +++ b/components/esp_rom/esp32c61/ld/esp32c61.rom.libc.ld @@ -0,0 +1,65 @@ +/* + * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ +esp_rom_newlib_init_common_mutexes = 0x400004b4; +memset = 0x400004b8; +memcpy = 0x400004bc; +memmove = 0x400004c0; +memcmp = 0x400004c4; +strcpy = 0x400004c8; +strncpy = 0x400004cc; +strcmp = 0x400004d0; +strncmp = 0x400004d4; +strlen = 0x400004d8; +strstr = 0x400004dc; +bzero = 0x400004e0; +sbrk = 0x400004e8; +isalnum = 0x400004ec; +isalpha = 0x400004f0; +isascii = 0x400004f4; +isblank = 0x400004f8; +iscntrl = 0x400004fc; +isdigit = 0x40000500; +islower = 0x40000504; +isgraph = 0x40000508; +isprint = 0x4000050c; +ispunct = 0x40000510; +isspace = 0x40000514; +isupper = 0x40000518; +toupper = 0x4000051c; +tolower = 0x40000520; +toascii = 0x40000524; +memccpy = 0x40000528; +memchr = 0x4000052c; +memrchr = 0x40000530; +strcasecmp = 0x40000534; +strcasestr = 0x40000538; +strcat = 0x4000053c; +strchr = 0x40000544; +strcspn = 0x40000548; +strcoll = 0x4000054c; +strlcat = 0x40000550; +strlcpy = 0x40000554; +strlwr = 0x40000558; +strncasecmp = 0x4000055c; +strncat = 0x40000560; +strnlen = 0x40000568; +strrchr = 0x4000056c; +strsep = 0x40000570; +strspn = 0x40000574; +strtok_r = 0x40000578; +strupr = 0x4000057c; +longjmp = 0x40000580; +setjmp = 0x40000584; +abs = 0x40000588; +div = 0x4000058c; +labs = 0x40000590; +ldiv = 0x40000594; +qsort = 0x40000598; +utoa = 0x400005a8; +itoa = 0x400005ac; +/* Data (.data, .bss, .rodata) */ +syscall_table_ptr = 0x4084ffd4; +_global_impure_ptr = 0x4084ffd0; diff --git a/components/esp_rom/esp32c61/ld/esp32c61.rom.newlib.ld b/components/esp_rom/esp32c61/ld/esp32c61.rom.newlib.ld index 1faa1ebb2c69..0e6df59a285e 100644 --- a/components/esp_rom/esp32c61/ld/esp32c61.rom.newlib.ld +++ b/components/esp_rom/esp32c61/ld/esp32c61.rom.newlib.ld @@ -10,7 +10,9 @@ * * Compatible with ROM where ECO version equal or greater to 0. * - * THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT EDIT. + * THIS FILE WAS AUTOMATICALLY GENERATED. !!! BUT EDITED !!! + * The file was originally generated for use with newlib, but it was split into + * multiple files to make it compatible with picolibc. */ /*************************************** @@ -18,69 +20,12 @@ ***************************************/ /* Functions */ -esp_rom_newlib_init_common_mutexes = 0x400004b4; -memset = 0x400004b8; -memcpy = 0x400004bc; -memmove = 0x400004c0; -memcmp = 0x400004c4; -strcpy = 0x400004c8; -strncpy = 0x400004cc; -strcmp = 0x400004d0; -strncmp = 0x400004d4; -strlen = 0x400004d8; -strstr = 0x400004dc; -bzero = 0x400004e0; _isatty_r = 0x400004e4; -sbrk = 0x400004e8; -isalnum = 0x400004ec; -isalpha = 0x400004f0; -isascii = 0x400004f4; -isblank = 0x400004f8; -iscntrl = 0x400004fc; -isdigit = 0x40000500; -islower = 0x40000504; -isgraph = 0x40000508; -isprint = 0x4000050c; -ispunct = 0x40000510; -isspace = 0x40000514; -isupper = 0x40000518; -toupper = 0x4000051c; -tolower = 0x40000520; -toascii = 0x40000524; -memccpy = 0x40000528; -memchr = 0x4000052c; -memrchr = 0x40000530; -strcasecmp = 0x40000534; -strcasestr = 0x40000538; -strcat = 0x4000053c; strdup = 0x40000540; -strchr = 0x40000544; -strcspn = 0x40000548; -strcoll = 0x4000054c; -strlcat = 0x40000550; -strlcpy = 0x40000554; -strlwr = 0x40000558; -strncasecmp = 0x4000055c; -strncat = 0x40000560; strndup = 0x40000564; -strnlen = 0x40000568; -strrchr = 0x4000056c; -strsep = 0x40000570; -strspn = 0x40000574; -strtok_r = 0x40000578; -strupr = 0x4000057c; -longjmp = 0x40000580; -setjmp = 0x40000584; -abs = 0x40000588; -div = 0x4000058c; -labs = 0x40000590; -ldiv = 0x40000594; -qsort = 0x40000598; rand_r = 0x4000059c; rand = 0x400005a0; srand = 0x400005a4; -utoa = 0x400005a8; -itoa = 0x400005ac; atoi = 0x400005b0; atol = 0x400005b4; strtol = 0x400005b8; @@ -94,6 +39,3 @@ __swhatbuf_r = 0x400005d4; __swbuf_r = 0x400005d8; __swbuf = 0x400005dc; __swsetup_r = 0x400005e0; -/* Data (.data, .bss, .rodata) */ -syscall_table_ptr = 0x4084ffd4; -_global_impure_ptr = 0x4084ffd0; diff --git a/components/esp_rom/esp32h2/ld/esp32h2.rom.libc.ld b/components/esp_rom/esp32h2/ld/esp32h2.rom.libc.ld new file mode 100644 index 000000000000..488fa5678d14 --- /dev/null +++ b/components/esp_rom/esp32h2/ld/esp32h2.rom.libc.ld @@ -0,0 +1,65 @@ +/* + * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ +esp_rom_newlib_init_common_mutexes = 0x4000049c; +memset = 0x400004a0; +memcpy = 0x400004a4; +memmove = 0x400004a8; +memcmp = 0x400004ac; +strcpy = 0x400004b0; +strncpy = 0x400004b4; +strcmp = 0x400004b8; +strncmp = 0x400004bc; +strlen = 0x400004c0; +strstr = 0x400004c4; +bzero = 0x400004c8; +sbrk = 0x400004d0; +isalnum = 0x400004d4; +isalpha = 0x400004d8; +isascii = 0x400004dc; +isblank = 0x400004e0; +iscntrl = 0x400004e4; +isdigit = 0x400004e8; +islower = 0x400004ec; +isgraph = 0x400004f0; +isprint = 0x400004f4; +ispunct = 0x400004f8; +isspace = 0x400004fc; +isupper = 0x40000500; +toupper = 0x40000504; +tolower = 0x40000508; +toascii = 0x4000050c; +memccpy = 0x40000510; +memchr = 0x40000514; +memrchr = 0x40000518; +strcasecmp = 0x4000051c; +strcasestr = 0x40000520; +strcat = 0x40000524; +strchr = 0x4000052c; +strcspn = 0x40000530; +strcoll = 0x40000534; +strlcat = 0x40000538; +strlcpy = 0x4000053c; +strlwr = 0x40000540; +strncasecmp = 0x40000544; +strncat = 0x40000548; +strnlen = 0x40000550; +strrchr = 0x40000554; +strsep = 0x40000558; +strspn = 0x4000055c; +strtok_r = 0x40000560; +strupr = 0x40000564; +longjmp = 0x40000568; +setjmp = 0x4000056c; +abs = 0x40000570; +div = 0x40000574; +labs = 0x40000578; +ldiv = 0x4000057c; +qsort = 0x40000580; +utoa = 0x40000590; +itoa = 0x40000594; +/* Data (.data, .bss, .rodata) */ +syscall_table_ptr = 0x4084ffd4; +_global_impure_ptr = 0x4084ffd0; diff --git a/components/esp_rom/esp32h2/ld/esp32h2.rom.newlib.ld b/components/esp_rom/esp32h2/ld/esp32h2.rom.newlib.ld index 211299b3a55f..770211f2c327 100644 --- a/components/esp_rom/esp32h2/ld/esp32h2.rom.newlib.ld +++ b/components/esp_rom/esp32h2/ld/esp32h2.rom.newlib.ld @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -10,7 +10,9 @@ * * Compatible with ROM where ECO version equal or greater to 0. * - * THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT EDIT. + * THIS FILE WAS AUTOMATICALLY GENERATED. !!! BUT EDITED !!! + * The file was originally generated for use with newlib, but it was split into + * multiple files to make it compatible with picolibc. */ /*************************************** @@ -18,69 +20,12 @@ ***************************************/ /* Functions */ -esp_rom_newlib_init_common_mutexes = 0x4000049c; -memset = 0x400004a0; -memcpy = 0x400004a4; -memmove = 0x400004a8; -memcmp = 0x400004ac; -strcpy = 0x400004b0; -strncpy = 0x400004b4; -strcmp = 0x400004b8; -strncmp = 0x400004bc; -strlen = 0x400004c0; -strstr = 0x400004c4; -bzero = 0x400004c8; _isatty_r = 0x400004cc; -sbrk = 0x400004d0; -isalnum = 0x400004d4; -isalpha = 0x400004d8; -isascii = 0x400004dc; -isblank = 0x400004e0; -iscntrl = 0x400004e4; -isdigit = 0x400004e8; -islower = 0x400004ec; -isgraph = 0x400004f0; -isprint = 0x400004f4; -ispunct = 0x400004f8; -isspace = 0x400004fc; -isupper = 0x40000500; -toupper = 0x40000504; -tolower = 0x40000508; -toascii = 0x4000050c; -memccpy = 0x40000510; -memchr = 0x40000514; -memrchr = 0x40000518; -strcasecmp = 0x4000051c; -strcasestr = 0x40000520; -strcat = 0x40000524; strdup = 0x40000528; -strchr = 0x4000052c; -strcspn = 0x40000530; -strcoll = 0x40000534; -strlcat = 0x40000538; -strlcpy = 0x4000053c; -strlwr = 0x40000540; -strncasecmp = 0x40000544; -strncat = 0x40000548; strndup = 0x4000054c; -strnlen = 0x40000550; -strrchr = 0x40000554; -strsep = 0x40000558; -strspn = 0x4000055c; -strtok_r = 0x40000560; -strupr = 0x40000564; -longjmp = 0x40000568; -setjmp = 0x4000056c; -abs = 0x40000570; -div = 0x40000574; -labs = 0x40000578; -ldiv = 0x4000057c; -qsort = 0x40000580; rand_r = 0x40000584; rand = 0x40000588; srand = 0x4000058c; -utoa = 0x40000590; -itoa = 0x40000594; atoi = 0x40000598; atol = 0x4000059c; strtol = 0x400005a0; @@ -94,6 +39,3 @@ __swhatbuf_r = 0x400005bc; __swbuf_r = 0x400005c0; __swbuf = 0x400005c4; __swsetup_r = 0x400005c8; -/* Data (.data, .bss, .rodata) */ -syscall_table_ptr = 0x4084ffd4; -_global_impure_ptr = 0x4084ffd0; diff --git a/components/esp_rom/esp32p4/ld/esp32p4.rom.libc.ld b/components/esp_rom/esp32p4/ld/esp32p4.rom.libc.ld new file mode 100644 index 000000000000..8f0911ef0fb7 --- /dev/null +++ b/components/esp_rom/esp32p4/ld/esp32p4.rom.libc.ld @@ -0,0 +1,65 @@ +/* + * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ +esp_rom_newlib_init_common_mutexes = 0x4fc00264; +memset = 0x4fc00268; +memcpy = 0x4fc0026c; +memmove = 0x4fc00270; +memcmp = 0x4fc00274; +strcpy = 0x4fc00278; +strncpy = 0x4fc0027c; +strcmp = 0x4fc00280; +strncmp = 0x4fc00284; +strlen = 0x4fc00288; +strstr = 0x4fc0028c; +bzero = 0x4fc00290; +sbrk = 0x4fc00298; +isalnum = 0x4fc0029c; +isalpha = 0x4fc002a0; +isascii = 0x4fc002a4; +isblank = 0x4fc002a8; +iscntrl = 0x4fc002ac; +isdigit = 0x4fc002b0; +islower = 0x4fc002b4; +isgraph = 0x4fc002b8; +isprint = 0x4fc002bc; +ispunct = 0x4fc002c0; +isspace = 0x4fc002c4; +isupper = 0x4fc002c8; +toupper = 0x4fc002cc; +tolower = 0x4fc002d0; +toascii = 0x4fc002d4; +memccpy = 0x4fc002d8; +memchr = 0x4fc002dc; +memrchr = 0x4fc002e0; +strcasecmp = 0x4fc002e4; +strcasestr = 0x4fc002e8; +strcat = 0x4fc002ec; +strchr = 0x4fc002f4; +strcspn = 0x4fc002f8; +strcoll = 0x4fc002fc; +strlcat = 0x4fc00300; +strlcpy = 0x4fc00304; +strlwr = 0x4fc00308; +strncasecmp = 0x4fc0030c; +strncat = 0x4fc00310; +strnlen = 0x4fc00318; +strrchr = 0x4fc0031c; +strsep = 0x4fc00320; +strspn = 0x4fc00324; +strtok_r = 0x4fc00328; +strupr = 0x4fc0032c; +longjmp = 0x4fc00330; +setjmp = 0x4fc00334; +abs = 0x4fc00338; +div = 0x4fc0033c; +labs = 0x4fc00340; +ldiv = 0x4fc00344; +qsort = 0x4fc00348; +utoa = 0x4fc00358; +itoa = 0x4fc0035c; +/* Data (.data, .bss, .rodata) */ +syscall_table_ptr = 0x4ff3ffe4; +_global_impure_ptr = 0x4ff3ffe0; diff --git a/components/esp_rom/esp32p4/ld/esp32p4.rom.newlib.ld b/components/esp_rom/esp32p4/ld/esp32p4.rom.newlib.ld index c5db4832c20c..aa24010efed2 100644 --- a/components/esp_rom/esp32p4/ld/esp32p4.rom.newlib.ld +++ b/components/esp_rom/esp32p4/ld/esp32p4.rom.newlib.ld @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -10,7 +10,9 @@ * * Compatible with ROM where ECO version equal or greater to 0. * - * THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT EDIT. + * THIS FILE WAS AUTOMATICALLY GENERATED. !!! BUT EDITED !!! + * The file was originally generated for use with newlib, but it was split into + * multiple files to make it compatible with picolibc. */ /*************************************** @@ -18,69 +20,12 @@ ***************************************/ /* Functions */ -esp_rom_newlib_init_common_mutexes = 0x4fc00264; -memset = 0x4fc00268; -memcpy = 0x4fc0026c; -memmove = 0x4fc00270; -memcmp = 0x4fc00274; -strcpy = 0x4fc00278; -strncpy = 0x4fc0027c; -strcmp = 0x4fc00280; -strncmp = 0x4fc00284; -strlen = 0x4fc00288; -strstr = 0x4fc0028c; -bzero = 0x4fc00290; _isatty_r = 0x4fc00294; -sbrk = 0x4fc00298; -isalnum = 0x4fc0029c; -isalpha = 0x4fc002a0; -isascii = 0x4fc002a4; -isblank = 0x4fc002a8; -iscntrl = 0x4fc002ac; -isdigit = 0x4fc002b0; -islower = 0x4fc002b4; -isgraph = 0x4fc002b8; -isprint = 0x4fc002bc; -ispunct = 0x4fc002c0; -isspace = 0x4fc002c4; -isupper = 0x4fc002c8; -toupper = 0x4fc002cc; -tolower = 0x4fc002d0; -toascii = 0x4fc002d4; -memccpy = 0x4fc002d8; -memchr = 0x4fc002dc; -memrchr = 0x4fc002e0; -strcasecmp = 0x4fc002e4; -strcasestr = 0x4fc002e8; -strcat = 0x4fc002ec; strdup = 0x4fc002f0; -strchr = 0x4fc002f4; -strcspn = 0x4fc002f8; -strcoll = 0x4fc002fc; -strlcat = 0x4fc00300; -strlcpy = 0x4fc00304; -strlwr = 0x4fc00308; -strncasecmp = 0x4fc0030c; -strncat = 0x4fc00310; strndup = 0x4fc00314; -strnlen = 0x4fc00318; -strrchr = 0x4fc0031c; -strsep = 0x4fc00320; -strspn = 0x4fc00324; -strtok_r = 0x4fc00328; -strupr = 0x4fc0032c; -longjmp = 0x4fc00330; -setjmp = 0x4fc00334; -abs = 0x4fc00338; -div = 0x4fc0033c; -labs = 0x4fc00340; -ldiv = 0x4fc00344; -qsort = 0x4fc00348; rand_r = 0x4fc0034c; rand = 0x4fc00350; srand = 0x4fc00354; -utoa = 0x4fc00358; -itoa = 0x4fc0035c; atoi = 0x4fc00360; atol = 0x4fc00364; strtol = 0x4fc00368; @@ -94,6 +39,3 @@ __swhatbuf_r = 0x4fc00384; __swbuf_r = 0x4fc00388; __swbuf = 0x4fc0038c; __swsetup_r = 0x4fc00390; -/* Data (.data, .bss, .rodata) */ -syscall_table_ptr = 0x4ff3ffe4; -_global_impure_ptr = 0x4ff3ffe0; diff --git a/components/esp_rom/esp32s2/include/esp32s2/rom/efuse.h b/components/esp_rom/esp32s2/include/esp32s2/rom/efuse.h index 290a5567ba6d..00b4509de731 100644 --- a/components/esp_rom/esp32s2/include/esp32s2/rom/efuse.h +++ b/components/esp_rom/esp32s2/include/esp32s2/rom/efuse.h @@ -11,6 +11,7 @@ extern "C" { #endif +#include #include #include diff --git a/components/esp_rom/esp32s2/ld/esp32s2.rom.newlib-funcs.ld b/components/esp_rom/esp32s2/ld/esp32s2.rom.libc-funcs.ld similarity index 58% rename from components/esp_rom/esp32s2/ld/esp32s2.rom.newlib-funcs.ld rename to components/esp_rom/esp32s2/ld/esp32s2.rom.libc-funcs.ld index 899997df46df..ae5bc633bfca 100644 --- a/components/esp_rom/esp32s2/ld/esp32s2.rom.newlib-funcs.ld +++ b/components/esp_rom/esp32s2/ld/esp32s2.rom.libc-funcs.ld @@ -1,3 +1,8 @@ +/* + * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ /** * These are the newlib functions present in ESP32-S2 ROM. * See also esp32s2.rom.newlib-data.ld for the list of .data/.bss symbols used by these functions. @@ -8,24 +13,10 @@ */ abs = 0x40000618; -__ascii_mbtowc = 0x40007a04; -__ascii_wctomb = 0x400018d0; PROVIDE ( __assert = 0x4001a430 ); PROVIDE ( __assert_func = 0x4001a408 ); bzero = 0x400078c8; -_cleanup_r = 0x4001a480; -creat = 0x4000788c; div = 0x40000620; -fclose = 0x4001a804; -_fclose_r = 0x4001a714; -fflush = 0x40001bb8; -_fflush_r = 0x40001b30; -__fp_unlock_all = 0x4001a64c; -__fputwc = 0x40001770; -fputwc = 0x40001864; -_fputwc_r = 0x400017f8; -_fwalk = 0x4001bcec; -_fwalk_reent = 0x4001bd24; isalnum = 0x400078d8; isalpha = 0x400078e8; isascii = 0x4001aaec; @@ -40,11 +31,7 @@ isspace = 0x400079ac; isupper = 0x400079c4; labs = 0x40000648; ldiv = 0x40000650; -__locale_ctype_ptr = 0x40001c2c; -__locale_ctype_ptr_l = 0x40001c24; -__locale_mb_cur_max = 0x40001c0c; longjmp = 0x400005a4; -_mbtowc_r = 0x400079e0; memccpy = 0x4001ab00; memchr = 0x4001ab24; memcmp = 0x4001ab40; @@ -52,35 +39,14 @@ memcpy = 0x4001aba8; memmove = 0x4001acb0; memrchr = 0x4001acec; memset = 0x4001ad3c; -open = 0x400080c4; qsort = 0x400006f4; -rand_r = 0x40007af4; -__sclose = 0x4001a700; -__seofread = 0x4001a690; setjmp = 0x40000540; -setlocale = 0x40001c44; -_setlocale_r = 0x40001bdc; -__sflush_r = 0x400019dc; -__sfmoreglue = 0x4001a4c8; -__sfp = 0x4001a590; -__sfp_lock_acquire = 0x4001a508; -__sfp_lock_release = 0x4001a514; -__sinit = 0x4001a538; -__sinit_lock_acquire = 0x4001a520; -__sinit_lock_release = 0x4001a52c; -srand = 0x40007a24; -__sread = 0x4001a660; -__sseek = 0x4001a6cc; -strcasecmp = 0x40007b38; -strcasestr = 0x40007b7c; strcat = 0x4001ad90; strchr = 0x4001adb0; strcmp = 0x40007be4; strcoll = 0x40007ce8; strcpy = 0x40007cfc; strcspn = 0x4001adcc; -strdup = 0x40007d84; -_strdup_r = 0x40007d98; strlcat = 0x40007db8; strlcpy = 0x4001adf8; strlen = 0x40007e08; @@ -89,8 +55,6 @@ strncasecmp = 0x40007e94; strncat = 0x4001ae34; strncmp = 0x4001ae64; strncpy = 0x40007f20; -strndup = 0x40007fe8; -_strndup_r = 0x40007ffc; strnlen = 0x4001ae9c; strrchr = 0x40008040; strsep = 0x4000806c; @@ -99,12 +63,6 @@ strstr = 0x4001aee8; __strtok_r = 0x4001af18; strtok_r = 0x4001af7c; strupr = 0x40008084; -__swbuf = 0x4000167c; -__swbuf_r = 0x400015bc; -__swrite = 0x4001a698; toascii = 0x4001af90; tolower = 0x40008158; toupper = 0x40008174; -wcrtomb = 0x400012f4; -_wcrtomb_r = 0x400012a0; -_wctomb_r = 0x400018ac; diff --git a/components/esp_rom/esp32s2/ld/esp32s2.rom.newlib-reent-funcs.ld b/components/esp_rom/esp32s2/ld/esp32s2.rom.newlib-reent-funcs.ld new file mode 100644 index 000000000000..4b8aa9c26c52 --- /dev/null +++ b/components/esp_rom/esp32s2/ld/esp32s2.rom.newlib-reent-funcs.ld @@ -0,0 +1,52 @@ +/* + * SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ +_cleanup_r = 0x4001a480; +creat = 0x4000788c; +open = 0x400080c4; +fclose = 0x4001a804; +_fclose_r = 0x4001a714; +fflush = 0x40001bb8; +_fflush_r = 0x40001b30; +__fp_unlock_all = 0x4001a64c; +__fputwc = 0x40001770; +fputwc = 0x40001864; +_fputwc_r = 0x400017f8; +_fwalk = 0x4001bcec; +_fwalk_reent = 0x4001bd24; +__sflush_r = 0x400019dc; +__swbuf = 0x4000167c; +__swbuf_r = 0x400015bc; +__swrite = 0x4001a698; +__sread = 0x4001a660; +__sseek = 0x4001a6cc; +srand = 0x40007a24; +__ascii_mbtowc = 0x40007a04; +__ascii_wctomb = 0x400018d0; +_mbtowc_r = 0x400079e0; +rand_r = 0x40007af4; +__sclose = 0x4001a700; +__seofread = 0x4001a690; +setlocale = 0x40001c44; +_setlocale_r = 0x40001bdc; +__sfmoreglue = 0x4001a4c8; +__sfp = 0x4001a590; +__sfp_lock_acquire = 0x4001a508; +__sfp_lock_release = 0x4001a514; +__sinit = 0x4001a538; +__sinit_lock_acquire = 0x4001a520; +__sinit_lock_release = 0x4001a52c; +strndup = 0x40007fe8; +_strndup_r = 0x40007ffc; +wcrtomb = 0x400012f4; +_wcrtomb_r = 0x400012a0; +_wctomb_r = 0x400018ac; +strdup = 0x40007d84; +_strdup_r = 0x40007d98; +__locale_ctype_ptr = 0x40001c2c; +__locale_ctype_ptr_l = 0x40001c24; +__locale_mb_cur_max = 0x40001c0c; +strcasecmp = 0x40007b38; +strcasestr = 0x40007b7c; diff --git a/components/esp_rom/esp32s3/ld/esp32s3.rom.libc.ld b/components/esp_rom/esp32s3/ld/esp32s3.rom.libc.ld new file mode 100644 index 000000000000..cf3f350174da --- /dev/null +++ b/components/esp_rom/esp32s3/ld/esp32s3.rom.libc.ld @@ -0,0 +1,66 @@ +/* + * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ +esp_rom_newlib_init_common_mutexes = 0x400011dc; +memset = 0x400011e8; +memcpy = 0x400011f4; +memmove = 0x40001200; +memcmp = 0x4000120c; +strcpy = 0x40001218; +strncpy = 0x40001224; +strcmp = 0x40001230; +strncmp = 0x4000123c; +strlen = 0x40001248; +strstr = 0x40001254; +bzero = 0x40001260; +sbrk = 0x40001278; +isalnum = 0x40001284; +isalpha = 0x40001290; +isascii = 0x4000129c; +isblank = 0x400012a8; +iscntrl = 0x400012b4; +isdigit = 0x400012c0; +islower = 0x400012cc; +isgraph = 0x400012d8; +isprint = 0x400012e4; +ispunct = 0x400012f0; +isspace = 0x400012fc; +isupper = 0x40001308; +toupper = 0x40001314; +tolower = 0x40001320; +toascii = 0x4000132c; +memccpy = 0x40001338; +memchr = 0x40001344; +memrchr = 0x40001350; +strcasecmp = 0x4000135c; +strcasestr = 0x40001368; +strcat = 0x40001374; +strchr = 0x4000138c; +strcspn = 0x40001398; +strcoll = 0x400013a4; +strlcat = 0x400013b0; +strlcpy = 0x400013bc; +strlwr = 0x400013c8; +strncasecmp = 0x400013d4; +strncat = 0x400013e0; +strnlen = 0x400013f8; +strrchr = 0x40001404; +strsep = 0x40001410; +strspn = 0x4000141c; +strtok_r = 0x40001428; +strupr = 0x40001434; +longjmp = 0x40001440; +setjmp = 0x4000144c; +abs = 0x40001458; +div = 0x40001464; +labs = 0x40001470; +ldiv = 0x4000147c; +qsort = 0x40001488; +rand_r = 0x40001494; +utoa = 0x400014b8; +itoa = 0x400014c4; +/* Data (.data, .bss, .rodata) */ +syscall_table_ptr = 0x3fceffd4; +_global_impure_ptr = 0x3fceffd0; diff --git a/components/esp_rom/esp32s3/ld/esp32s3.rom.newlib.ld b/components/esp_rom/esp32s3/ld/esp32s3.rom.newlib.ld index 2b64c0e94055..b0957aac2a55 100644 --- a/components/esp_rom/esp32s3/ld/esp32s3.rom.newlib.ld +++ b/components/esp_rom/esp32s3/ld/esp32s3.rom.newlib.ld @@ -1,3 +1,8 @@ +/* + * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ /* ROM function interface esp32s3.rom.newlib.ld for esp32s3 * * @@ -5,76 +10,15 @@ * * Compatible with ROM where ECO version equal or greater to 0. * - * THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT EDIT. + * THIS FILE WAS AUTOMATICALLY GENERATED. !!! BUT EDITED !!! + * The file was originally generated for use with newlib, but it was split into + * multiple files to make it compatible with picolibc. */ -/*************************************** - Group newlib - ***************************************/ - -/* Functions */ -esp_rom_newlib_init_common_mutexes = 0x400011dc; -memset = 0x400011e8; -memcpy = 0x400011f4; -memmove = 0x40001200; -memcmp = 0x4000120c; -strcpy = 0x40001218; -strncpy = 0x40001224; -strcmp = 0x40001230; -strncmp = 0x4000123c; -strlen = 0x40001248; -strstr = 0x40001254; -bzero = 0x40001260; -sbrk = 0x40001278; -isalnum = 0x40001284; -isalpha = 0x40001290; -isascii = 0x4000129c; -isblank = 0x400012a8; -iscntrl = 0x400012b4; -isdigit = 0x400012c0; -islower = 0x400012cc; -isgraph = 0x400012d8; -isprint = 0x400012e4; -ispunct = 0x400012f0; -isspace = 0x400012fc; -isupper = 0x40001308; -toupper = 0x40001314; -tolower = 0x40001320; -toascii = 0x4000132c; -memccpy = 0x40001338; -memchr = 0x40001344; -memrchr = 0x40001350; -strcasecmp = 0x4000135c; -strcasestr = 0x40001368; -strcat = 0x40001374; strdup = 0x40001380; -strchr = 0x4000138c; -strcspn = 0x40001398; -strcoll = 0x400013a4; -strlcat = 0x400013b0; -strlcpy = 0x400013bc; -strlwr = 0x400013c8; -strncasecmp = 0x400013d4; -strncat = 0x400013e0; strndup = 0x400013ec; -strnlen = 0x400013f8; -strrchr = 0x40001404; -strsep = 0x40001410; -strspn = 0x4000141c; -strtok_r = 0x40001428; -strupr = 0x40001434; -longjmp = 0x40001440; -setjmp = 0x4000144c; -abs = 0x40001458; -div = 0x40001464; -labs = 0x40001470; -ldiv = 0x4000147c; -qsort = 0x40001488; -rand_r = 0x40001494; rand = 0x400014a0; srand = 0x400014ac; -utoa = 0x400014b8; -itoa = 0x400014c4; atoi = 0x400014d0; atol = 0x400014dc; strtol = 0x400014e8; @@ -85,6 +29,3 @@ PROVIDE( _fwalk = 0x40001518 ); PROVIDE( _fwalk_reent = 0x40001524 ); PROVIDE( __swbuf_r = 0x40001548 ); __swbuf = 0x40001554; -/* Data (.data, .bss, .rodata) */ -syscall_table_ptr = 0x3fceffd4; -_global_impure_ptr = 0x3fceffd0; diff --git a/components/esp_rom/patches/esp_rom_multi_heap.c b/components/esp_rom/patches/esp_rom_multi_heap.c index 6a6682dbf381..99bf6b45da16 100644 --- a/components/esp_rom/patches/esp_rom_multi_heap.c +++ b/components/esp_rom/patches/esp_rom_multi_heap.c @@ -12,6 +12,7 @@ #include #include #include +#include #include "esp_rom_multi_heap.h" diff --git a/components/esp_rom/patches/esp_rom_tlsf.c b/components/esp_rom/patches/esp_rom_tlsf.c index 3a795edb3c8e..1d1acdc5a247 100644 --- a/components/esp_rom/patches/esp_rom_tlsf.c +++ b/components/esp_rom/patches/esp_rom_tlsf.c @@ -16,6 +16,7 @@ #include #include #include +#include #include "esp_rom_caps.h" #include "esp_rom_tlsf.h" diff --git a/components/esp_system/startup_funcs.c b/components/esp_system/startup_funcs.c index f57fff7a58af..f1940ecbd644 100644 --- a/components/esp_system/startup_funcs.c +++ b/components/esp_system/startup_funcs.c @@ -15,6 +15,9 @@ #include "esp_log.h" #include "spi_flash_mmap.h" #include "esp_flash_internal.h" +#if CONFIG_NEWLIB_ENABLED +#include "esp_newlib.h" +#endif #include "esp_newlib.h" #include "esp_xt_wdt.h" #include "esp_cpu.h" @@ -86,7 +89,7 @@ ESP_SYSTEM_INIT_FN(init_brownout, CORE, BIT(0), 104) ESP_SYSTEM_INIT_FN(init_newlib_time, CORE, BIT(0), 105) { - esp_newlib_time_init(); + esp_libc_time_init(); return ESP_OK; } diff --git a/components/esp_system/system_init_fn.txt b/components/esp_system/system_init_fn.txt index ba656cb3f15d..53fb06ef3db5 100644 --- a/components/esp_system/system_init_fn.txt +++ b/components/esp_system/system_init_fn.txt @@ -40,7 +40,7 @@ CORE: 100: init_heap in components/heap/heap_caps_init.c on BIT(0) # esp_timer early initialization is required for esp_timer_get_time to work. CORE: 101: esp_timer_init_nonos in components/esp_timer/src/esp_timer_init.c on BIT(0) -CORE: 102: init_newlib in components/newlib/newlib_init.c on BIT(0) +CORE: 102: init_libc in components/newlib/src/init.c on BIT(0) # Add the psram to heap, psram vaddr region is reserved when initialising the heap, after # psram is initialised (and necessary reservation for psram usage), the rest of the psram @@ -57,7 +57,7 @@ CORE: 111: init_vfs_usj in components/esp_driver_usb_serial_jtag/src/usb_serial_ CORE: 112: init_vfs_usj_sec in components/esp_driver_usb_serial_jtag/src/usb_serial_jtag_vfs.c on BIT(0) CORE: 113: init_vfs_nullfs in components/vfs/nullfs.c on BIT(0) CORE: 114: init_vfs_console in components/esp_vfs_console/vfs_console.c on BIT(0) -CORE: 115: init_newlib_stdio in components/newlib/newlib_init.c on BIT(0) +CORE: 115: init_libc_stdio in components/newlib/src/init.c on BIT(0) CORE: 130: init_flash in components/esp_system/startup_funcs.c on BIT(0) CORE: 140: init_efuse in components/efuse/src/esp_efuse_startup.c on BIT(0) diff --git a/components/esp_vfs_console/vfs_cdcacm.c b/components/esp_vfs_console/vfs_cdcacm.c index db30b1fcceb4..ed66e7703322 100644 --- a/components/esp_vfs_console/vfs_cdcacm.c +++ b/components/esp_vfs_console/vfs_cdcacm.c @@ -24,9 +24,9 @@ // Newline conversion mode when transmitting static esp_line_endings_t s_tx_mode = -#if CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF +#if CONFIG_LIBC_STDOUT_LINE_ENDING_CRLF ESP_LINE_ENDINGS_CRLF; -#elif CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR +#elif CONFIG_LIBC_STDOUT_LINE_ENDING_CR ESP_LINE_ENDINGS_CR; #else ESP_LINE_ENDINGS_LF; @@ -34,9 +34,9 @@ static esp_line_endings_t s_tx_mode = // Newline conversion mode when receiving static esp_line_endings_t s_rx_mode = -#if CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF +#if CONFIG_LIBC_STDIN_LINE_ENDING_CRLF ESP_LINE_ENDINGS_CRLF; -#elif CONFIG_NEWLIB_STDIN_LINE_ENDING_CR +#elif CONFIG_LIBC_STDIN_LINE_ENDING_CR ESP_LINE_ENDINGS_CR; #else ESP_LINE_ENDINGS_LF; diff --git a/components/fatfs/vfs/vfs_fat.c b/components/fatfs/vfs/vfs_fat.c index 6a72e80c2cd8..603a6e32ccf5 100644 --- a/components/fatfs/vfs/vfs_fat.c +++ b/components/fatfs/vfs/vfs_fat.c @@ -29,6 +29,10 @@ struct cached_data{ #endif FILINFO fileinfo; }; +#endif // CONFIG_VFS_SUPPORT_DIR + +#if !defined(FILENAME_MAX) +#define FILENAME_MAX 255 #endif typedef struct { diff --git a/components/freertos/config/riscv/include/freertos/FreeRTOSConfig_arch.h b/components/freertos/config/riscv/include/freertos/FreeRTOSConfig_arch.h index 198720a577b3..69764abb1163 100644 --- a/components/freertos/config/riscv/include/freertos/FreeRTOSConfig_arch.h +++ b/components/freertos/config/riscv/include/freertos/FreeRTOSConfig_arch.h @@ -35,7 +35,11 @@ /* ----------------------- System -------------------------- */ +#if CONFIG_LIBC_NEWLIB #define configUSE_NEWLIB_REENTRANT 1 +#else +#define configUSE_NEWLIB_REENTRANT 0 +#endif /* - FreeRTOS provides default for configTLS_BLOCK_TYPE. * - We simply provide our own INIT and DEINIT functions diff --git a/components/freertos/config/xtensa/include/freertos/FreeRTOSConfig_arch.h b/components/freertos/config/xtensa/include/freertos/FreeRTOSConfig_arch.h index 30210fee35b4..9880b42012b8 100644 --- a/components/freertos/config/xtensa/include/freertos/FreeRTOSConfig_arch.h +++ b/components/freertos/config/xtensa/include/freertos/FreeRTOSConfig_arch.h @@ -62,7 +62,11 @@ /* ----------------------- System -------------------------- */ +#if CONFIG_LIBC_NEWLIB #define configUSE_NEWLIB_REENTRANT 1 +#else +#define configUSE_NEWLIB_REENTRANT 0 +#endif /* - FreeRTOS provides default for configTLS_BLOCK_TYPE. * - We simply provide our own INIT and DEINIT functions diff --git a/components/mbedtls/test_apps/main/app_main.c b/components/mbedtls/test_apps/main/app_main.c index 27735fb98d9c..20792fb592e9 100644 --- a/components/mbedtls/test_apps/main/app_main.c +++ b/components/mbedtls/test_apps/main/app_main.c @@ -9,6 +9,7 @@ #include "mbedtls/aes.h" #include "memory_checks.h" #include "soc/soc_caps.h" +#include "esp_newlib.h" /* setUp runs before every test */ void setUp(void) diff --git a/components/mbedtls/test_apps/main/test_mbedtls_utils.c b/components/mbedtls/test_apps/main/test_mbedtls_utils.c index a2db3891840c..25c0b46dde46 100644 --- a/components/mbedtls/test_apps/main/test_mbedtls_utils.c +++ b/components/mbedtls/test_apps/main/test_mbedtls_utils.c @@ -6,6 +6,7 @@ #include #include +#include #include "test_mbedtls_utils.h" static inline char to_hex_digit(unsigned val) diff --git a/components/newlib/CMakeLists.txt b/components/newlib/CMakeLists.txt index c0af7ac692e9..0b1db2dfb1c7 100644 --- a/components/newlib/CMakeLists.txt +++ b/components/newlib/CMakeLists.txt @@ -14,38 +14,53 @@ if(non_os_build) endif() set(srcs - "abort.c" - "assert.c" - "heap.c" - "flockfile.c" - "locks.c" - "poll.c" - "pthread.c" - "random.c" - "getentropy.c" - "reent_init.c" - "newlib_init.c" - "syscalls.c" - "termios.c" - "stdatomic.c" - "time.c" - "sysconf.c" - "realpath.c" - "scandir.c" -) + "src/init.c" + "src/abort.c" + "src/assert.c" + "src/heap.c" + "src/locks.c" + "src/poll.c" + "src/pthread.c" + "src/random.c" + "src/getentropy.c" + "src/termios.c" + "src/stdatomic.c" + "src/time.c" + "src/sysconf.c" + "src/realpath.c" + "src/scandir.c" + "src/syscalls.c" + "src/reent_syscalls.c" + "src/port/esp_time_impl.c") if(CONFIG_STDATOMIC_S32C1I_SPIRAM_WORKAROUND) - list(APPEND srcs "port/xtensa/stdatomic_s32c1i.c") + list(APPEND srcs "src/port/xtensa/stdatomic_s32c1i.c") endif() -if(CONFIG_SPIRAM_CACHE_WORKAROUND) - set(ldfragments "esp32-spiram-rom-functions-c.lf") +if(CONFIG_LIBC_NEWLIB) + list(APPEND srcs + "src/flockfile.c" + "src/reent_init.c" + "src/newlib_init.c") +else() + list(APPEND srcs + "src/picolibc/picolibc_init.c" + "src/picolibc/rand.c" + "src/picolibc/open_memstream.c") endif() -list(APPEND ldfragments "newlib.lf" "system_libs.lf") +list(APPEND ldfragments "src/newlib.lf" "src/system_libs.lf") + +if(CONFIG_SPIRAM_CACHE_WORKAROUND) + if(CONFIG_LIBC_NEWLIB) + list(APPEND ldfragments src/esp32-spiram-rom-functions-c.lf) + else() + list(APPEND ldfragments src/picolibc/esp32-spiram-rom-functions-c.lf) + endif() +endif() idf_component_register(SRCS "${srcs}" - INCLUDE_DIRS "${include_dirs}" + INCLUDE_DIRS platform_include PRIV_INCLUDE_DIRS priv_include PRIV_REQUIRES soc spi_flash LDFRAGMENTS "${ldfragments}") @@ -57,22 +72,22 @@ target_link_libraries(${COMPONENT_LIB} INTERFACE c m ${CONFIG_COMPILER_RT_LIB_NA set_source_files_properties(heap.c PROPERTIES COMPILE_FLAGS -fno-builtin) if(CONFIG_STDATOMIC_S32C1I_SPIRAM_WORKAROUND) - set_source_files_properties("port/xtensa/stdatomic_s32c1i.c" + set_source_files_properties("src/port/xtensa/stdatomic_s32c1i.c" PROPERTIES COMPILE_FLAGS "-mno-disable-hardware-atomics") endif() # Forces the linker to include heap, syscall, pthread, assert, and retargetable locks from this component, # instead of the implementations provided by newlib. -list(APPEND EXTRA_LINK_FLAGS "-u newlib_include_heap_impl") -list(APPEND EXTRA_LINK_FLAGS "-u newlib_include_syscalls_impl") -list(APPEND EXTRA_LINK_FLAGS "-u newlib_include_pthread_impl") -list(APPEND EXTRA_LINK_FLAGS "-u newlib_include_assert_impl") -list(APPEND EXTRA_LINK_FLAGS "-u newlib_include_getentropy_impl") +list(APPEND EXTRA_LINK_FLAGS "-u esp_libc_include_heap_impl") +list(APPEND EXTRA_LINK_FLAGS "-u esp_libc_include_reent_syscalls_impl") +list(APPEND EXTRA_LINK_FLAGS "-u esp_libc_include_syscalls_impl") +list(APPEND EXTRA_LINK_FLAGS "-u esp_libc_include_pthread_impl") +list(APPEND EXTRA_LINK_FLAGS "-u esp_libc_include_assert_impl") +list(APPEND EXTRA_LINK_FLAGS "-u esp_libc_include_getentropy_impl") +list(APPEND EXTRA_LINK_FLAGS "-u esp_libc_include_init_funcs") +list(APPEND EXTRA_LINK_FLAGS "-u esp_libc_init_funcs") target_link_libraries(${COMPONENT_LIB} INTERFACE "${EXTRA_LINK_FLAGS}") -# Forces the linker to include newlib_init.c -target_link_libraries(${COMPONENT_LIB} INTERFACE "-u newlib_include_init_funcs") - if(CONFIG_NEWLIB_NANO_FORMAT) if(CMAKE_C_COMPILER_ID MATCHES "Clang") set(libc_dir_cmd ${CMAKE_C_COMPILER}) @@ -89,7 +104,7 @@ if(CONFIG_NEWLIB_NANO_FORMAT) endif() endif() -add_subdirectory(port) +add_subdirectory(src/port) # if lwip is included in the build, add it as a public requirement so that # #include works without any special provisions. diff --git a/components/newlib/COPYING.picolibc b/components/newlib/COPYING.picolibc new file mode 100644 index 000000000000..89955b323213 --- /dev/null +++ b/components/newlib/COPYING.picolibc @@ -0,0 +1,6332 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: picolibc +Upsream-Contact: Keith Packard +Source: https://keithp.com/git/picolibc +Copyright: 2019 Keith Packard +License: BSD3-1 + +Files: * +Copyright: 2020 The Newlib Project +License: Default-1 + +Files: debian/* +Copyright: 2019-2022 Keith Packard +License: BSD3-1 + +Files: *.md +Copyright: 2019 Keith Packard +License: BSD3-1 + +Files: scripts/GeneratePicolibcCrossFile.sh +Copyright: 2022 R. Diez - Licensed under the GNU AGPLv3 +License: AGPL3-1 + +Files: newlib/libc/iconv/ccs/ccs.h + newlib/libc/iconv/ces/us-ascii.c + newlib/libc/iconv/lib/aliasesi.c + newlib/libc/iconv/lib/encoding.deps + newlib/libc/iconv/lib/endian.h + newlib/libc/iconv/lib/iconvnls.c + newlib/libc/iconv/lib/iconvnls.h + newlib/libc/iconv/lib/local.h +Copyright: 2003-2004, Artem B. Bityuckiy +License: BSD2-1 + +Files: newlib/libc/iconv/ccs/mktbl.pl + newlib/libc/iconv/ces/mkdeps.pl +Copyright: 2003-2004, Artem B. Bityuckiy, SoftMine Corporation. +License: BSD2-1 + +Files: newlib/libc/iconv/ces/euc.c + newlib/libc/iconv/ces/table.c + newlib/libc/iconv/ces/ucs-2-internal.c + newlib/libc/iconv/ces/ucs-2.c + newlib/libc/iconv/ces/ucs-4-internal.c + newlib/libc/iconv/ces/ucs-4.c + newlib/libc/iconv/ces/utf-16.c + newlib/libc/iconv/ces/utf-8.c + newlib/libc/iconv/lib/conv.h + newlib/libc/iconv/lib/iconv.c + newlib/libc/iconv/lib/nullconv.c + newlib/libc/iconv/lib/ucsconv.c + newlib/libc/iconv/lib/ucsconv.h +Copyright: 2003-2004, Artem B. Bityuckiy + 1999,2000, Konstantin Chuguev. +License: BSD2-1 + +Files: newlib/libc/include/devctl.h +Copyright: 2016,2019 Joel Sherrill . +License: BSD2-1 + +Files: newlib/libc/include/iconv.h +Copyright: 2003-2004, Artem B. Bityuckiy, SoftMine Corporation. Rights transferred to Franklin Electronic Publishers. +License: BSD2-1 + +Files: newlib/libc/include/langinfo.h + newlib/libc/include/wchar.h + newlib/libc/locale/lmessages.c + newlib/libc/locale/nl_langinfo.c +Copyright: 2001 Alexey Zelkin +License: BSD2-1 + +Files: newlib/libc/include/machine/fenv-softfloat.h +Copyright: 2004-2011 David Schultz +License: BSD2-1 + +Files: newlib/libc/include/spawn.h +Copyright: 2008 Ed Schouten +License: BSD2-1 + +Files: newlib/libc/include/strings.h + newlib/libc/include/sys/_timeval.h +Copyright: 2002 Mike Barcroft +License: BSD2-1 + +Files: newlib/libc/include/sys/endian.h +Copyright: 2002 Thomas Moestl +License: BSD2-1 + +Files: newlib/libc/include/sys/iconvnls.h +Copyright: 2003-2004, Artem B. Bityuckiy. Rights transferred to Franklin Electronic Publishers. +License: BSD2-1 + +Files: newlib/libc/include/threads.h +Copyright: 2011 Ed Schouten +License: BSD2-1 + +Files: newlib/libc/locale/lctype.c +Copyright: 2010 Corinna Vinschen +License: BSD2-1 + +Files: newlib/libc/locale/lmonetary.c + newlib/libc/locale/lnumeric.c +Copyright: 2000, 2001 Alexey Zelkin +License: BSD2-1 + +Files: newlib/libc/locale/timelocal.c +Copyright: 2001 Alexey Zelkin + 1997 FreeBSD Inc. +License: BSD2-1 + +Files: newlib/libc/machine/aarch64/machine/_fpmath.h + newlib/libc/machine/riscv/machine/_fpmath.h +Copyright: 2002, 2003 David Schultz + 2014 The FreeBSD Foundation +License: BSD2-1 + +Files: newlib/libc/machine/aarch64/machine/fenv-fp.h + newlib/libc/machine/aarch64/machine/fenv.h + newlib/libc/machine/arm/machine/fenv.h + newlib/libc/machine/mips/machine/fenv-fp.h + newlib/libc/machine/mips/machine/fenv.h + newlib/libc/machine/powerpc/machine/fenv-fp.h + newlib/libc/machine/powerpc/machine/fenv.h + newlib/libc/machine/sh/machine/fenv.h + newlib/libc/machine/sparc/machine/fenv.h + newlib/libm/ld/common/s_frexpl.c +Copyright: 2004-2005 David Schultz +License: BSD2-1 + +Files: newlib/libc/machine/lm32/setjmp.S +Copyright: 2008 Jon Beniston +License: BSD2-1 + +Files: newlib/libc/machine/sh/machine/fenv-fp.h +Copyright: 2004-2005 David Schultz + 2013 Andrew Turner +License: BSD2-1 + +Files: newlib/libc/machine/x86/machine/fenv.h +Copyright: 2010-2019 Red Hat, Inc. +License: BSD2-1 + +Files: newlib/libc/machine/x86_64/machine/_fpmath.h + newlib/libm/ld/ld80/i386_fpmath.h +Copyright: 2002, 2003 David Schultz +License: BSD2-1 + +Files: newlib/libc/stdio/clearerr_u.c + newlib/libc/stdio/feof_u.c + newlib/libc/stdio/ferror_u.c + newlib/libc/stdio/fflush_u.c + newlib/libc/stdio/fgetc_u.c + newlib/libc/stdio/fgets_u.c + newlib/libc/stdio/fgetwc_u.c + newlib/libc/stdio/fgetws_u.c + newlib/libc/stdio/fileno_u.c + newlib/libc/stdio/fputc_u.c + newlib/libc/stdio/fputs_u.c + newlib/libc/stdio/fputwc_u.c + newlib/libc/stdio/fputws_u.c + newlib/libc/stdio/fread_u.c + newlib/libc/stdio/fsetlocking.c + newlib/libc/stdio/fwrite_u.c + newlib/libc/stdio/getwc_u.c + newlib/libc/stdio/getwchar_u.c + newlib/libc/stdio/putwc_u.c + newlib/libc/stdio/putwchar_u.c +Copyright: 2014 Red Hat, Inc. +License: BSD2-1 + +Files: newlib/libc/stdio/fgetwc.c + newlib/libc/stdio/fgetws.c + newlib/libc/stdio/fputwc.c + newlib/libc/stdio/fputws.c + newlib/libc/stdio/fwide.c + newlib/libc/stdio/ungetwc.c +Copyright: 2002-2004 Tim J. Robbins. +License: BSD2-1 + +Files: newlib/libc/stdio/getwc.c + newlib/libc/stdio/getwchar.c + newlib/libc/stdio/putwc.c + newlib/libc/stdio/putwchar.c + newlib/libc/stdlib/wcstod.c +Copyright: 2002 Tim J. Robbins. +License: BSD2-1 + +Files: newlib/libc/stdlib/arc4random.h +Copyright: 2016 embedded brains GmbH +License: BSD2-1 + +Files: newlib/libc/stdlib/imaxabs.c + newlib/libc/stdlib/imaxdiv.c + newlib/libc/stdlib/llabs.c + newlib/libc/stdlib/lldiv.c +Copyright: 2001 Mike Barcroft +License: BSD2-1 + +Files: newlib/libc/stdlib/quick_exit.c +Copyright: 2011 David Chisnall + 2015 embedded brains GmbH +License: BSD2-1 + +Files: newlib/libc/stdlib/reallocf.c +Copyright: 1998, M. Warner Losh +License: BSD2-1 + +Files: newlib/libc/stdlib/rpmatch.c +Copyright: 2004-2005 Tim J. Robbins. +License: BSD2-1 + +Files: newlib/libc/string/ffsl.c + newlib/libc/string/ffsll.c + newlib/libc/string/fls.c + newlib/libc/string/flsl.c + newlib/libc/string/flsll.c + newlib/libm/machine/arm/s_sqrt.c + newlib/libm/machine/arm/sf_sqrt.c +Copyright: 2017 embedded brains GmbH +License: BSD2-1 + +Files: newlib/libc/string/wcscat.c + newlib/libc/string/wcschr.c + newlib/libc/string/wcscpy.c + newlib/libc/string/wcscspn.c + newlib/libc/string/wcslen.c + newlib/libc/string/wcsncat.c + newlib/libc/string/wcsncpy.c + newlib/libc/string/wcspbrk.c + newlib/libc/string/wcsrchr.c + newlib/libc/string/wcsspn.c + newlib/libc/string/wcsstr.c + newlib/libc/string/wmemchr.c + newlib/libc/string/wmemcmp.c + newlib/libc/string/wmemcpy.c + newlib/libc/string/wmemmove.c + newlib/libc/string/wmemset.c +Copyright: 1999 Citrus Project, +License: BSD2-1 + +Files: newlib/libm/common/fma_inc.h +Copyright: 2005-2011 David Schultz +License: BSD2-1 + +Files: newlib/libm/complex/csqrtl.c +Copyright: 2007-2008 David Schultz +License: BSD2-1 + +Files: newlib/libm/ld/common/e_remainderl.c + newlib/libm/ld/common/s_rintl.c + newlib/libm/ld/ld128/invtrig.c + newlib/libm/ld/ld128/invtrig.h + newlib/libm/ld/ld80/invtrig.c + newlib/libm/ld/ld80/invtrig.h +Copyright: 2008 David Schultz +License: BSD2-1 + +Files: newlib/libm/ld/common/s_fdiml.c + newlib/libm/ld/common/s_finitel.c + newlib/libm/ld/common/s_fmaxl.c + newlib/libm/ld/common/s_fminl.c + newlib/libm/ld/common/s_isinfl.c + newlib/libm/ld/common/s_isnanl.c + newlib/libm/ld/common/s_scalbl.c + newlib/libm/ld/common/s_scalbln.c + newlib/libm/ld/common/s_signbitl.c +Copyright: 2004 David Schultz +License: BSD2-1 + +Files: newlib/libm/ld/common/s_lrintl.c + newlib/libm/ld/common/s_lround.c +Copyright: 2005 David Schultz +License: BSD2-1 + +Files: newlib/libm/ld/ld128/s_exp2l.c + newlib/libm/ld/ld80/s_exp2l.c +Copyright: 2005-2008 David Schultz +License: BSD2-1 + +Files: newlib/testsuite/newlib.iconv/iconv.exp + newlib/testsuite/newlib.iconv/iconvjp.c + newlib/testsuite/newlib.iconv/iconvnm.c + newlib/testsuite/newlib.iconv/iconvru.c +Copyright: 2003, Artem B. Bityuckiy, SoftMine Corporation. Rights transferred to Franklin Electronic Publishers. +License: BSD2-1 + +Files: test/t_fmemopen.c +Copyright: 2010 Takehiko NOZAKI, +License: BSD2-1 + +Files: newlib/libc/iconv/ces/table-pcs.c +Copyright: 2003-2004, Artem B. Bityuckiy +License: BSD2-2 + +Files: newlib/libc/include/machine/fenv.h +Copyright: 2019 Joel Sherrill +License: BSD2-3 + +Files: newlib/libm/fenv/fe_dfl_env.c +Copyright: 2019 Joel Sherrill +License: BSD2-5 + +Files: newlib/libc/machine/pru/setjmp.s + newlib/libm/machine/pru/fpclassify.c + newlib/libm/machine/pru/fpclassifyf.c + newlib/libm/machine/pru/isfinite.c + newlib/libm/machine/pru/isfinitef.c + newlib/libm/machine/pru/isinf.c + newlib/libm/machine/pru/isinff.c + newlib/libm/machine/pru/isnan.c + newlib/libm/machine/pru/isnanf.c + newlib/libm/machine/pru/isnormal.c + newlib/libm/machine/pru/isnormalf.c +Copyright: 2018-2019 Dimitar Dimitrov +License: BSD2-5 + +Files: newlib/libc/locale/nl_langinfo.3 +Copyright: 2001 Alexey Zelkin +License: BSD2-6 + +Files: newlib/libc/locale/setlocale.h +Copyright: 1997 Andrey A. Chernov, Moscow, Russia. +License: BSD2-7 + +Files: newlib/libc/posix/collcmp.c +Copyright: 1996 Andrey A. Chernov, Moscow, Russia. +License: BSD2-7 + +Files: newlib/libc/machine/or1k/setjmp.S +Copyright: 2014, Hesham ALMatary +License: BSD2-8 + +Files: newlib/libc/machine/sparc/machine/fenv-fp.h +Copyright: 2004-2005 David Schultz +License: BSD2-9 + +Files: newlib/libc/machine/xtensa/machine/fenv-fp.h + newlib/libc/machine/xtensa/machine/fenv.h + newlib/libc/sys/xtensa/include/fenv.h +Copyright: 2011 Tensilica Inc. +License: BSD2-10 + +Files: newlib/libc/posix/collate.h +Copyright: 1995 Alex Tatmanjants at Electronni Visti IA, Kiev, Ukraine. +License: BSD2-11 + +Files: newlib/libc/signal/sig2str.c +Copyright: 2021 Matthew Joyce +License: BSD2-12 + +Files: newlib/libc/sys/xtensa/clibrary_init.c +Copyright: 2003-2006 Tensilica Inc. +License: BSD2-13 + +Files: newlib/libc/sys/xtensa/sys/file.h +Copyright: 2005-2006 Tensilica Inc. +License: BSD2-13 + +Files: newlib/libm/ld/common/e_sqrtl.c + newlib/libm/ld/common/s_cosl.c + newlib/libm/ld/common/s_sinl.c + newlib/libm/ld/common/s_tanl.c +Copyright: 2007 Steven G. Kargl +License: BSD2-14 + +Files: newlib/libm/ld/common/s_roundl.c +Copyright: 2003, Steven G. Kargl +License: BSD2-14 + +Files: newlib/libm/ld/ld128/s_nanl.c + newlib/libm/ld/ld80/s_nanl.c +Copyright: 2007 David Schultz +License: BSD2-15 + +Files: CMakeLists.txt + cmake/picolibc.cmake + newlib/CMakeLists.txt + newlib/libc/CMakeLists.txt + newlib/libc/argz/CMakeLists.txt + newlib/libc/ctype/CMakeLists.txt + newlib/libc/errno/CMakeLists.txt + newlib/libc/iconv/CMakeLists.txt + newlib/libc/iconv/ccs/CMakeLists.txt + newlib/libc/iconv/ccs/iconv_data/CMakeLists.txt + newlib/libc/iconv/ces/CMakeLists.txt + newlib/libc/iconv/lib/CMakeLists.txt + newlib/libc/include/CMakeLists.txt + newlib/libc/include/arpa/CMakeLists.txt + newlib/libc/include/byteswap.h + newlib/libc/include/machine/CMakeLists.txt + newlib/libc/include/rpc/CMakeLists.txt + newlib/libc/include/rpc/meson.build + newlib/libc/include/ssp/CMakeLists.txt + newlib/libc/include/sys/CMakeLists.txt + newlib/libc/locale/CMakeLists.txt + newlib/libc/machine/CMakeLists.txt + newlib/libc/machine/aarch64/CMakeLists.txt + newlib/libc/machine/aarch64/machine/CMakeLists.txt + newlib/libc/machine/aarch64/machine/math.h + newlib/libc/machine/aarch64/machine/meson.build + newlib/libc/machine/arc/CMakeLists.txt + newlib/libc/machine/arc/meson.build + newlib/libc/machine/arc64/CMakeLists.txt + newlib/libc/machine/arc64/meson.build + newlib/libc/machine/arm/CMakeLists.txt + newlib/libc/machine/arm/machine/CMakeLists.txt + newlib/libc/machine/avr/meson.build + newlib/libc/machine/m68k/machine/CMakeLists.txt + newlib/libc/machine/mips/CMakeLists.txt + newlib/libc/machine/mips/machine/CMakeLists.txt + newlib/libc/machine/mips/machine/meson.build + newlib/libc/machine/mips/meson.build + newlib/libc/machine/msp430/meson.build + newlib/libc/machine/nios2/CMakeLists.txt + newlib/libc/machine/nios2/meson.build + newlib/libc/machine/powerpc/CMakeLists.txt + newlib/libc/machine/powerpc/machine/CMakeLists.txt + newlib/libc/machine/powerpc/machine/meson.build + newlib/libc/machine/riscv/CMakeLists.txt + newlib/libc/machine/riscv/machine/CMakeLists.txt + newlib/libc/machine/sparc/CMakeLists.txt + newlib/libc/machine/sparc/machine/CMakeLists.txt + newlib/libc/machine/sparc/machine/meson.build + newlib/libc/machine/sparc/meson.build + newlib/libc/machine/x86/CMakeLists.txt + newlib/libc/machine/x86/machine/CMakeLists.txt + newlib/libc/machine/xtensa/CMakeLists.txt + newlib/libc/machine/xtensa/machine/CMakeLists.txt + newlib/libc/misc/CMakeLists.txt + newlib/libc/misc/ubsan.c + newlib/libc/picolib/CMakeLists.txt + newlib/libc/picolib/machine/CMakeLists.txt + newlib/libc/picolib/machine/aarch64/CMakeLists.txt + newlib/libc/picolib/machine/arc/CMakeLists.txt + newlib/libc/picolib/machine/arc/tls.c + newlib/libc/picolib/machine/arc64/CMakeLists.txt + newlib/libc/picolib/machine/arm/CMakeLists.txt + newlib/libc/picolib/machine/mips/tls.c + newlib/libc/picolib/machine/msp430/CMakeLists.txt + newlib/libc/picolib/machine/riscv/CMakeLists.txt + newlib/libc/picolib/machine/sparc/CMakeLists.txt + newlib/libc/picolib/machine/xtensa/CMakeLists.txt + newlib/libc/picolib/machine/xtensa/tls.c + newlib/libc/posix/CMakeLists.txt + newlib/libc/search/CMakeLists.txt + newlib/libc/signal/CMakeLists.txt + newlib/libc/ssp/CMakeLists.txt + newlib/libc/stdlib/CMakeLists.txt + newlib/libc/string/CMakeLists.txt + newlib/libc/time/CMakeLists.txt + newlib/libc/tinystdio/CMakeLists.txt + newlib/libc/tinystdio/ecvt_r.c + newlib/libc/tinystdio/ecvtf_r.c + newlib/libc/tinystdio/ecvtl_r.c + newlib/libc/tinystdio/fcvt_r.c + newlib/libc/tinystdio/fcvtf_r.c + newlib/libc/tinystdio/fcvtl_r.c + newlib/libc/tinystdio/fmemopen.c + newlib/libc/tinystdio/getline.c + newlib/libc/tinystdio/remove.c + newlib/libc/tinystdio/stdio-bufio.h + newlib/libc/tinystdio/strtol_l.c + newlib/libc/tinystdio/strtoll_l.c + newlib/libc/tinystdio/strtoul_l.c + newlib/libc/tinystdio/strtoull_l.c + newlib/libc/tinystdio/tmpfile.c + newlib/libc/tinystdio/tmpnam.c + newlib/libc/xdr/CMakeLists.txt + newlib/libm/CMakeLists.txt + newlib/libm/common/CMakeLists.txt + newlib/libm/common/s_iseqsig.c + newlib/libm/common/sf_iseqsig.c + newlib/libm/common/sl_iseqsig.c + newlib/libm/fenv/CMakeLists.txt + newlib/libm/fenv/fegetmode.c + newlib/libm/fenv/fesetmode.c + newlib/libm/ld/CMakeLists.txt + newlib/libm/ld/common/meson.build + newlib/libm/ld/common/s_issignalingl.c + newlib/libm/ld/common/s_significandl.c + newlib/libm/ld/e_acoshl.c + newlib/libm/ld/e_acosl.c + newlib/libm/ld/e_asinl.c + newlib/libm/ld/e_atan2l.c + newlib/libm/ld/e_atanhl.c + newlib/libm/ld/e_coshl.c + newlib/libm/ld/e_expl.c + newlib/libm/ld/e_fmodl.c + newlib/libm/ld/e_hypotl.c + newlib/libm/ld/e_lgammal.c + newlib/libm/ld/e_lgammal_r.c + newlib/libm/ld/e_log10l.c + newlib/libm/ld/e_log2l.c + newlib/libm/ld/e_logl.c + newlib/libm/ld/e_powl.c + newlib/libm/ld/e_remainderl.c + newlib/libm/ld/e_sinhl.c + newlib/libm/ld/e_sqrtl.c + newlib/libm/ld/e_tgammal.c + newlib/libm/ld/invtrig.c + newlib/libm/ld/k_cosl.c + newlib/libm/ld/k_rem_pio2.c + newlib/libm/ld/k_sinl.c + newlib/libm/ld/k_tanl.c + newlib/libm/ld/ldd/s_ceill.c + newlib/libm/ld/ldd/s_floorl.c + newlib/libm/ld/ldd/s_fpclassifyl.c + newlib/libm/ld/ldd/s_nanl.c + newlib/libm/ld/ldd/s_nearbyintl.c + newlib/libm/ld/ldd/s_truncl.c + newlib/libm/ld/math_ld.h + newlib/libm/ld/meson.build + newlib/libm/ld/polevll.c + newlib/libm/ld/s_asinhl.c + newlib/libm/ld/s_atanl.c + newlib/libm/ld/s_cbrtl.c + newlib/libm/ld/s_ceill.c + newlib/libm/ld/s_copysignl.c + newlib/libm/ld/s_cosl.c + newlib/libm/ld/s_erfl.c + newlib/libm/ld/s_exp2l.c + newlib/libm/ld/s_expm1l.c + newlib/libm/ld/s_fabsl.c + newlib/libm/ld/s_fdiml.c + newlib/libm/ld/s_finitel.c + newlib/libm/ld/s_floorl.c + newlib/libm/ld/s_fmal.c + newlib/libm/ld/s_fmaxl.c + newlib/libm/ld/s_fminl.c + newlib/libm/ld/s_fpclassifyl.c + newlib/libm/ld/s_frexpl.c + newlib/libm/ld/s_getpayloadl.c + newlib/libm/ld/s_ilogbl.c + newlib/libm/ld/s_isnanl.c + newlib/libm/ld/s_issignalingl.c + newlib/libm/ld/s_llrintl.c + newlib/libm/ld/s_llroundl.c + newlib/libm/ld/s_log1pl.c + newlib/libm/ld/s_logbl.c + newlib/libm/ld/s_lrintl.c + newlib/libm/ld/s_lroundl.c + newlib/libm/ld/s_modfl.c + newlib/libm/ld/s_nanl.c + newlib/libm/ld/s_nextafterl.c + newlib/libm/ld/s_nexttoward.c + newlib/libm/ld/s_nexttowardf.c + newlib/libm/ld/s_remquol.c + newlib/libm/ld/s_rintl.c + newlib/libm/ld/s_roundl.c + newlib/libm/ld/s_scalbl.c + newlib/libm/ld/s_scalbln.c + newlib/libm/ld/s_scalbnl.c + newlib/libm/ld/s_significandl.c + newlib/libm/ld/s_sincosl.c + newlib/libm/ld/s_sinl.c + newlib/libm/ld/s_tanhl.c + newlib/libm/ld/s_tanl.c + newlib/libm/ld/s_truncl.c + newlib/libm/machine/CMakeLists.txt + newlib/libm/machine/aarch64/CMakeLists.txt + newlib/libm/machine/arm/CMakeLists.txt + newlib/libm/machine/arm/s_fabs.c + newlib/libm/machine/arm/sf_fabs.c + newlib/libm/machine/powerpc/CMakeLists.txt + newlib/libm/machine/powerpc/complex128.c + newlib/libm/machine/riscv/CMakeLists.txt + newlib/libm/machine/x86/CMakeLists.txt + newlib/libm/math/CMakeLists.txt + newlib/testsuite/newlib.time/meson.build + picocrt/CMakeLists.txt + picocrt/machine/arc/CMakeLists.txt + picocrt/machine/arc64/CMakeLists.txt + picocrt/machine/arm/CMakeLists.txt + picocrt/machine/powerpc/crt0.S + picocrt/machine/powerpc/powerpc_crt.h + picocrt/machine/sh/CMakeLists.txt + semihost/CMakeLists.txt + semihost/fake/fake_exit.c + semihost/fake/fake_io.c + semihost/fake/fake_kill.c + semihost/fake/fake_stub.c + semihost/fake/meson.build + semihost/getentropy.c + semihost/machine/arc/CMakeLists.txt + semihost/machine/arc64/CMakeLists.txt + semihost/machine/arm/CMakeLists.txt + semihost/machine/powerpc/opal.h + semihost/machine/powerpc/opal_call.S + semihost/machine/powerpc/opal_cec_power_down.c + semihost/machine/powerpc/opal_console_write.c + semihost/machine/sh/sh_io.c + test/CMakeLists.txt + test/lock-valid.c + test/long_double.c + test/test-efcvt.c + test/test-except.c + test/test-fopen.c + test/test-mktemp.c + test/test-strtod.c + zephyr/zephyr.cmake +Copyright: 2022 Keith Packard +License: BSD3-1 + +Files: cmake/TC-arm-none-eabi.ld + cmake/TC-microbit.ld + hello-world/hello-worldpp.cpp + newlib/libc/errno/errno.c + newlib/libc/iconv/ccs/iconv_data/meson.build + newlib/libc/include/machine/math.h + newlib/libc/include/ssp/meson.build + newlib/libc/include/sys/auxv.h + newlib/libc/machine/arm/machine/meson.build + newlib/libc/machine/csky/meson.build + newlib/libc/machine/riscv/machine/math.h + newlib/libc/machine/riscv/machine/meson.build + newlib/libc/machine/x86/machine/meson.build + newlib/libc/picolib/getauxval.c + newlib/libc/picolib/machine/aarch64/tls.c + newlib/libc/picolib/machine/arm/arm_tls.h + newlib/libc/posix/meson.build + newlib/libc/stdio/nano-svfprintf.c + newlib/libc/stdio/nano-svfscanf.c + newlib/libc/stdio64/meson.build + newlib/libc/tinystdio/asprintf.c + newlib/libc/tinystdio/compare_exchange.c + newlib/libc/tinystdio/ecvt.c + newlib/libc/tinystdio/ecvtf.c + newlib/libc/tinystdio/ecvtl.c + newlib/libc/tinystdio/exchange.c + newlib/libc/tinystdio/fcvt.c + newlib/libc/tinystdio/fcvtf.c + newlib/libc/tinystdio/fcvtl.c + newlib/libc/tinystdio/fflush.c + newlib/libc/tinystdio/filestrget.c + newlib/libc/tinystdio/filestrput.c + newlib/libc/tinystdio/filestrputalloc.c + newlib/libc/tinystdio/filewstrget.c + newlib/libc/tinystdio/gcvt.c + newlib/libc/tinystdio/gcvtf.c + newlib/libc/tinystdio/gcvtl.c + newlib/libc/tinystdio/perror.c + newlib/libc/tinystdio/setvbuf.c + newlib/libc/tinystdio/strtod_l.c + newlib/libc/tinystdio/strtof_l.c + newlib/libc/tinystdio/strtold_l.c + newlib/libc/tinystdio/vasprintf.c + newlib/libm/machine/arm/s_fma_arm.c + newlib/libm/machine/arm/sf_fma_arm.c + newlib/libm/machine/riscv/s_fma.c + newlib/libm/machine/riscv/s_sqrt.c + newlib/libm/machine/riscv/sf_fma.c + newlib/libm/machine/riscv/sf_sqrt.c + newlib/libm/math/s_lgamma.c + scripts/run-aarch64 + scripts/run-arc + scripts/run-i386 + scripts/run-m68k + scripts/run-mips + scripts/run-msp430 + scripts/run-nios2 + scripts/run-sh + scripts/run-sparc + scripts/run-x86 + scripts/run-x86_64 + semihost/fstat.c + semihost/isatty.c + semihost/mapstdio.c + semihost/sys_iserror.c + semihost/sys_system.c + semihost/sys_tickfreq.c + test/fenv.c + test/ffs.c + test/malloc.c + test/malloc_stress.c + test/math_errhandling.c + test/math_errhandling_tests.c + test/regex.c + test/semihost/meson.build + test/semihost/semihost-argv.c + test/semihost/semihost-clock.c + test/semihost/semihost-close.c + test/semihost/semihost-elapsed.c + test/semihost/semihost-errno.c + test/semihost/semihost-exit-extended-failure.c + test/semihost/semihost-exit-extended.c + test/semihost/semihost-exit-failure.c + test/semihost/semihost-exit.c + test/semihost/semihost-flen.c + test/semihost/semihost-get-cmdline.c + test/semihost/semihost-gettimeofday.c + test/semihost/semihost-heapinfo.c + test/semihost/semihost-iserror.c + test/semihost/semihost-istty.c + test/semihost/semihost-no-argv.c + test/semihost/semihost-open.c + test/semihost/semihost-read.c + test/semihost/semihost-readc.c + test/semihost/semihost-remove.c + test/semihost/semihost-rename.c + test/semihost/semihost-seek.c + test/semihost/semihost-system-failure.c + test/semihost/semihost-system.c + test/semihost/semihost-tickfreq.c + test/semihost/semihost-time.c + test/semihost/semihost-times.c + test/semihost/semihost-tmpnam.c + test/semihost/semihost-tmpname.c + test/semihost/semihost-write.c + test/semihost/semihost-write0.c + test/semihost/semihost-writec.c + test/setjmp.c + test/stack-smash.c + test/tls.c + test/try-ilp32-sub.c + test/try-ilp32.c + test/try-ilp32.h +Copyright: 2020 Keith Packard +License: BSD3-1 + +Files: doc/printf-sample/Makefile + doc/printf-sample/printf.c + dummyhost/exit.c + newlib/libc/machine/arm/machine/fenv-fp.h + newlib/libc/machine/m68k/CMakeLists.txt + newlib/libc/machine/m68k/machine/fenv-fp.h + newlib/libc/machine/m68k/machine/fenv.h + newlib/libc/tinystdio/dtox_engine.c + newlib/libc/tinystdio/ftox_engine.c + newlib/libc/tinystdio/getdelim.c + newlib/libc/tinystdio/ldtox_engine.c + newlib/libc/tinystdio/swprintf.c + newlib/libc/tinystdio/vswprintf.c + newlib/testsuite/newlib.time/asctime.c + picocrt/machine/m68k/crt0.c + picocrt/machine/mips/crt0.c + picocrt/machine/msp430/crt0.c + picocrt/machine/nios2/crt0.c + picocrt/machine/sparc/crt0.c + semihost/machine/arc/arc_close.c + semihost/machine/arc/arc_errno.c + semihost/machine/arc/arc_exit.c + semihost/machine/arc/arc_fstat.c + semihost/machine/arc/arc_lseek.c + semihost/machine/arc/arc_open.c + semihost/machine/arc/arc_read.c + semihost/machine/arc/arc_semihost.h + semihost/machine/arc/arc_stat.c + semihost/machine/arc/arc_unlink.c + semihost/machine/arc/arc_write.c + semihost/machine/m68k/m68k_close.c + semihost/machine/m68k/m68k_exit.c + semihost/machine/m68k/m68k_fstat.c + semihost/machine/m68k/m68k_lseek.c + semihost/machine/m68k/m68k_open.c + semihost/machine/m68k/m68k_read.c + semihost/machine/m68k/m68k_semihost.S + semihost/machine/m68k/m68k_semihost.h + semihost/machine/m68k/m68k_stat.c + semihost/machine/m68k/m68k_unlink.c + semihost/machine/m68k/m68k_write.c + semihost/machine/mips/mips-semihost.h + semihost/machine/mips/mips_iob.c + semihost/machine/msp430/msp430-iob.c + semihost/machine/msp430/msp430-semihost.h + semihost/machine/nios2/nios2_close.c + semihost/machine/nios2/nios2_exit.c + semihost/machine/nios2/nios2_fstat.c + semihost/machine/nios2/nios2_lseek.c + semihost/machine/nios2/nios2_open.c + semihost/machine/nios2/nios2_read.c + semihost/machine/nios2/nios2_semihost.c + semihost/machine/nios2/nios2_semihost.h + semihost/machine/nios2/nios2_stat.c + semihost/machine/nios2/nios2_unlink.c + semihost/machine/nios2/nios2_write.c + semihost/machine/sh/sh_semihost.h + semihost/machine/sparc/sparc-semihost.h + semihost/machine/sparc/sparc_iob.c + test/test-fma.c + test/test-fread-fwrite.c + test/test-gets.c + test/test-long-long.c + test/test-raise.c + test/test-ubsan.c +Copyright: 2023 Keith Packard +License: BSD3-1 + +Files: dummyhost/iob.c + dummyhost/meson.build + hello-world/Makefile + hello-world/hello-world.c + hello-world/printf.c + hello-world/run-aarch64 + hello-world/run-aarch64++ + hello-world/run-arm + hello-world/run-riscv + hello-world/run-riscv++ + hello-world/*.ld + meson_options.txt + newlib/libc/argz/meson.build + newlib/libc/ctype/meson.build + newlib/libc/errno/meson.build + newlib/libc/iconv/ccs/meson.build + newlib/libc/iconv/ces/meson.build + newlib/libc/iconv/lib/meson.build + newlib/libc/iconv/meson.build + newlib/libc/include/arpa/meson.build + newlib/libc/include/endian.h + newlib/libc/include/machine/meson.build + newlib/libc/include/meson.build + newlib/libc/include/newlib.h + newlib/libc/include/picotls.h + newlib/libc/include/sys/meson.build + newlib/libc/locale/meson.build + newlib/libc/machine/arm/meson.build + newlib/libc/machine/riscv/meson.build + newlib/libc/machine/x86/meson.build + newlib/libc/meson.build + newlib/libc/misc/meson.build + newlib/libc/picolib/dso_handle.c + newlib/libc/picolib/inittls.c + newlib/libc/picolib/machine/aarch64/interrupt.c + newlib/libc/picolib/machine/arm/interrupt.c + newlib/libc/picolib/machine/riscv/tls.c + newlib/libc/picolib/machine/sparc/interrupt.S + newlib/libc/picolib/machine/sparc/tls.c + newlib/libc/picolib/meson.build + newlib/libc/picolib/picosbrk.c + newlib/libc/reent/meson.build + newlib/libc/search/meson.build + newlib/libc/signal/meson.build + newlib/libc/ssp/meson.build + newlib/libc/stdio/meson.build + newlib/libc/stdio/svfiprintf.c + newlib/libc/stdio/svfiscanf.c + newlib/libc/stdio/svfiwprintf.c + newlib/libc/stdio/svfiwscanf.c + newlib/libc/stdio/svfprintf.c + newlib/libc/stdio/svfscanf.c + newlib/libc/stdio/svfwprintf.c + newlib/libc/stdio/svfwscanf.c + newlib/libc/stdio/sys/meson.build + newlib/libc/stdio/vfiprintf.c + newlib/libc/stdio/vfiscanf.c + newlib/libc/stdio/vfiwprintf.c + newlib/libc/stdio/vfiwscanf.c + newlib/libc/stdlib/malloc-calloc.c + newlib/libc/stdlib/malloc-cfree.c + newlib/libc/stdlib/malloc-free.c + newlib/libc/stdlib/malloc-mallinfo.c + newlib/libc/stdlib/malloc-malloc.c + newlib/libc/stdlib/malloc-malloc_stats.c + newlib/libc/stdlib/malloc-malloc_usable_size.c + newlib/libc/stdlib/malloc-mallopt.c + newlib/libc/stdlib/malloc-memalign.c + newlib/libc/stdlib/malloc-posix_memalign.c + newlib/libc/stdlib/malloc-pvalloc.c + newlib/libc/stdlib/malloc-realloc.c + newlib/libc/stdlib/malloc-valloc.c + newlib/libc/stdlib/meson.build + newlib/libc/string/meson.build + newlib/libc/time/meson.build + newlib/libc/tinystdio/bufio.c + newlib/libc/tinystdio/fdopen.c + newlib/libc/tinystdio/fileno.c + newlib/libc/tinystdio/fopen.c + newlib/libc/tinystdio/freopen.c + newlib/libc/tinystdio/fseek.c + newlib/libc/tinystdio/fseeko.c + newlib/libc/tinystdio/ftell.c + newlib/libc/tinystdio/ftello.c + newlib/libc/tinystdio/fwide.c + newlib/libc/tinystdio/meson.build + newlib/libc/tinystdio/posixiob_stderr.c + newlib/libc/tinystdio/posixiob_stdin.c + newlib/libc/tinystdio/posixiob_stdout.c + newlib/libc/tinystdio/setbuf.c + newlib/libc/tinystdio/setbuffer.c + newlib/libc/tinystdio/setlinebuf.c + newlib/libc/xdr/meson.build + newlib/libm/common/meson.build + newlib/libm/common/s_issignaling.c + newlib/libm/common/sf_issignaling.c + newlib/libm/common/signgam.c + newlib/libm/common/sl_issignaling.c + newlib/libm/complex/meson.build + newlib/libm/fenv/meson.build + newlib/libm/machine/arm/meson.build + newlib/libm/machine/riscv/meson.build + newlib/libm/machine/x86/meson.build + newlib/libm/math/meson.build + newlib/libm/meson.build + newlib/libm/test/copysign_vec.c + newlib/libm/test/copysignf_vec.c + newlib/libm/test/issignaling_vec.c + newlib/libm/test/meson.build + newlib/libm/test/modf_vec.c + newlib/libm/test/modff_vec.c + newlib/libm/test/pow_vec.c + newlib/libm/test/powf_vec.c + newlib/meson.build + newlib/testsuite/meson.build + newlib/testsuite/newlib.iconv/meson.build + newlib/testsuite/newlib.locale/meson.build + newlib/testsuite/newlib.search/meson.build + newlib/testsuite/newlib.stdio/meson.build + newlib/testsuite/newlib.stdlib/meson.build + newlib/testsuite/newlib.string/meson.build + newlib/testsuite/newlib.wctype/meson.build + newlib/testsuite/stdio-bits.c + picocrt/crt0.h + picocrt/machine/aarch64/crt0.c + picocrt/machine/arc/crt0.c + picocrt/machine/arm/crt0.c + picocrt/machine/sh/crt0.c + picocrt/meson.build + picocrt/shared/crt0.c + scripts/do-aarch64-configure + scripts/do-aarch64-zephyr-configure + scripts/do-aarch64-zephyr-elf-configure + scripts/do-arc-configure + scripts/do-arc64-configure + scripts/do-arm-configure + scripts/do-avr-configure + scripts/do-clang-aarch64-configure + scripts/do-clang-arm-configure + scripts/do-clang-msp430-configure + scripts/do-clang-riscv-configure + scripts/do-clang-rv32imafdc-configure + scripts/do-clang-thumb-configure + scripts/do-clang-thumbv6m-configure + scripts/do-clang-thumbv7-a-configure + scripts/do-clang-thumbv7e+dp-configure + scripts/do-clang-thumbv7e+fp-configure + scripts/do-clang-thumbv7m-configure + scripts/do-configure + scripts/do-cortex-a9-configure + scripts/do-esp32-configure + scripts/do-freedom-tools-configure + scripts/do-i386-configure + scripts/do-lx106-configure + scripts/do-mips-configure + scripts/do-mips-zephyr-configure + scripts/do-mips64-configure + scripts/do-mipsel-configure + scripts/do-msp430-configure + scripts/do-msp430-unknown-elf-configure + scripts/do-native-configure + scripts/do-native-m32-configure + scripts/do-nios2-configure + scripts/do-riscv-configure + scripts/do-rv32imac-configure + scripts/do-sh-unknown-elf-configure + scripts/do-sparc-zephyr-configure + scripts/do-sparc64-configure + scripts/do-thumbv8_1m-configure + scripts/do-thumbv8m_main_fp-configure + scripts/do-x86-configure + scripts/do-x86_64-configure + scripts/do-x86_64-zephyr-configure + scripts/do-xtensa-espressif_esp32-configure + scripts/do-xtensa-espressif_esp32s2-configure + scripts/do-xtensa-intel_apl_adsp-configure + scripts/do-xtensa-intel_s1000-configure + scripts/do-xtensa-nxp_imx8m_adsp-configure + scripts/do-xtensa-nxp_imx_adsp-configure + scripts/do-xtensa-sample_controller-configure + scripts/do-zephyr-aarch64-configure + scripts/do-zephyr-arm-configure + scripts/do-zephyr-riscv-configure + scripts/run-arm + scripts/run-power9 + scripts/run-riscv + semihost/close.c + semihost/exit.c + semihost/iob.c + semihost/kill.c + semihost/lseek.c + semihost/lseek64.c + semihost/machine/aarch64/semihost-aarch64.S + semihost/machine/arm/semihost-arm.S + semihost/machine/riscv/semihost-riscv.S + semihost/meson.build + semihost/open.c + semihost/read.c + semihost/semihost-private.h + semihost/semihost.h + semihost/sys_clock.c + semihost/sys_close.c + semihost/sys_elapsed.c + semihost/sys_errno.c + semihost/sys_exit.c + semihost/sys_exit_extended.c + semihost/sys_feature.c + semihost/sys_flen.c + semihost/sys_get_cmdline.c + semihost/sys_getc.c + semihost/sys_heapinfo.c + semihost/sys_istty.c + semihost/sys_open.c + semihost/sys_putc.c + semihost/sys_read.c + semihost/sys_remove.c + semihost/sys_rename.c + semihost/sys_seek.c + semihost/sys_time.c + semihost/sys_tmpnam.c + semihost/sys_write.c + semihost/sys_write0.c + semihost/sysconf.c + semihost/times.c + semihost/unlink.c + semihost/write.c + test/libc-testsuite/meson.build + test/meson.build + test/posix-io.c + test/printf_scanf.c + test/rand.c + test/ungetc.c +Copyright: 2019 Keith Packard +License: BSD3-1 + +Files: meson.build +Copyright: 2019-2021 Keith Packard +License: BSD3-1 + +Files: newlib/empty.c + newlib/libc/machine/arm/memmove.c + newlib/libc/machine/xtensa/machine/meson.build + newlib/libc/picolib/machine/aarch64/meson.build + newlib/libc/picolib/machine/arc/meson.build + newlib/libc/picolib/machine/arc64/meson.build + newlib/libc/picolib/machine/arm/meson.build + newlib/libc/picolib/machine/mips/meson.build + newlib/libc/picolib/machine/msp430/meson.build + newlib/libc/picolib/machine/riscv/meson.build + newlib/libc/picolib/machine/sparc/meson.build + newlib/libc/picolib/machine/xtensa/meson.build + newlib/libc/stdlib/pico-atexit.c + newlib/libc/stdlib/pico-cxa-atexit.c + newlib/libc/stdlib/pico-exit.c + newlib/libc/stdlib/pico-onexit.c + newlib/libc/stdlib/pico-onexit.h + newlib/libc/tinystdio/atold_engine.c + newlib/libc/tinystdio/ldtoa_engine.c + newlib/libc/tinystdio/matchcaseprefix.c + newlib/libc/tinystdio/rewind.c + newlib/libc/tinystdio/strfromd.c + newlib/libc/tinystdio/strfromf.c + newlib/libc/tinystdio/strfroml.c + newlib/libm/common/exp10l.c + newlib/libm/common/math_inexact.c + newlib/libm/common/math_inexactf.c + newlib/libm/common/math_inexactl.c + newlib/libm/common/s_getpayload.c + newlib/libm/common/sf_getpayload.c + newlib/libm/ld/ld128/s_getpayloadl.c + newlib/libm/ld/ld80/s_getpayloadl.c + newlib/libm/machine/powerpc/meson.build + newlib/libm/test/scalb_vec.c + newlib/libm/test/scalbn_vec.c + picocrt/machine/aarch64/meson.build + picocrt/machine/arc/meson.build + picocrt/machine/arc64/meson.build + picocrt/machine/arm/meson.build + picocrt/machine/m68k/meson.build + picocrt/machine/mips/meson.build + picocrt/machine/msp430/meson.build + picocrt/machine/nios2/meson.build + picocrt/machine/powerpc/meson.build + picocrt/machine/riscv/meson.build + picocrt/machine/sh/meson.build + picocrt/machine/sparc/meson.build + picocrt/machine/x86/meson.build + scripts/do-power9-configure + scripts/do-power9-fp128-configure + scripts/do-powerpc64-configure + scripts/do-powerpc64le-configure + semihost/gettimeofday.c + semihost/machine/aarch64/meson.build + semihost/machine/arc/arc_stub.c + semihost/machine/arc/meson.build + semihost/machine/arc64/meson.build + semihost/machine/arm/meson.build + semihost/machine/m68k/m68k_stub.c + semihost/machine/m68k/meson.build + semihost/machine/mips/meson.build + semihost/machine/mips/mips_exit.c + semihost/machine/mips/mips_stub.c + semihost/machine/msp430/meson.build + semihost/machine/msp430/msp430-exit.c + semihost/machine/msp430/msp430-stub.c + semihost/machine/nios2/meson.build + semihost/machine/nios2/nios2_stub.c + semihost/machine/powerpc/meson.build + semihost/machine/powerpc/powerpc_exit.c + semihost/machine/powerpc/powerpc_io.c + semihost/machine/powerpc/powerpc_kill.c + semihost/machine/powerpc/powerpc_stub.c + semihost/machine/riscv/meson.build + semihost/machine/sh/meson.build + semihost/machine/sh/sh_exit.c + semihost/machine/sh/sh_stub.c + semihost/machine/sparc/meson.build + semihost/machine/sparc/sparc_exit.c + semihost/machine/sparc/sparc_stub.c + semihost/machine/x86/bios.S + semihost/machine/x86/e9_exit.c + semihost/machine/x86/e9_io.c + semihost/machine/x86/e9_kill.c + semihost/machine/x86/e9_stub.c + semihost/machine/x86/meson.build + test/atexit.c + test/constructor-skip.c + test/constructor.c + test/hosted-exit.c + test/libc-testsuite/testcase.h + test/math-funcs.c + test/on_exit.c + test/rounding-mode-sub.c + test/rounding-mode.c + test/rounding-mode.h + test/test-memset.c + test/test-put.c + test/test-strchr.c + test/timegm.c + test/timegm.h +Copyright: 2021 Keith Packard +License: BSD3-1 + +Files: newlib/libc/include/stdnoreturn.h + newlib/libc/include/sys/_initfini.h + newlib/libc/machine/m68k/machine/meson.build + newlib/libc/machine/sh/CMakeLists.txt + newlib/libc/machine/sh/machine/CMakeLists.txt + newlib/libc/machine/sh/machine/meson.build + newlib/libc/picolib/machine/m68k/interrupt.c + newlib/libc/picolib/machine/m68k/meson.build + newlib/libc/stdio/flockfile.c + newlib/libc/stdio/funlockfile.c + newlib/libc/tinystdio/atomic_load.c + newlib/libc/tinystdio/flockfile.c + newlib/libc/tinystdio/ftrylockfile.c + newlib/libc/tinystdio/funlockfile.c + newlib/libc/tinystdio/funopen.c + newlib/libm/fenv/fenv.c + scripts/validate-cdefs + test/test-cplusplus.cpp + test/test-ctype.c + test/test-funopen.c +Copyright: 2024 Keith Packard +License: BSD3-1 + +Files: newlib/libc/machine/aarch64/meson.build + newlib/libm/machine/aarch64/meson.build +Copyright: 2019 Keith Packard, + 2020 Anthony Anderson +License: BSD3-1 + +Files: newlib/libc/machine/arm/machine/math.h +Copyright: 2020 Keith Packard + 2017 embedded brains GmbH. + 2011, 2012 ARM Ltd. +License: BSD3-1 + +Files: newlib/libc/machine/m68k/meson.build + scripts/do-m68k-configure + scripts/do-m68k-unknown-elf-configure +Copyright: 2020 Thomas Daede +License: BSD3-1 + +Files: newlib/libc/machine/microblaze/CMakeLists.txt + newlib/libc/machine/microblaze/meson.build + scripts/do-microblazeel-configure +Copyright: 2023 Advanced Micro Devices, Inc. (AMD) + 2023 Alp Sayin +License: BSD3-1 + +Files: newlib/libc/machine/powerpc/meson.build +Copyright: 2019 Ash Logan, Keith Packard +License: BSD3-1 + +Files: newlib/libc/machine/sh/meson.build +Copyright: 2023 Adrian Siekierka +License: BSD3-1 + +Files: newlib/libc/machine/xtensa/meson.build +Copyright: 2019 Jonathan McDowell +License: BSD3-1 + +Files: newlib/libc/picolib/machine/arm/read_tp.S +Copyright: 2020 Keith Packard + 2024 Stephen Street +License: BSD3-1 + +Files: newlib/libc/picolib/machine/arm/tls.c +Copyright: 2019 Keith Packard + 2024 Stephen Street +License: BSD3-1 + +Files: newlib/libc/stdlib/local_s.h + newlib/libc/stdlib/set_constraint_handler_s.c + newlib/libc/string/memcpy_s.c + newlib/libc/string/memmove_s.c + newlib/libc/string/memset_s.c + newlib/libc/string/strcat_s.c + newlib/libc/string/strcpy_s.c + newlib/libc/string/strerror_s.c + newlib/libc/string/strerrorlen_s.c + newlib/libc/string/string_private.h + newlib/libc/string/strncat_s.c + newlib/libc/string/strncpy_s.c + newlib/libc/string/strnlen_s.c + newlib/libc/tinystdio/sprintf_s.c + test/test-fgetc.c + test/test-fgets-eof.c + test/test-memcpy_s.c + test/test-memmove_s.c + test/test-memset_s.c + test/test-sprintf_s.c + test/test-strcat_s.c + test/test-strcpy_s.c + test/test-strerror_s.c + test/test-strerrorlen_s.c + test/test-strncat_s.c + test/test-strncpy_s.c + test/test-strnlen_s.c +Copyright: 2024, Synopsys Inc. +License: BSD3-1 + +Files: newlib/libm/machine/riscv/s_copysign.c + newlib/libm/machine/riscv/s_fabs.c + newlib/libm/machine/riscv/s_finite.c + newlib/libm/machine/riscv/s_fmax.c + newlib/libm/machine/riscv/s_fmin.c + newlib/libm/machine/riscv/s_fpclassify.c + newlib/libm/machine/riscv/s_isinf.c + newlib/libm/machine/riscv/s_isnan.c + newlib/libm/machine/riscv/s_llrint.c + newlib/libm/machine/riscv/s_llround.c + newlib/libm/machine/riscv/s_lrint.c + newlib/libm/machine/riscv/s_lround.c + newlib/libm/machine/riscv/sf_copysign.c + newlib/libm/machine/riscv/sf_fabs.c + newlib/libm/machine/riscv/sf_finite.c + newlib/libm/machine/riscv/sf_fmax.c + newlib/libm/machine/riscv/sf_fmin.c + newlib/libm/machine/riscv/sf_fpclassify.c + newlib/libm/machine/riscv/sf_isinf.c + newlib/libm/machine/riscv/sf_isnan.c + newlib/libm/machine/riscv/sf_llrint.c + newlib/libm/machine/riscv/sf_llround.c + newlib/libm/machine/riscv/sf_lrint.c + newlib/libm/machine/riscv/sf_lround.c +Copyright: 2020 Kito Cheng +License: BSD3-1 + +Files: picocrt/machine/powerpc/cstart.c + picocrt/machine/riscv/crt0.c +Copyright: 2020 Sebastian Meyer +License: BSD3-1 + +Files: picocrt/machine/x86/crt0-32.S + picocrt/machine/x86/crt0-64.S +Copyright: 2021 Mike Haertel and Keith Packard +License: BSD3-1 + +Files: scripts/do-freedom-tools-package +Copyright: 2020 SiFive Inc. +License: BSD3-1 + +Files: test/test-sprintf-percent-n.c + test/test-vfscanf-percent-a.c + test/test-wchar.c +Copyright: 2024, Synopsys Inc. + 2024, Solid Sands B.V. +License: BSD3-1 + +Files: test/test-tmpnam.c +Copyright: 2024 Mostafa Salmaan +License: BSD3-1 + +Files: test/test-ungetc-ftell.c +Copyright: 2024 Hana Ashour +License: BSD3-1 + +Files: test/time-tests.c +Copyright: 2021 R. Diez +License: BSD3-1 + +Files: newlib/libc/ctype/ctype_.c + newlib/libc/ctype/isalnum.c + newlib/libc/ctype/isalpha.c + newlib/libc/ctype/isascii.c + newlib/libc/ctype/iscntrl.c + newlib/libc/ctype/isdigit.c + newlib/libc/ctype/isgraph.c + newlib/libc/ctype/islower.c + newlib/libc/ctype/isprint.c + newlib/libc/ctype/ispunct.c + newlib/libc/ctype/isspace.c + newlib/libc/ctype/isupper.c + newlib/libc/ctype/isxdigit.c + newlib/libc/ctype/toascii.c + newlib/libc/ctype/tolower.c + newlib/libc/ctype/toupper.c + newlib/libc/include/pwd.h +Copyright: 1989 The Regents of the University of California. +License: BSD3-2 + +Files: newlib/libc/include/dirent.h + newlib/libc/string/wcsncmp.c +Copyright: 1989, 1993 The Regents of the University of California. +License: BSD3-2 + +Files: newlib/libc/include/ndbm.h + newlib/libc/include/search.h + newlib/libc/search/hash_func.c + newlib/libc/search/ndbm.c + newlib/libc/stdlib/getsubopt.c + newlib/libc/string/wcscmp.c +Copyright: 1990, 1993 The Regents of the University of California. +License: BSD3-2 + +Files: newlib/libc/include/sys/_select.h + newlib/libc/include/sys/_timespec.h + newlib/libc/include/sys/_types.h + newlib/libc/include/sys/_wait.h + newlib/libc/include/sys/config.h + newlib/libc/include/sys/dirent.h + newlib/libc/include/sys/errno.h + newlib/libc/include/sys/fcntl.h + newlib/libc/include/sys/file.h + newlib/libc/include/sys/param.h + newlib/libc/include/sys/resource.h + newlib/libc/include/sys/select.h + newlib/libc/include/sys/stat.h + newlib/libc/include/sys/time.h + newlib/libc/include/sys/timeb.h + newlib/libc/include/sys/times.h + newlib/libc/include/sys/types.h + newlib/libc/include/sys/unistd.h + newlib/libc/include/sys/utime.h + newlib/libc/include/sys/wait.h +Copyright: 1982, 1986, 1993 The Regents of the University of California. +License: BSD3-2 + +Files: newlib/libc/include/sys/cdefs.h + newlib/libc/include/sys/queue.h +Copyright: 1991, 1993 The Regents of the University of California. +License: BSD3-2 + +Files: newlib/libc/include/sys/syslimits.h + newlib/libc/stdlib/atoll.c +Copyright: 1988, 1993 The Regents of the University of California. +License: BSD3-2 + +Files: newlib/libc/include/unctrl.h + newlib/libc/misc/ffs.c + newlib/libc/misc/misc.tex + newlib/libc/misc/unctrl.c +Copyright: 1981, 1993 The Regents of the University of California. +License: BSD3-2 + +Files: newlib/libc/posix/cclass.h + newlib/libc/posix/cname.h + newlib/libc/posix/regex2.h + newlib/libc/posix/utils.h +Copyright: 1992, 1993, 1994 Henry Spencer. + 1992, 1993, 1994 The Regents of the University of California. +License: BSD3-2 + +Files: newlib/libc/search/bsearch.c + newlib/libc/search/extern.h + newlib/libc/search/hcreate.3 + newlib/libc/search/tdelete.c + newlib/libc/search/tdestroy.c + newlib/libc/search/tfind.c + newlib/libc/search/tsearch.c + newlib/libc/search/twalk.c +Copyright: 1991, 1993, 1994 The Regents of the University of California. +License: BSD3-2 + +Files: newlib/libc/search/db_local.h + newlib/libc/search/hash.c + newlib/libc/search/hash.h + newlib/libc/search/hash_bigkey.c + newlib/libc/search/hash_buf.c + newlib/libc/search/hash_log2.c + newlib/libc/search/hash_page.c + newlib/libc/search/page.h +Copyright: 1990, 1993, 1994 The Regents of the University of California. +License: BSD3-2 + +Files: newlib/libc/search/qsort.c +Copyright: 1992, 1993 The Regents of the University of California. +License: BSD3-2 + +Files: newlib/libc/stdio/nano-vfprintf.c + newlib/libc/stdio/nano-vfprintf_float.c + newlib/libc/stdio/nano-vfprintf_local.h + newlib/libc/stdio/vfprintf.c + newlib/libc/stdlib/strtol.c + newlib/libc/stdlib/strtoll.c + newlib/libc/stdlib/wcstol.c + newlib/libc/stdlib/wcstoll.c + newlib/libc/stdlib/wcstoll_r.c + newlib/libc/stdlib/wcstoull_r.c +Copyright: 1990 The Regents of the University of California. +License: BSD3-2 + +Files: newlib/libc/stdlib/div.c + newlib/libc/stdlib/ldiv.c + newlib/libc/stdlib/strtoul.c + newlib/libc/stdlib/strtoull.c + newlib/libc/stdlib/wcstoul.c + newlib/libc/stdlib/wcstoull.c +Copyright: 1990 Regents of the University of California. +License: BSD3-2 + +Files: newlib/libc/stdlib/getsubopt.3 +Copyright: 1990, 1991, 1993 The Regents of the University of California. +License: BSD3-2 + +Files: newlib/libc/string/strtok_r.c + newlib/libc/string/strtok_r.h + newlib/libc/string/wcstok.c +Copyright: 1988 Regents of the University of California. +License: BSD3-2 + +Files: newlib/libc/ctype/iswalnum.c + newlib/libc/ctype/iswalpha.c + newlib/libc/ctype/iswblank.c + newlib/libc/ctype/iswcntrl.c + newlib/libc/ctype/iswctype.c + newlib/libc/ctype/iswdigit.c + newlib/libc/ctype/iswgraph.c + newlib/libc/ctype/iswlower.c + newlib/libc/ctype/iswprint.c + newlib/libc/ctype/iswpunct.c + newlib/libc/ctype/iswspace.c + newlib/libc/ctype/iswupper.c + newlib/libc/ctype/iswxdigit.c + newlib/libc/ctype/jp2uc.c + newlib/libc/ctype/jp2uc.h + newlib/libc/ctype/local.h + newlib/libc/ctype/towctrans.c + newlib/libc/ctype/towlower.c + newlib/libc/ctype/towupper.c + newlib/libc/ctype/wctrans.c + newlib/libc/ctype/wctype.c +Copyright: 2002 Red Hat Incorporated. +License: BSD3-3 + +Files: newlib/libc/machine/hppa/setjmp.S +Copyright: 1995, 2002 Red Hat Incorporated. +License: BSD3-3 + +Files: newlib/libc/machine/m32c/setjmp.S +Copyright: 2005 Red Hat Incorporated. +License: BSD3-3 + +Files: newlib/libc/machine/rl78/setjmp.S +Copyright: 2011 Red Hat Incorporated. +License: BSD3-3 + +Files: newlib/libc/stdlib/environ.c +Copyright: 1995, 1996, 2002 Red Hat Incorporated. +License: BSD3-3 + +Files: newlib/libc/include/_syslist.h + newlib/libc/include/ar.h + newlib/libc/include/assert.h + newlib/libc/include/ctype.h + newlib/libc/include/errno.h + newlib/libc/include/fastmath.h + newlib/libc/include/fcntl.h + newlib/libc/include/ieeefp.h + newlib/libc/include/locale.h + newlib/libc/include/malloc.h + newlib/libc/include/math.h + newlib/libc/include/paths.h + newlib/libc/include/regdef.h + newlib/libc/include/setjmp.h + newlib/libc/include/signal.h + newlib/libc/include/stdlib.h + newlib/libc/include/string.h + newlib/libc/include/termios.h + newlib/libc/include/time.h + newlib/libc/include/unistd.h + newlib/libc/include/utime.h + newlib/libc/include/utmp.h +Copyright: 1991, 1993 The Regents of the University of California. +License: BSD3-4 + +Files: newlib/libc/include/grp.h +Copyright: 1989, 1993 The Regents of the University of California. +License: BSD3-4 + +Files: newlib/libc/include/envlock.h + newlib/libc/include/fnmatch.h +Copyright: 1992, 1993 The Regents of the University of California. +License: BSD3-5 + +Files: newlib/libc/include/glob.h +Copyright: 1989, 1993 The Regents of the University of California. +License: BSD3-5 + +Files: newlib/libc/include/regex.h +Copyright: 1992 Henry Spencer. + 1992, 1993 The Regents of the University of California. +License: BSD3-5 + +Files: newlib/libc/include/sys/timespec.h +Copyright: 1982, 1986, 1993 The Regents of the University of California. +License: BSD3-5 + +Files: newlib/libc/locale/duplocale.c + newlib/libc/locale/freelocale.c + newlib/libc/locale/locale.c + newlib/libc/locale/locale.tex + newlib/libc/locale/localeconv.c + newlib/libc/locale/newlocale.c + newlib/libc/locale/uselocale.c +Copyright: 1996 - 2002 FreeBSD Project + 1991, 1993 The Regents of the University of California. +License: BSD3-5 + +Files: newlib/libc/misc/__dprintf.c + newlib/libc/stdio/vfwprintf.c +Copyright: 1990 The Regents of the University of California. +License: BSD3-5 + +Files: newlib/libc/posix/engine.c + newlib/libc/posix/regcomp.c + newlib/libc/posix/regerror.c + newlib/libc/posix/regexec.c + newlib/libc/posix/regfree.c +Copyright: 1992, 1993, 1994 Henry Spencer. + 1992, 1993, 1994 The Regents of the University of California. +License: BSD3-5 + +Files: newlib/libc/posix/fnmatch.c +Copyright: 1989, 1993, 1994 The Regents of the University of California. +License: BSD3-5 + +Files: newlib/libc/posix/rune.h + newlib/libc/posix/runetype.h +Copyright: 1993 The Regents of the University of California. +License: BSD3-5 + +Files: newlib/libc/posix/sysexits.h +Copyright: 1987, 1993 The Regents of the University of California. +License: BSD3-5 + +Files: newlib/libc/string/strcasestr.c +Copyright: 1990, 1993 The Regents of the University of California. +License: BSD3-5 + +Files: newlib/libc/include/rpc/types.h + newlib/libc/include/rpc/xdr.h + newlib/libc/xdr/xdr.c + newlib/libc/xdr/xdr_array.c + newlib/libc/xdr/xdr_float.c + newlib/libc/xdr/xdr_float_vax.c + newlib/libc/xdr/xdr_mem.c + newlib/libc/xdr/xdr_rec.c + newlib/libc/xdr/xdr_reference.c + newlib/libc/xdr/xdr_sizeof.c + newlib/libc/xdr/xdr_stdio.c +Copyright: 2009, Sun Microsystems, Inc. +License: BSD3-6 + +Files: newlib/libc/include/sys/_sigset.h +Copyright: 1982, 1986, 1989, 1991, 1993 The Regents of the University of California. +License: BSD3-7 + +Files: newlib/libc/machine/aarch64/machine/_types.h +Copyright: 2012 ARM Ltd +License: BSD3-8 + +Files: newlib/libc/machine/aarch64/setjmp.S + newlib/libm/machine/aarch64/s_ceil.c + newlib/libm/machine/aarch64/s_floor.c + newlib/libm/machine/aarch64/s_fma.c + newlib/libm/machine/aarch64/s_fmax.c + newlib/libm/machine/aarch64/s_fmin.c + newlib/libm/machine/aarch64/s_llrint.c + newlib/libm/machine/aarch64/s_llround.c + newlib/libm/machine/aarch64/s_lrint.c + newlib/libm/machine/aarch64/s_lround.c + newlib/libm/machine/aarch64/s_nearbyint.c + newlib/libm/machine/aarch64/s_rint.c + newlib/libm/machine/aarch64/s_round.c + newlib/libm/machine/aarch64/s_trunc.c + newlib/libm/machine/aarch64/sf_ceil.c + newlib/libm/machine/aarch64/sf_floor.c + newlib/libm/machine/aarch64/sf_fma.c + newlib/libm/machine/aarch64/sf_fmax.c + newlib/libm/machine/aarch64/sf_fmin.c + newlib/libm/machine/aarch64/sf_llrint.c + newlib/libm/machine/aarch64/sf_llround.c + newlib/libm/machine/aarch64/sf_lrint.c + newlib/libm/machine/aarch64/sf_lround.c + newlib/libm/machine/aarch64/sf_nearbyint.c + newlib/libm/machine/aarch64/sf_rint.c + newlib/libm/machine/aarch64/sf_round.c + newlib/libm/machine/aarch64/sf_trunc.c + newlib/libm/machine/arm/s_ceil.c + newlib/libm/machine/arm/s_floor.c + newlib/libm/machine/arm/s_nearbyint.c + newlib/libm/machine/arm/s_rint.c + newlib/libm/machine/arm/s_round.c + newlib/libm/machine/arm/s_trunc.c + newlib/libm/machine/arm/sf_ceil.c + newlib/libm/machine/arm/sf_floor.c + newlib/libm/machine/arm/sf_nearbyint.c + newlib/libm/machine/arm/sf_rint.c + newlib/libm/machine/arm/sf_round.c + newlib/libm/machine/arm/sf_trunc.c +Copyright: 2011, 2012 ARM Ltd +License: BSD3-8 + +Files: newlib/libc/machine/arm/aeabi_memcpy-armv7a.S + newlib/libc/machine/arm/machine/acle-compat.h + newlib/libc/machine/arm/strcmp-armv6m.S +Copyright: 2014 ARM Ltd +License: BSD3-8 + +Files: newlib/libc/machine/arm/aeabi_memset.c + newlib/libc/machine/arm/bzero.c + newlib/libc/machine/arm/machine/_endian.h + newlib/libc/machine/arm/memset-arm.S + newlib/libc/machine/arm/memset-thumb.S + newlib/libc/machine/arm/memset-thumb2.S + newlib/libc/machine/arm/memset.S + newlib/libc/machine/arm/memset.c + newlib/libm/machine/aarch64/s_fabs.c + newlib/libm/machine/aarch64/s_sqrt.c + newlib/libm/machine/aarch64/sf_fabs.c + newlib/libm/machine/aarch64/sf_sqrt.c +Copyright: 2015 ARM Ltd +License: BSD3-8 + +Files: newlib/libc/machine/arm/arm_asm.h +Copyright: 2009 ARM Ltd +License: BSD3-8 + +Files: newlib/libc/machine/arm/memcpy-armv7m.S +Copyright: 2013 ARM Ltd +License: BSD3-8 + +Files: newlib/libc/machine/arm/memcpy.S +Copyright: 2013-2015 ARM Ltd +License: BSD3-8 + +Files: newlib/libc/machine/arm/strcmp-arm-tiny.S + newlib/libc/machine/arm/strcmp-armv4.S + newlib/libc/machine/arm/strcmp-armv4t.S + newlib/libc/machine/arm/strcmp-armv6.S + newlib/libc/machine/arm/strcmp-armv7.S + newlib/libc/machine/arm/strcmp-armv7m.S + newlib/libc/machine/arm/strcmp.S + newlib/libc/stdio/nano-vfprintf_i.c + newlib/libc/stdio/nano-vfscanf_i.c +Copyright: 2012-2014 ARM Ltd +License: BSD3-8 + +Files: newlib/libc/machine/arm/strcpy.S +Copyright: 2008 ARM Ltd +License: BSD3-8 + +Files: newlib/libc/machine/arm/strlen.c +Copyright: 2008-2015 ARM Ltd +License: BSD3-8 + +Files: newlib/libc/stdlib/nano-calloc.c + newlib/libc/stdlib/nano-free.c + newlib/libc/stdlib/nano-getpagesize.c + newlib/libc/stdlib/nano-mallinfo.c + newlib/libc/stdlib/nano-malloc-stats.c + newlib/libc/stdlib/nano-malloc-usable-size.c + newlib/libc/stdlib/nano-malloc.c + newlib/libc/stdlib/nano-malloc.h + newlib/libc/stdlib/nano-mallopt.c + newlib/libc/stdlib/nano-memalign.c + newlib/libc/stdlib/nano-posix-memalign.c + newlib/libc/stdlib/nano-pvalloc.c + newlib/libc/stdlib/nano-realloc.c + newlib/libc/stdlib/nano-valloc.c +Copyright: 2012, 2013 ARM Ltd +License: BSD3-8 + +Files: newlib/testsuite/newlib.string/memcpy-1.c + newlib/testsuite/newlib.string/strcmp-1.c +Copyright: 2011 ARM Ltd +License: BSD3-8 + +Files: newlib/libc/machine/aarch64/memchr-stub.c + newlib/libc/machine/aarch64/memcmp-stub.c + newlib/libc/machine/aarch64/memmove-stub.c + newlib/libc/machine/aarch64/strlen-stub.c + newlib/libc/machine/aarch64/strncmp-stub.c + newlib/libc/machine/aarch64/strnlen-stub.c + newlib/libc/machine/aarch64/strnlen.S +Copyright: 2013, Linaro Limited +License: BSD3-9 + +Files: newlib/libc/machine/aarch64/memcpy-stub.c + newlib/libc/machine/aarch64/memset-stub.c + newlib/libc/machine/aarch64/strcmp-stub.c +Copyright: 2012-2013, Linaro Limited +License: BSD3-9 + +Files: newlib/libc/machine/aarch64/strlen.S +Copyright: 2013-2015, Linaro Limited +License: BSD3-9 + +Files: newlib/libc/machine/aarch64/strncmp.S +Copyright: 2013, 2018, Linaro Limited +License: BSD3-9 + +Files: newlib/libc/machine/arm/memchr.c + newlib/libc/machine/arm/memcpy.c + newlib/libc/machine/arm/strlen-thumb1-Os.S + newlib/libc/machine/arm/strlen-thumb2-Os.S + newlib/libc/machine/arm/strlen.S +Copyright: 2015 ARM Ltd. +License: BSD3-9 + +Files: newlib/libc/machine/aarch64/rawmemchr-stub.c + newlib/libc/machine/aarch64/rawmemchr.S +Copyright: 2015-2016, ARM Limited +License: BSD3-10 + +Files: newlib/libc/machine/aarch64/stpcpy-stub.c +Copyright: 2015, ARM Limited +License: BSD3-10 + +Files: newlib/libc/machine/aarch64/strchr-stub.c + newlib/libc/machine/aarch64/strchrnul-stub.c + newlib/libc/machine/aarch64/strcpy-stub.c + newlib/libc/machine/aarch64/strrchr-stub.c + newlib/libc/machine/aarch64/strrchr.S +Copyright: 2014, ARM Limited +License: BSD3-10 + +Files: newlib/libc/machine/aarch64/strchr.S + newlib/libc/machine/aarch64/strchrnul.S +Copyright: 2014-2022, ARM Limited +License: BSD3-10 + +Files: newlib/libc/machine/aarch64/strcpy.S +Copyright: 2013, 2014, 2015, 2020-2023 ARM Ltd. +License: BSD3-10 + +Files: newlib/libc/machine/arc/asm.h + newlib/libc/machine/arc/strchr.S +Copyright: 2015, Synopsys, Inc. +License: BSD3-11 + +Files: newlib/libc/machine/arc/memcmp-bs-norm.S + newlib/libc/machine/arc/memcmp-stub.c + newlib/libc/machine/arc/memcmp.S + newlib/libc/machine/arc/memcpy-archs.S + newlib/libc/machine/arc/memcpy-bs.S + newlib/libc/machine/arc/memcpy-stub.c + newlib/libc/machine/arc/memcpy.S + newlib/libc/machine/arc/memset-archs.S + newlib/libc/machine/arc/memset-bs.S + newlib/libc/machine/arc/memset-stub.c + newlib/libc/machine/arc/memset.S + newlib/libc/machine/arc/setjmp.S + newlib/libc/machine/arc/strchr-bs-norm.S + newlib/libc/machine/arc/strchr-bs.S + newlib/libc/machine/arc/strchr-stub.c + newlib/libc/machine/arc/strcmp-archs.S + newlib/libc/machine/arc/strcmp-stub.c + newlib/libc/machine/arc/strcmp.S + newlib/libc/machine/arc/strcpy-bs-arc600.S + newlib/libc/machine/arc/strcpy-bs.S + newlib/libc/machine/arc/strcpy-stub.c + newlib/libc/machine/arc/strcpy.S + newlib/libc/machine/arc/strlen-bs-norm.S + newlib/libc/machine/arc/strlen-bs.S + newlib/libc/machine/arc/strlen-stub.c + newlib/libc/machine/arc/strlen.S + newlib/libc/machine/arc/strncpy-bs.S + newlib/libc/machine/arc/strncpy-stub.c + newlib/libc/machine/arc/strncpy.S +Copyright: 2015-2024, Synopsys, Inc. +License: BSD3-11 + +Files: newlib/libc/machine/arc64/memchr.S + newlib/libc/machine/arc64/memcmp-stub.c + newlib/libc/machine/arc64/memcmp.S + newlib/libc/machine/arc64/memcpy-stub.c + newlib/libc/machine/arc64/memcpy.S + newlib/libc/machine/arc64/memmove.S + newlib/libc/machine/arc64/memset-stub.c + newlib/libc/machine/arc64/memset.S + newlib/libc/machine/arc64/setjmp.S + newlib/libc/machine/arc64/strcat.S + newlib/libc/machine/arc64/strcmp.S + newlib/libc/machine/arc64/strlen.S + newlib/libc/machine/arc64/sys/asm.h +Copyright: 2024, Synopsys, Inc. +License: BSD3-11 + +Files: newlib/libc/machine/arm/memchr.S +Copyright: 2010-2011, Linaro Limited +License: BSD3-12 + +Files: newlib/libc/machine/arm/memcpy-armv7a.S +Copyright: 2013, Linaro Limited +License: BSD3-12 + +Files: newlib/libc/machine/arm/strlen-armv7.S +Copyright: 2010-2011,2013 Linaro Limited +License: BSD3-12 + +Files: newlib/libc/machine/avr/macros.inc +Copyright: 2002, 2005, 2006, 2007 Marek Michalkiewicz + 2006 Dmitry Xmelkov +License: BSD3-13 + +Files: newlib/libc/machine/avr/sectionname.h +Copyright: 2009 Atmel Corporation +License: BSD3-13 + +Files: newlib/libc/machine/avr/setjmp.S +Copyright: 2002, Marek Michalkiewicz +License: BSD3-13 + +Files: newlib/libc/tinystdio/atod_engine.c + newlib/libc/tinystdio/atof_engine.c + newlib/libc/tinystdio/conv_flt.c + newlib/libc/tinystdio/scanf_private.h + newlib/libc/tinystdio/strtoi.h + newlib/libc/tinystdio/strtoimax.c + newlib/libc/tinystdio/strtol.c + newlib/libc/tinystdio/strtoll.c + newlib/libc/tinystdio/strtoul.c + newlib/libc/tinystdio/strtoull.c + newlib/libc/tinystdio/strtoumax.c + newlib/libc/tinystdio/vfscanf.c +Copyright: 2002,2004,2005 Joerg Wunsch + 2008 Dmitry Xmelkov +License: BSD3-13 + +Files: newlib/libc/tinystdio/clearerr.c + newlib/libc/tinystdio/fclose.c + newlib/libc/tinystdio/feof.c + newlib/libc/tinystdio/ferror.c + newlib/libc/tinystdio/fgetc.c + newlib/libc/tinystdio/stdio_private.h +Copyright: 2002,2005 Joerg Wunsch +License: BSD3-13 + +Files: newlib/libc/tinystdio/dtoa.h + newlib/libc/tinystdio/dtoa_engine.c + newlib/libc/tinystdio/sprintfd.c + newlib/libc/tinystdio/sprintff.c + newlib/libc/tinystdio/vffprintf.c + newlib/libc/tinystdio/vffscanf.c + newlib/libc/tinystdio/vfiprintf.c + newlib/libc/tinystdio/vfiscanf.c + newlib/libc/tinystdio/vflprintf.c + newlib/libc/tinystdio/vflscanf.c + newlib/libc/tinystdio/vfmprintf.c + newlib/libc/tinystdio/vfmscanf.c + newlib/libc/tinystdio/vfwprintf.c + newlib/libc/tinystdio/vfwscanf.c +Copyright: 2018, Keith Packard +License: BSD3-13 + +Files: newlib/libc/tinystdio/fdevopen.c +Copyright: 2002,2005, 2007 Joerg Wunsch +License: BSD3-13 + +Files: newlib/libc/tinystdio/fgets.c + newlib/libc/tinystdio/fgetwc.c + newlib/libc/tinystdio/fgetws.c + newlib/libc/tinystdio/fprintf.c + newlib/libc/tinystdio/fputc.c + newlib/libc/tinystdio/fputs.c + newlib/libc/tinystdio/fputwc.c + newlib/libc/tinystdio/fputws.c + newlib/libc/tinystdio/fread.c + newlib/libc/tinystdio/fscanf.c + newlib/libc/tinystdio/fwprintf.c + newlib/libc/tinystdio/fwrite.c + newlib/libc/tinystdio/fwscanf.c + newlib/libc/tinystdio/getchar.c + newlib/libc/tinystdio/gets.c + newlib/libc/tinystdio/getwchar.c + newlib/libc/tinystdio/printf.c + newlib/libc/tinystdio/putchar.c + newlib/libc/tinystdio/puts.c + newlib/libc/tinystdio/putwchar.c + newlib/libc/tinystdio/scanf.c + newlib/libc/tinystdio/snprintf.c + newlib/libc/tinystdio/sprintf.c + newlib/libc/tinystdio/sscanf.c + newlib/libc/tinystdio/swscanf.c + newlib/libc/tinystdio/ungetc.c + newlib/libc/tinystdio/ungetwc.c + newlib/libc/tinystdio/wprintf.c + newlib/libc/tinystdio/wscanf.c +Copyright: 2002, Joerg Wunsch +License: BSD3-13 + +Files: newlib/libc/tinystdio/snprintfd.c + newlib/libc/tinystdio/snprintff.c +Copyright: 2021 Keith Packard +License: BSD3-13 + +Files: newlib/libc/tinystdio/stdio.h +Copyright: 2002, 2005, 2007 Joerg Wunsch + 1990, 1991, 1993 The Regents of the University of California. +License: BSD3-13 + +Files: newlib/libc/tinystdio/strtod.c + newlib/libc/tinystdio/strtof.c + newlib/libc/tinystdio/strtold.c +Copyright: 2002-2005 Michael Stumpf + 2006,2008 Dmitry Xmelkov +License: BSD3-13 + +Files: newlib/libc/tinystdio/ultoa_invert.c +Copyright: 2017 Keith Packard +License: BSD3-13 + +Files: newlib/libc/tinystdio/vfprintf.c +Copyright: 2002, Alexander Popov (sasho@vip.bg) + 2002,2004,2005 Joerg Wunsch + 2005, Helmut Wallner + 2007, Dmitry Xmelkov +License: BSD3-13 + +Files: newlib/libc/tinystdio/vprintf.c + newlib/libc/tinystdio/vscanf.c + newlib/libc/tinystdio/vsscanf.c + newlib/libc/tinystdio/vswscanf.c + newlib/libc/tinystdio/vwprintf.c + newlib/libc/tinystdio/vwscanf.c +Copyright: 2005, Joerg Wunsch +License: BSD3-13 + +Files: newlib/libc/tinystdio/vsnprintf.c + newlib/libc/tinystdio/vsprintf.c +Copyright: 2003, Joerg Wunsch +License: BSD3-13 + +Files: newlib/libc/machine/epiphany/setjmp.S +Copyright: 2011, Adapteva, Inc. +License: BSD3-14 + +Files: newlib/libc/machine/microblaze/abort.c + newlib/libc/machine/microblaze/longjmp.S + newlib/libc/machine/microblaze/setjmp.S +Copyright: 2001, 2009 Xilinx, Inc. +License: BSD3-15 + +Files: newlib/libc/machine/microblaze/strcmp.c + newlib/libc/machine/microblaze/strcpy.c + newlib/libc/machine/microblaze/strlen.c +Copyright: 2009 Xilinx, Inc. +License: BSD3-15 + +Files: newlib/libc/machine/mips/machine/asm.h + newlib/libc/machine/mips/machine/regdef.h +Copyright: 1996-2007 MIPS Technologies, Inc. + 2009 CodeSourcery, LLC. +License: BSD3-16 + +Files: newlib/libc/machine/mips/memcpy.S +Copyright: 2012-2015 MIPS Technologies, Inc., California. +License: BSD3-17 + +Files: newlib/libc/machine/mips/memset.S +Copyright: 2013 MIPS Technologies, Inc., California. +License: BSD3-17 + +Files: newlib/libc/machine/mips/strcmp.S +Copyright: 2014 Imagination Technologies Limited. +License: BSD3-18 + +Files: newlib/libc/machine/nds32/abort.c + newlib/libc/machine/nds32/memcpy.S + newlib/libc/machine/nds32/memset.S + newlib/libc/machine/nds32/setjmp.S + newlib/libc/machine/nds32/strcmp.S + newlib/libc/machine/nds32/strcpy.S +Copyright: 2013 Andes Technology Corporation. +License: BSD3-19 + +Files: newlib/libm/machine/nds32/w_sqrt.S + newlib/libm/machine/nds32/wf_sqrt.S +Copyright: 2013-2014 Andes Technology Corporation. +License: BSD3-19 + +Files: newlib/libc/machine/nios2/setjmp.s +Copyright: 2003 Altera Corporation +License: BSD3-20 + +Files: newlib/libc/machine/riscv/machine/fenv-fp.h +Copyright: 2017 Michael R. Neilly +License: BSD3-21 + +Files: newlib/libc/machine/sparc/setjmp.S +Copyright: 1992, 1993 The Regents of the University of California. +License: BSD3-22 + +Files: newlib/libc/machine/spu/c99ppe.h + newlib/libc/machine/spu/clearerr.c + newlib/libc/machine/spu/fclose.c + newlib/libc/machine/spu/feof.c + newlib/libc/machine/spu/ferror.c + newlib/libc/machine/spu/fflush.c + newlib/libc/machine/spu/fgetc.c + newlib/libc/machine/spu/fgetpos.c + newlib/libc/machine/spu/fgets.c + newlib/libc/machine/spu/fileno.c + newlib/libc/machine/spu/fopen.c + newlib/libc/machine/spu/fputc.c + newlib/libc/machine/spu/fputs.c + newlib/libc/machine/spu/fread.c + newlib/libc/machine/spu/freopen.c + newlib/libc/machine/spu/fseek.c + newlib/libc/machine/spu/fsetpos.c + newlib/libc/machine/spu/ftell.c + newlib/libc/machine/spu/fwrite.c + newlib/libc/machine/spu/getc.c + newlib/libc/machine/spu/getchar.c + newlib/libc/machine/spu/gets.c + newlib/libc/machine/spu/perror.c + newlib/libc/machine/spu/putc.c + newlib/libc/machine/spu/putchar.c + newlib/libc/machine/spu/puts.c + newlib/libc/machine/spu/remove.c + newlib/libc/machine/spu/rename.c + newlib/libc/machine/spu/rewind.c + newlib/libc/machine/spu/setbuf.c + newlib/libc/machine/spu/setvbuf.c + newlib/libc/machine/spu/sys/custom_file.h + newlib/libc/machine/spu/tmpfile.c + newlib/libc/machine/spu/tmpnam.c + newlib/libc/machine/spu/ungetc.c + newlib/libc/machine/spu/vfprintf.c + newlib/libc/machine/spu/vfscanf.c + newlib/libc/machine/spu/vprintf.c + newlib/libc/machine/spu/vscanf.c + newlib/libc/machine/spu/vsnprintf.c + newlib/libc/machine/spu/vsprintf.c + newlib/libc/machine/spu/vsscanf.c +Copyright: IBM Corp. 2006 +License: BSD3-23 + +Files: newlib/libc/machine/spu/calloc_ea.c + newlib/libc/machine/spu/ea_internal.h + newlib/libc/machine/spu/free_ea.c + newlib/libc/machine/spu/include/ea.h + newlib/libc/machine/spu/malloc_ea.c + newlib/libc/machine/spu/memchr_ea.c + newlib/libc/machine/spu/memcmp_ea.c + newlib/libc/machine/spu/memcpy_ea.c + newlib/libc/machine/spu/memmove_ea.c + newlib/libc/machine/spu/memset_ea.c + newlib/libc/machine/spu/mmap_ea.c + newlib/libc/machine/spu/mremap_ea.c + newlib/libc/machine/spu/msync_ea.c + newlib/libc/machine/spu/munmap_ea.c + newlib/libc/machine/spu/posix_memalign_ea.c + newlib/libc/machine/spu/realloc_ea.c + newlib/libc/machine/spu/strcat_ea.c + newlib/libc/machine/spu/strchr_ea.c + newlib/libc/machine/spu/strcmp_ea.c + newlib/libc/machine/spu/strcpy_ea.c + newlib/libc/machine/spu/strcspn_ea.c + newlib/libc/machine/spu/strlen_ea.c + newlib/libc/machine/spu/strncat_ea.c + newlib/libc/machine/spu/strncmp_ea.c + newlib/libc/machine/spu/strncpy_ea.c + newlib/libc/machine/spu/strpbrk_ea.c + newlib/libc/machine/spu/strrchr_ea.c + newlib/libc/machine/spu/strspn_ea.c + newlib/libc/machine/spu/strstr_ea.c +Copyright: IBM Corp. 2007, 2008 +License: BSD3-23 + +Files: newlib/libc/machine/spu/fdopen.c + newlib/libc/stdlib/strtold.c + newlib/libc/stdlib/wcstold.c + newlib/libm/common/copysignl.c + newlib/libm/common/fabsl.c + newlib/libm/common/frexpl.c + newlib/libm/common/isinfl.c + newlib/libm/common/isnanl.c + newlib/libm/common/nanl.c + newlib/libm/common/scalbnl.c + newlib/libm/ld/s_isinfl.c + newlib/libm/ld/s_signbitl.c +Copyright: IBM Corp. 2009 +License: BSD3-23 + +Files: newlib/libc/machine/spu/include/spu_timer.h + newlib/libc/machine/spu/pread_ea.c + newlib/libc/machine/spu/pwrite_ea.c + newlib/libc/machine/spu/read_ea.c + newlib/libc/machine/spu/readv_ea.c + newlib/libc/machine/spu/spu-gmon.c + newlib/libc/machine/spu/spu-mcount.S + newlib/libc/machine/spu/spu_clock_stop.c + newlib/libc/machine/spu/spu_clock_svcs.c + newlib/libc/machine/spu/spu_timebase.c + newlib/libc/machine/spu/spu_timer_flih.S + newlib/libc/machine/spu/spu_timer_free.c + newlib/libc/machine/spu/spu_timer_internal.h + newlib/libc/machine/spu/spu_timer_slih.c + newlib/libc/machine/spu/spu_timer_slih_reg.c + newlib/libc/machine/spu/spu_timer_stop.c + newlib/libc/machine/spu/spu_timer_svcs.c + newlib/libc/machine/spu/sys/linux_syscalls.h + newlib/libc/machine/spu/write_ea.c + newlib/libc/machine/spu/writev_ea.c +Copyright: IBM Corp. 2008 +License: BSD3-23 + +Files: newlib/libc/machine/spu/setjmp.S +Copyright: IBM Corp. 2005, 2006 +License: BSD3-23 + +Files: newlib/libc/machine/spu/sys/mman.h +Copyright: IBM Corp. 2007 +License: BSD3-23 + +Files: newlib/libc/machine/spu/fiprintf.S + newlib/libc/machine/spu/fiscanf.S + newlib/libc/machine/spu/fprintf.S + newlib/libc/machine/spu/fscanf.S + newlib/libc/machine/spu/iprintf.S + newlib/libc/machine/spu/iscanf.S + newlib/libc/machine/spu/printf.S + newlib/libc/machine/spu/scanf.S + newlib/libc/machine/spu/siprintf.S + newlib/libc/machine/spu/siscanf.S + newlib/libc/machine/spu/sniprintf.S + newlib/libc/machine/spu/snprintf.S + newlib/libc/machine/spu/sprintf.S + newlib/libc/machine/spu/sscanf.S + newlib/libc/machine/spu/stack_reg_va.S +Copyright: 2007, Toshiba Corporation +License: BSD3-24 + +Files: newlib/libc/machine/spu/mk_syscalls + newlib/libc/machine/spu/syscall.def +Copyright: 2007 TOSHIBA CORPORATION +License: BSD3-24 + +Files: newlib/libc/machine/spu/include/fenv.h + newlib/libc/machine/spu/machine/fenv.h +Copyright: 2006, 2007 International Business Machines Corporation, Sony Computer Entertainment, Incorporated, Toshiba Corporation, +License: BSD3-25 + +Files: newlib/libc/machine/spu/machine/_types.h + newlib/libc/machine/spu/sys/dirent.h + newlib/libm/machine/spu/headers/dom_chkd_less_than.h + newlib/libm/machine/spu/headers/dom_chkd_negone_one.h + newlib/libm/machine/spu/headers/dom_chkf_less_than.h + newlib/libm/machine/spu/headers/dom_chkf_negone_one.h + newlib/libm/machine/spu/sf_finite.c + newlib/libm/machine/spu/sf_isinf.c + newlib/libm/machine/spu/sf_isinff.c + newlib/libm/machine/spu/sf_isnan.c + newlib/libm/machine/spu/sf_isnanf.c + newlib/libm/machine/spu/sf_nan.c +Copyright: 2007 International Business Machines Corporation, Sony Computer Entertainment, Incorporated, Toshiba Corporation, +License: BSD3-25 + +Files: newlib/libc/machine/spu/memcmp.c + newlib/libc/machine/spu/straddr.h + newlib/libc/machine/spu/strcat.c + newlib/libc/machine/spu/strcpy.c + newlib/libc/machine/spu/strcpy.h + newlib/libc/machine/spu/strncat.c + newlib/libc/machine/spu/strncpy.c +Copyright: 2008 International Business Machines Corporation +License: BSD3-25 + +Files: newlib/libc/machine/spu/memcpy.c + newlib/libc/machine/spu/memmove.c + newlib/libc/machine/spu/memset.c + newlib/libc/machine/spu/strchr.c + newlib/libc/machine/spu/strcmp.c + newlib/libc/machine/spu/strcspn.c + newlib/libc/machine/spu/strlen.c + newlib/libc/machine/spu/strncmp.c + newlib/libc/machine/spu/strpbrk.c + newlib/libc/machine/spu/strrchr.c + newlib/libc/machine/spu/strspn.c + newlib/libc/machine/spu/strxfrm.c + newlib/libc/machine/spu/vec_literal.h + newlib/libm/machine/spu/headers/atanf.h + newlib/libm/machine/spu/headers/cbrt.h + newlib/libm/machine/spu/headers/cbrtf.h + newlib/libm/machine/spu/headers/ceil.h + newlib/libm/machine/spu/headers/ceilf.h + newlib/libm/machine/spu/headers/copysign.h + newlib/libm/machine/spu/headers/copysignf.h + newlib/libm/machine/spu/headers/exp2f.h + newlib/libm/machine/spu/headers/expf.h + newlib/libm/machine/spu/headers/fabs.h + newlib/libm/machine/spu/headers/fabsf.h + newlib/libm/machine/spu/headers/fdim.h + newlib/libm/machine/spu/headers/fdimf.h + newlib/libm/machine/spu/headers/feclearexcept.h + newlib/libm/machine/spu/headers/fefpscr.h + newlib/libm/machine/spu/headers/fegetenv.h + newlib/libm/machine/spu/headers/fegetexceptflag.h + newlib/libm/machine/spu/headers/fegetround.h + newlib/libm/machine/spu/headers/feholdexcept.h + newlib/libm/machine/spu/headers/feraiseexcept.h + newlib/libm/machine/spu/headers/fesetenv.h + newlib/libm/machine/spu/headers/fesetexceptflag.h + newlib/libm/machine/spu/headers/fesetround.h + newlib/libm/machine/spu/headers/fetestexcept.h + newlib/libm/machine/spu/headers/feupdateenv.h + newlib/libm/machine/spu/headers/floor.h + newlib/libm/machine/spu/headers/floorf.h + newlib/libm/machine/spu/headers/fma.h + newlib/libm/machine/spu/headers/fmaf.h + newlib/libm/machine/spu/headers/fmax.h + newlib/libm/machine/spu/headers/fmaxf.h + newlib/libm/machine/spu/headers/fmin.h + newlib/libm/machine/spu/headers/fminf.h + newlib/libm/machine/spu/headers/fmod.h + newlib/libm/machine/spu/headers/fmodf.h + newlib/libm/machine/spu/headers/frexp.h + newlib/libm/machine/spu/headers/frexpf.h + newlib/libm/machine/spu/headers/ilogb.h + newlib/libm/machine/spu/headers/ilogbf.h + newlib/libm/machine/spu/headers/ldexp.h + newlib/libm/machine/spu/headers/ldexpf.h + newlib/libm/machine/spu/headers/llrint.h + newlib/libm/machine/spu/headers/llrintf.h + newlib/libm/machine/spu/headers/llround.h + newlib/libm/machine/spu/headers/llroundf.h + newlib/libm/machine/spu/headers/log10f.h + newlib/libm/machine/spu/headers/log2f.h + newlib/libm/machine/spu/headers/logf.h + newlib/libm/machine/spu/headers/lrint.h + newlib/libm/machine/spu/headers/lrintf.h + newlib/libm/machine/spu/headers/lround.h + newlib/libm/machine/spu/headers/lroundf.h + newlib/libm/machine/spu/headers/nearbyint.h + newlib/libm/machine/spu/headers/remainder.h + newlib/libm/machine/spu/headers/remainderf.h + newlib/libm/machine/spu/headers/remquo.h + newlib/libm/machine/spu/headers/remquof.h + newlib/libm/machine/spu/headers/rint.h + newlib/libm/machine/spu/headers/round.h + newlib/libm/machine/spu/headers/roundf.h + newlib/libm/machine/spu/headers/scalbn.h + newlib/libm/machine/spu/headers/scalbnf.h + newlib/libm/machine/spu/headers/sqrt.h + newlib/libm/machine/spu/headers/trunc.h + newlib/libm/machine/spu/headers/truncf.h + newlib/libm/machine/spu/headers/vec_literal.h + newlib/libm/machine/spu/llrint.c + newlib/libm/machine/spu/llrintf.c + newlib/libm/machine/spu/llround.c + newlib/libm/machine/spu/llroundf.c + newlib/libm/machine/spu/log2f.c + newlib/libm/machine/spu/s_cbrt.c + newlib/libm/machine/spu/s_ceil.c + newlib/libm/machine/spu/s_copysign.c + newlib/libm/machine/spu/s_fabs.c + newlib/libm/machine/spu/s_fdim.c + newlib/libm/machine/spu/s_floor.c + newlib/libm/machine/spu/s_fma.c + newlib/libm/machine/spu/s_fmax.c + newlib/libm/machine/spu/s_fmin.c + newlib/libm/machine/spu/s_frexp.c + newlib/libm/machine/spu/s_ilogb.c + newlib/libm/machine/spu/s_ldexp.c + newlib/libm/machine/spu/s_lrint.c + newlib/libm/machine/spu/s_lround.c + newlib/libm/machine/spu/s_nearbyint.c + newlib/libm/machine/spu/s_remquo.c + newlib/libm/machine/spu/s_rint.c + newlib/libm/machine/spu/s_round.c + newlib/libm/machine/spu/s_scalbn.c + newlib/libm/machine/spu/s_trunc.c + newlib/libm/machine/spu/sf_atan.c + newlib/libm/machine/spu/sf_cbrt.c + newlib/libm/machine/spu/sf_ceil.c + newlib/libm/machine/spu/sf_copysign.c + newlib/libm/machine/spu/sf_fabs.c + newlib/libm/machine/spu/sf_fdim.c + newlib/libm/machine/spu/sf_floor.c + newlib/libm/machine/spu/sf_fma.c + newlib/libm/machine/spu/sf_fmax.c + newlib/libm/machine/spu/sf_fmin.c + newlib/libm/machine/spu/sf_frexp.c + newlib/libm/machine/spu/sf_ilogb.c + newlib/libm/machine/spu/sf_ldexp.c + newlib/libm/machine/spu/sf_lrint.c + newlib/libm/machine/spu/sf_lround.c + newlib/libm/machine/spu/sf_remquo.c + newlib/libm/machine/spu/sf_round.c + newlib/libm/machine/spu/sf_scalbn.c + newlib/libm/machine/spu/sf_trunc.c + newlib/libm/machine/spu/w_fmod.c + newlib/libm/machine/spu/w_remainder.c + newlib/libm/machine/spu/w_sqrt.c + newlib/libm/machine/spu/wf_exp.c + newlib/libm/machine/spu/wf_exp2.c + newlib/libm/machine/spu/wf_fmod.c + newlib/libm/machine/spu/wf_log.c + newlib/libm/machine/spu/wf_log10.c + newlib/libm/machine/spu/wf_remainder.c +Copyright: 2001,2006, International Business Machines Corporation, Sony Computer Entertainment, Incorporated, Toshiba Corporation, +License: BSD3-25 + +Files: newlib/libc/machine/spu/stdio.c +Copyright: 2007 Sony Computer Entertainment Inc. + 2007 Sony Corp. +License: BSD3-25 + +Files: newlib/libc/machine/spu/strncmp.h +Copyright: 2001,2006,2008 International Business Machines Corporation, Sony Computer Entertainment, Incorporated, Toshiba Corporation, +License: BSD3-25 + +Files: newlib/libc/machine/tic6x/setjmp.S +Copyright: 1996-2010 Texas Instruments Incorporated http://www.ti.com +License: BSD3-26 + +Files: newlib/libc/machine/visium/memcpy.c + newlib/libc/machine/visium/memcpy.h + newlib/libc/machine/visium/memmove.c + newlib/libc/machine/visium/memset.c + newlib/libc/machine/visium/memset.h + newlib/libc/machine/visium/setjmp.S +Copyright: 2015 Rolls-Royce Controls and Data Services Limited. +License: BSD3-27 + +Files: newlib/libc/search/hcreate.c + newlib/libc/search/hcreate_r.c + newlib/testsuite/newlib.search/hsearchtest.c +Copyright: 2001 Christopher G. Demetriou +License: BSD3-28 + +Files: newlib/libc/search/tsearch.3 +Copyright: 1997 Todd C. Miller +License: BSD3-29 + +Files: newlib/libc/stdlib/aligned_alloc.c +Copyright: 2020 Arm Ltd. +License: BSD3-30 + +Files: newlib/libc/string/memmem.c + newlib/libc/string/strstr.c + newlib/libm/common/cosf.c + newlib/libm/common/exp.c + newlib/libm/common/exp2.c + newlib/libm/common/exp_data.c + newlib/libm/common/log.c + newlib/libm/common/log2.c + newlib/libm/common/log2_data.c + newlib/libm/common/log_data.c + newlib/libm/common/math_denorm.c + newlib/libm/common/math_denormf.c + newlib/libm/common/math_denorml.c + newlib/libm/common/math_err_check_oflow.c + newlib/libm/common/math_err_check_uflow.c + newlib/libm/common/math_err_divzero.c + newlib/libm/common/math_err_invalid.c + newlib/libm/common/math_err_may_uflow.c + newlib/libm/common/math_err_oflow.c + newlib/libm/common/math_err_uflow.c + newlib/libm/common/math_err_with_errno.c + newlib/libm/common/math_errf_check_oflowf.c + newlib/libm/common/math_errf_check_uflowf.c + newlib/libm/common/pow.c + newlib/libm/common/pow_log_data.c + newlib/libm/common/sincosf.c + newlib/libm/common/sincosf.h + newlib/libm/common/sincosf_data.c + newlib/libm/common/sinf.c + newlib/libm/ld/math_errl_check_oflowl.c + newlib/libm/ld/math_errl_check_uflowl.c + newlib/libm/ld/math_errl_divzerol.c + newlib/libm/ld/math_errl_invalidl.c + newlib/libm/ld/math_errl_oflowl.c + newlib/libm/ld/math_errl_uflowl.c + newlib/libm/ld/math_errl_with_errnol.c +Copyright: 2018 Arm Ltd. +License: BSD3-30 + +Files: newlib/libm/common/math_config.h + newlib/libm/common/math_errf_divzerof.c + newlib/libm/common/math_errf_invalidf.c + newlib/libm/common/math_errf_may_uflowf.c + newlib/libm/common/math_errf_oflowf.c + newlib/libm/common/math_errf_uflowf.c + newlib/libm/common/math_errf_with_errnof.c + newlib/libm/common/sf_pow.c +Copyright: 2017-2018 Arm Ltd. +License: BSD3-30 + +Files: newlib/libm/common/sf_exp.c + newlib/libm/common/sf_exp2.c + newlib/libm/common/sf_exp2_data.c + newlib/libm/common/sf_log.c + newlib/libm/common/sf_log2.c + newlib/libm/common/sf_log2_data.c + newlib/libm/common/sf_log_data.c + newlib/libm/common/sf_pow_log2_data.c +Copyright: 2017 Arm Ltd. +License: BSD3-30 + +Files: newlib/libc/stdlib/strtoimax.c + newlib/libc/stdlib/strtoumax.c + newlib/libc/stdlib/wcstoimax.c + newlib/libc/stdlib/wcstoumax.c +Copyright: 1992, 1993 The Regents of the University of California. + 2011 The FreeBSD Foundation +License: BSD3-31 + +Files: newlib/libc/sys/rtems/include/sys/poll.h +Copyright: 1997 Peter Wemm +License: BSD3-32 + +Files: newlib/libc/time/strptime.c +Copyright: 1999 Kungliga Tekniska Högskolan Royal Institute of Technology, Stockholm, Sweden). +License: BSD3-33 + +Files: newlib/libc/tinystdio/ftoa_engine.c +Copyright: 2005, Dmitry Xmelkov +License: BSD3-34 + +Files: newlib/libm/common/nexttoward.c + newlib/libm/common/nexttowardl.c +Copyright: 2014 Mentor Graphics, Inc. +License: BSD3-35 + +Files: newlib/libm/ld/common/s_fabsl.c +Copyright: 2003 Dag-Erling Coïdan Smørgrav +License: BSD3-36 + +Files: newlib/libm/machine/spu/headers/acos.h + newlib/libm/machine/spu/headers/acosd2.h + newlib/libm/machine/spu/headers/acosf.h + newlib/libm/machine/spu/headers/acosh.h + newlib/libm/machine/spu/headers/acoshf.h + newlib/libm/machine/spu/headers/asin.h + newlib/libm/machine/spu/headers/asind2.h + newlib/libm/machine/spu/headers/asinf.h + newlib/libm/machine/spu/headers/asinh.h + newlib/libm/machine/spu/headers/asinhf.h + newlib/libm/machine/spu/headers/atan.h + newlib/libm/machine/spu/headers/atan2.h + newlib/libm/machine/spu/headers/atan2f.h + newlib/libm/machine/spu/headers/atanh.h + newlib/libm/machine/spu/headers/atanhf.h + newlib/libm/machine/spu/headers/cos.h + newlib/libm/machine/spu/headers/cosf.h + newlib/libm/machine/spu/headers/cosh.h + newlib/libm/machine/spu/headers/coshd2.h + newlib/libm/machine/spu/headers/coshf.h + newlib/libm/machine/spu/headers/coshf4.h + newlib/libm/machine/spu/headers/erf.h + newlib/libm/machine/spu/headers/erfc.h + newlib/libm/machine/spu/headers/erfcf.h + newlib/libm/machine/spu/headers/erff.h + newlib/libm/machine/spu/headers/exp.h + newlib/libm/machine/spu/headers/exp2.h + newlib/libm/machine/spu/headers/expm1.h + newlib/libm/machine/spu/headers/expm1f.h + newlib/libm/machine/spu/headers/hypot.h + newlib/libm/machine/spu/headers/hypotd2.h + newlib/libm/machine/spu/headers/hypotf.h + newlib/libm/machine/spu/headers/isnan.h + newlib/libm/machine/spu/headers/isnand2.h + newlib/libm/machine/spu/headers/isnanf.h + newlib/libm/machine/spu/headers/isnanf4.h + newlib/libm/machine/spu/headers/lgamma.h + newlib/libm/machine/spu/headers/lgammaf.h + newlib/libm/machine/spu/headers/log.h + newlib/libm/machine/spu/headers/log10.h + newlib/libm/machine/spu/headers/log1p.h + newlib/libm/machine/spu/headers/log1pf.h + newlib/libm/machine/spu/headers/log2.h + newlib/libm/machine/spu/headers/logbf.h + newlib/libm/machine/spu/headers/logbf4.h + newlib/libm/machine/spu/headers/nearbyintf.h + newlib/libm/machine/spu/headers/nextafter.h + newlib/libm/machine/spu/headers/nextafterf.h + newlib/libm/machine/spu/headers/pow.h + newlib/libm/machine/spu/headers/powf.h + newlib/libm/machine/spu/headers/rintf.h + newlib/libm/machine/spu/headers/signbit.h + newlib/libm/machine/spu/headers/signbitd2.h + newlib/libm/machine/spu/headers/simdmath.h + newlib/libm/machine/spu/headers/sin.h + newlib/libm/machine/spu/headers/sincos.h + newlib/libm/machine/spu/headers/sincosf.h + newlib/libm/machine/spu/headers/sinf.h + newlib/libm/machine/spu/headers/sinh.h + newlib/libm/machine/spu/headers/sinhd2.h + newlib/libm/machine/spu/headers/sinhf.h + newlib/libm/machine/spu/headers/sinhf4.h + newlib/libm/machine/spu/headers/sqrtf.h + newlib/libm/machine/spu/headers/tan.h + newlib/libm/machine/spu/headers/tanf.h + newlib/libm/machine/spu/headers/tanh.h + newlib/libm/machine/spu/headers/tanhf.h + newlib/libm/machine/spu/headers/tgamma.h + newlib/libm/machine/spu/headers/tgammaf.h + newlib/libm/machine/spu/log2.c + newlib/libm/machine/spu/s_asinh.c + newlib/libm/machine/spu/s_atan.c + newlib/libm/machine/spu/s_cos.c + newlib/libm/machine/spu/s_erf.c + newlib/libm/machine/spu/s_expm1.c + newlib/libm/machine/spu/s_isnan.c + newlib/libm/machine/spu/s_log1p.c + newlib/libm/machine/spu/s_nextafter.c + newlib/libm/machine/spu/s_sin.c + newlib/libm/machine/spu/s_tan.c + newlib/libm/machine/spu/s_tanh.c + newlib/libm/machine/spu/sf_asinh.c + newlib/libm/machine/spu/sf_cos.c + newlib/libm/machine/spu/sf_erf.c + newlib/libm/machine/spu/sf_expm1.c + newlib/libm/machine/spu/sf_log1p.c + newlib/libm/machine/spu/sf_logb.c + newlib/libm/machine/spu/sf_nearbyint.c + newlib/libm/machine/spu/sf_nextafter.c + newlib/libm/machine/spu/sf_rint.c + newlib/libm/machine/spu/sf_sin.c + newlib/libm/machine/spu/sf_tan.c + newlib/libm/machine/spu/sf_tanh.c + newlib/libm/machine/spu/w_acos.c + newlib/libm/machine/spu/w_acosh.c + newlib/libm/machine/spu/w_asin.c + newlib/libm/machine/spu/w_atan2.c + newlib/libm/machine/spu/w_atanh.c + newlib/libm/machine/spu/w_cosh.c + newlib/libm/machine/spu/w_exp.c + newlib/libm/machine/spu/w_exp2.c + newlib/libm/machine/spu/w_hypot.c + newlib/libm/machine/spu/w_lgamma.c + newlib/libm/machine/spu/w_log.c + newlib/libm/machine/spu/w_log10.c + newlib/libm/machine/spu/w_pow.c + newlib/libm/machine/spu/w_sincos.c + newlib/libm/machine/spu/w_sinh.c + newlib/libm/machine/spu/w_tgamma.c + newlib/libm/machine/spu/wf_acos.c + newlib/libm/machine/spu/wf_acosh.c + newlib/libm/machine/spu/wf_asin.c + newlib/libm/machine/spu/wf_atan2.c + newlib/libm/machine/spu/wf_atanh.c + newlib/libm/machine/spu/wf_cosh.c + newlib/libm/machine/spu/wf_hypot.c + newlib/libm/machine/spu/wf_lgamma.c + newlib/libm/machine/spu/wf_pow.c + newlib/libm/machine/spu/wf_sincos.c + newlib/libm/machine/spu/wf_sinh.c + newlib/libm/machine/spu/wf_sqrt.c + newlib/libm/machine/spu/wf_tgamma.c +Copyright: 2006,2008, International Business Machines Corporation +License: BSD3-37 + +Files: newlib/libm/machine/spu/headers/acosf4.h + newlib/libm/machine/spu/headers/asinf4.h + newlib/libm/machine/spu/headers/atanf4.h + newlib/libm/machine/spu/headers/cos_sin.h + newlib/libm/machine/spu/headers/cosd2.h + newlib/libm/machine/spu/headers/cosf4.h + newlib/libm/machine/spu/headers/divd2.h + newlib/libm/machine/spu/headers/divf4.h + newlib/libm/machine/spu/headers/exp2d2.h + newlib/libm/machine/spu/headers/exp2f4.h + newlib/libm/machine/spu/headers/expd2.h + newlib/libm/machine/spu/headers/expf4.h + newlib/libm/machine/spu/headers/floord2.h + newlib/libm/machine/spu/headers/floorf4.h + newlib/libm/machine/spu/headers/ldexpd2.h + newlib/libm/machine/spu/headers/ldexpf4.h + newlib/libm/machine/spu/headers/log10d2.h + newlib/libm/machine/spu/headers/log2d2.h + newlib/libm/machine/spu/headers/log2f4.h + newlib/libm/machine/spu/headers/logd2.h + newlib/libm/machine/spu/headers/logf4.h + newlib/libm/machine/spu/headers/powd2.h + newlib/libm/machine/spu/headers/powf4.h + newlib/libm/machine/spu/headers/recipd2.h + newlib/libm/machine/spu/headers/recipf4.h + newlib/libm/machine/spu/headers/sind2.h + newlib/libm/machine/spu/headers/sinf4.h + newlib/libm/machine/spu/headers/sqrtd2.h + newlib/libm/machine/spu/headers/sqrtf4.h + newlib/libm/machine/spu/headers/tand2.h + newlib/libm/machine/spu/headers/tanf4.h + newlib/libm/machine/spu/headers/truncd2.h + newlib/libm/machine/spu/headers/truncf4.h +Copyright: 2001,2008, International Business Machines Corporation, Sony Computer Entertainment, Incorporated, Toshiba Corporation, +License: BSD3-37 + +Files: newlib/libm/machine/spu/headers/acoshd2.h + newlib/libm/machine/spu/headers/acoshf4.h + newlib/libm/machine/spu/headers/asinhd2.h + newlib/libm/machine/spu/headers/asinhf4.h + newlib/libm/machine/spu/headers/atan2d2.h + newlib/libm/machine/spu/headers/atan2f4.h + newlib/libm/machine/spu/headers/atand2.h + newlib/libm/machine/spu/headers/atanhd2.h + newlib/libm/machine/spu/headers/atanhf4.h + newlib/libm/machine/spu/headers/erf_utils.h + newlib/libm/machine/spu/headers/erfcd2.h + newlib/libm/machine/spu/headers/erfcf4.h + newlib/libm/machine/spu/headers/erfd2.h + newlib/libm/machine/spu/headers/erff4.h + newlib/libm/machine/spu/headers/expm1d2.h + newlib/libm/machine/spu/headers/expm1f4.h + newlib/libm/machine/spu/headers/hypotf4.h + newlib/libm/machine/spu/headers/lgammad2.h + newlib/libm/machine/spu/headers/lgammaf4.h + newlib/libm/machine/spu/headers/log1pd2.h + newlib/libm/machine/spu/headers/log1pf4.h + newlib/libm/machine/spu/headers/nextafterd2.h + newlib/libm/machine/spu/headers/nextafterf4.h + newlib/libm/machine/spu/headers/sincosd2.h + newlib/libm/machine/spu/headers/sincosf4.h + newlib/libm/machine/spu/headers/tanhd2.h + newlib/libm/machine/spu/headers/tanhf4.h + newlib/libm/machine/spu/headers/tgammad2.h + newlib/libm/machine/spu/headers/tgammaf4.h +Copyright: 2007,2008, International Business Machines Corporation +License: BSD3-37 + +Files: newlib/libm/machine/spu/headers/nearbyintf4.h + newlib/libm/machine/spu/headers/rintf4.h + newlib/libm/machine/spu/headers/scalbnf4.h +Copyright: 2006,2008, International Business Machines Corporation, Sony Computer Entertainment, Incorporated, Toshiba Corporation, +License: BSD3-37 + +Files: .clang-format + .editorconfig + .gitattributes + .github/Dockerfile + .github/Dockerfile-zephyr + .github/do-build + .github/do-cmake-test + .github/do-linux + .github/do-many + .github/do-test + .github/do-zephyr + .github/linux-packages.txt + .github/workflows/Makefile + .github/workflows/head + .github/workflows/head-zephyr + .github/workflows/linux.yml + .github/workflows/make-workflow + .github/workflows/make-workflow-zephyr + .github/workflows/steps-head + .github/workflows/variants + .github/workflows/zephyr.yml + .github/zephyr + .github/zephyr-files.txt + .github/zephyr-packages.txt + .gitignore + README.md + cmake/TC-clang-thumbv6m.cmake + cmake/TC-clang-thumbv7m.cmake + cmake/TC-thumbv6m.cmake + cmake/TC-thumbv7m.cmake + cross.tmpl + doc/build.md + doc/ctype.md + doc/embedsource.md + doc/init.md + doc/linking.md + doc/locking.md + doc/os.md + doc/picolibc.svg + doc/printf.md + doc/releasing.md + doc/testing.md + doc/tls.md + doc/using.md + hello-world/README.md + newlib/HOWTO + newlib/README + newlib/doc/doc.str + newlib/libc/ctype/ctype.tex + newlib/libc/include/machine/ieee.h + newlib/libc/include/sys/_tz_structs.h + newlib/libc/libc.in.xml + newlib/libc/locale/getlocalename_l.c + newlib/libc/machine/aarch64/sys/fcntl.h + newlib/libc/machine/necv70/necv70.tex + newlib/libc/machine/nvptx/clock.c + newlib/libc/machine/xtensa/xtensa.tex + newlib/libc/ssp/ssp.tex + newlib/libc/stdio/sfputs.c + newlib/libc/stdio/sfputws.c + newlib/libc/stdio/sprint.c + newlib/libc/stdio/ssprint.c + newlib/libc/stdio/ssputs.c + newlib/libc/stdio/ssputws.c + newlib/libc/stdio/sswprint.c + newlib/libc/stdio/swprint.c + newlib/libc/stdlib/mul_overflow.h + newlib/libc/string/wcstrings.tex + newlib/libc/sys.tex + newlib/libc/sys/amdgcn/include/sys/lock.h + newlib/libc/sys/rtems/include/README + newlib/libc/sys/xtensa/include/unistd.h + newlib/libc/sys/xtensa/isatty.c + newlib/libc/syscalls/sysgetentropy.c + newlib/libc/time/strftime.c + newlib/libc/time/tzset.c + newlib/libc/xdr/README + newlib/libm/complex/CMakeLists.txt + newlib/libm/complex/complex.tex + newlib/libm/fenv/fenv.tex + newlib/libm/ld/files + newlib/libm/libm.in.xml + newlib/man.xsl + newlib/refcontainers.xslt + newlib/testsuite/newlib.time/tzset.c + picolibc.h.in + picolibc.ld.in + picolibc.specs.in + scripts/cross-aarch64-linux-gnu.txt + scripts/cross-aarch64-zephyr-elf.txt + scripts/cross-arc-zephyr-elf.txt + scripts/cross-arc64-zephyr-elf.txt + scripts/cross-arm-none-eabi.txt + scripts/cross-arm-zephyr-eabi.txt + scripts/cross-avr.txt + scripts/cross-clang-aarch64-none-elf.txt + scripts/cross-clang-msp430.txt + scripts/cross-clang-riscv64-unknown-elf.txt + scripts/cross-clang-rv32imafdc-unknown-elf.txt + scripts/cross-clang-thumb-none-eabi.txt + scripts/cross-clang-thumbv6m-none-eabi.txt + scripts/cross-clang-thumbv7-a-none-eabi.txt + scripts/cross-clang-thumbv7e+dp-none-eabi.txt + scripts/cross-clang-thumbv7e+fp-none-eabi.txt + scripts/cross-clang-thumbv7m-none-eabi.txt + scripts/cross-cortex-a9-none-eabi.txt + scripts/cross-i686-linux-gnu.txt + scripts/cross-m68k-linux-gnu.txt + scripts/cross-m68k-unknown-elf.txt + scripts/cross-microblazeel-zephyr-elf.txt + scripts/cross-mips-linux-gnu.txt + scripts/cross-mips-zephyr-elf.txt + scripts/cross-mips64-linux-gnuabi64.txt + scripts/cross-mipsel-linux-gnu.txt + scripts/cross-msp430-unknown-elf.txt + scripts/cross-msp430.txt + scripts/cross-nios2-zephyr-elf.txt + scripts/cross-power9-fp128.txt + scripts/cross-power9.txt + scripts/cross-powerpc64-linux-gnu.txt + scripts/cross-powerpc64le-linux-gnu.txt + scripts/cross-riscv64-unknown-elf.txt + scripts/cross-riscv64-zephyr-elf.txt + scripts/cross-rv32imac.txt + scripts/cross-rv32imac_zicsr_zbb.txt + scripts/cross-sh-unknown-elf.txt + scripts/cross-sparc-zephyr-elf.txt + scripts/cross-sparc64-linux-gnu.txt + scripts/cross-thumbv8_1m-none-eabi.txt + scripts/cross-thumbv8m_main_fp-none-eabi.txt + scripts/cross-x86-linux-gnu.txt + scripts/cross-x86_64-linux-gnu.txt + scripts/cross-x86_64-zephyr-elf.txt + scripts/cross-xtensa-esp32-elf.txt + scripts/cross-xtensa-espressif_esp32_zephyr-elf.txt + scripts/cross-xtensa-espressif_esp32s2_zephyr-elf.txt + scripts/cross-xtensa-intel_apl_adsp_zephyr-elf.txt + scripts/cross-xtensa-intel_s1000_zephyr-elf.txt + scripts/cross-xtensa-lx106-elf.txt + scripts/cross-xtensa-nxp_imx8m_adsp_zephyr-elf.txt + scripts/cross-xtensa-nxp_imx_adsp_zephyr-elf.txt + scripts/cross-xtensa-sample_controller_zephyr-elf.txt + scripts/do-arm-tk + scripts/duplicate-names + scripts/monitor-e9 + scripts/test-picolibc + semihost/machine/x86/bios.ld + test/complex-funcs.c + test/long_double_gen.5c + test/long_double_vec.h + test/test-atomic.c + test/time-sprintf.c +Copyright: 2020 The Newlib Project +License: Default-1 + +Files: newlib/doc/chapter-texi2docbook.py + newlib/doc/makedocbook.py +Copyright: 2016 Jon Turney +License: Default-1 + +Files: newlib/libc/ctype/categories.c + newlib/libc/ctype/categories.h +Copyright: 2017 Thomas Wolff towo@towo.net +License: Default-1 + +Files: newlib/libc/ctype/ctype_.h + newlib/libc/ctype/isalnum_l.c + newlib/libc/ctype/isalpha_l.c + newlib/libc/ctype/isascii_l.c + newlib/libc/ctype/isblank_l.c + newlib/libc/ctype/iscntrl_l.c + newlib/libc/ctype/isdigit_l.c + newlib/libc/ctype/isgraph_l.c + newlib/libc/ctype/islower_l.c + newlib/libc/ctype/isprint_l.c + newlib/libc/ctype/ispunct_l.c + newlib/libc/ctype/isspace_l.c + newlib/libc/ctype/isupper_l.c + newlib/libc/ctype/iswalnum_l.c + newlib/libc/ctype/iswalpha_l.c + newlib/libc/ctype/iswblank_l.c + newlib/libc/ctype/iswcntrl_l.c + newlib/libc/ctype/iswctype_l.c + newlib/libc/ctype/iswdigit_l.c + newlib/libc/ctype/iswgraph_l.c + newlib/libc/ctype/iswlower_l.c + newlib/libc/ctype/iswprint_l.c + newlib/libc/ctype/iswpunct_l.c + newlib/libc/ctype/iswspace_l.c + newlib/libc/ctype/iswupper_l.c + newlib/libc/ctype/iswxdigit_l.c + newlib/libc/ctype/isxdigit_l.c + newlib/libc/ctype/toascii_l.c + newlib/libc/ctype/tolower_l.c + newlib/libc/ctype/toupper_l.c + newlib/libc/ctype/towctrans_l.c + newlib/libc/ctype/towlower_l.c + newlib/libc/ctype/towupper_l.c + newlib/libc/ctype/wctrans_l.c + newlib/libc/ctype/wctype_l.c + newlib/libc/include/sys/_locale.h + newlib/libc/string/strcasecmp_l.c + newlib/libc/string/strcoll_l.c + newlib/libc/string/strncasecmp_l.c + newlib/libc/string/strxfrm_l.c + newlib/libc/string/wcscasecmp_l.c + newlib/libc/string/wcscoll_l.c + newlib/libc/string/wcsncasecmp_l.c + newlib/libc/string/wcsxfrm_l.c +Copyright: 2016 Corinna Vinschen +License: Default-1 + +Files: newlib/libc/ctype/ctype_cp.h + newlib/libc/ctype/ctype_iso.h + newlib/libc/stdlib/mbsnrtowcs.c + newlib/libc/stdlib/sb_charsets.c + newlib/libc/stdlib/wcsnrtombs.c + newlib/libc/string/local.h + newlib/libc/string/wcscasecmp.c + newlib/libc/string/wcsdup.c + newlib/libc/string/wcsncasecmp.c +Copyright: 2009 Corinna Vinschen +License: Default-1 + +Files: newlib/libc/ctype/isblank.c + newlib/libc/stdlib/btowc.c + newlib/libc/stdlib/mbrlen.c + newlib/libc/stdlib/mbrtowc.c + newlib/libc/stdlib/mbsinit.c + newlib/libc/stdlib/mbsrtowcs.c + newlib/libc/stdlib/wcrtomb.c + newlib/libc/stdlib/wcsrtombs.c + newlib/libc/stdlib/wctob.c + newlib/libm/math/s_sincos.c + newlib/libm/math/sf_sincos.c +Copyright: 2002 Thomas Fitzsimmons +License: Default-1 + +Files: newlib/libc/ctype/mkcaseconv + newlib/libc/ctype/mkcategories + newlib/libc/ctype/mkunidata + newlib/libc/string/mkunidata + newlib/libc/string/mkwide + newlib/libc/string/mkwidthA +Copyright: 2018 Thomas Wolff +License: Default-1 + +Files: newlib/libc/include/_newlib_version.h +Copyright: 2016 Jeff Johnston +License: Default-1 + +Files: newlib/libc/include/alloca.h +Copyright: 2000 Werner Almesberger +License: Default-1 + +Files: newlib/libc/include/arpa/inet.h + newlib/libc/include/machine/endian.h + newlib/libc/include/machine/param.h + newlib/libc/machine/arm/machine/param.h +Copyright: 2004 Jeff Johnston +License: Default-1 + +Files: newlib/libc/include/cpio.h + newlib/libm/complex/clog10.c + newlib/libm/complex/clog10f.c + newlib/libm/complex/clog10l.c +Copyright: 2016 Yaakov Selkowitz +License: Default-1 + +Files: newlib/libc/include/libgen.h + newlib/libc/include/sys/string.h + newlib/libc/time/gettzinfo.c +Copyright: 2005 Jeff Johnston +License: Default-1 + +Files: newlib/libc/include/limits.h + newlib/libc/include/machine/malloc.h + newlib/libc/include/machine/stdlib.h + newlib/libc/include/machine/termios.h + newlib/libc/include/sys/lock.h + newlib/libc/include/wctype.h + newlib/libc/stdlib/_Exit.c + newlib/libc/stdlib/a64l.c + newlib/libc/stdlib/l64a.c + newlib/libc/string/memccpy.c + newlib/libc/string/mempcpy.c + newlib/libc/string/strdup.c + newlib/libc/string/strerror_r.c + newlib/libc/string/strndup.c + newlib/libc/string/strnlen.c + newlib/libc/time/local.h + newlib/testsuite/newlib.wctype/tiswctype.c + newlib/testsuite/newlib.wctype/twctrans.c +Copyright: 2002 Jeff Johnston +License: Default-1 + +Files: newlib/libc/include/machine/_default_types.h + newlib/libc/machine/spu/creat.c + newlib/libc/machine/spu/sys/errno.h + newlib/libc/machine/spu/sys/sched.h + newlib/libc/machine/spu/sys/syscall.h + newlib/libc/machine/spu/sys/uio.h + newlib/libc/machine/spu/sys/utime.h +Copyright: 2007 Patrick Mansfield +License: Default-1 + +Files: newlib/libc/include/machine/_endian.h + newlib/libc/include/machine/_time.h + newlib/libc/include/memory.h +Copyright: 2016 Sebastian Huber +License: Default-1 + +Files: newlib/libc/include/machine/_types.h +Copyright: 2005 Ralf Corsepious +License: Default-1 + +Files: newlib/libc/include/machine/ansi.h +Copyright: 2001 Jeff Johnston +License: Default-1 + +Files: newlib/libc/include/ssp/stdlib.h + newlib/libc/include/ssp/wchar.h + newlib/libc/ssp/stack_protector.c + newlib/libc/string/wmempcpy.c +Copyright: 2017 Yaakov Selkowitz +License: Default-1 + +Files: newlib/libc/include/sys/_default_fcntl.h + newlib/libc/include/sys/custom_file.h + newlib/libc/machine/x86/machine/fastmath.h +Copyright: 2007 Jeff Johnston +License: Default-1 + +Files: newlib/libc/include/sys/dir.h +Copyright: 2010 Yaakov Selkowitz +License: Default-1 + +Files: newlib/libc/include/tar.h +Copyright: 2007 Ralf Corsepius +License: Default-1 + +Files: newlib/libc/machine/aarch64/asmdefs.h +Copyright: 2019-2023, Arm Limited. SPDX-License-Identifier: MIT +License: Default-1 + +Files: newlib/libc/machine/aarch64/memchr.S +Copyright: 2014-2022, Arm Limited. SPDX-License-Identifier: MIT +License: Default-1 + +Files: newlib/libc/machine/aarch64/memcmp.S +Copyright: 2013-2022, Arm Limited. SPDX-License-Identifier: MIT +License: Default-1 + +Files: newlib/libc/machine/aarch64/memcpy.S + newlib/libc/machine/aarch64/memset.S + newlib/libc/machine/aarch64/strcmp.S +Copyright: 2012-2022, Arm Limited. SPDX-License-Identifier: MIT +License: Default-1 + +Files: newlib/libc/machine/aarch64/memrchr-stub.c +Copyright: 2023 embedded brains GmbH & Co. KG +License: Default-1 + +Files: newlib/libc/machine/aarch64/memrchr.S +Copyright: 2020-2022, Arm Limited. SPDX-License-Identifier: MIT +License: Default-1 + +Files: newlib/libc/machine/aarch64/stpcpy.S +Copyright: 2020, Arm Limited. SPDX-License-Identifier: MIT +License: Default-1 + +Files: newlib/libc/machine/arm/setjmp.S +Copyright: 1997 Nick Clifton, Cygnus Solutions +License: Default-1 + +Files: newlib/libc/machine/cr16/setjmp.S + newlib/libc/machine/crx/setjmp.S +Copyright: 2004 National Semiconductor Corporation +License: Default-1 + +Files: newlib/libc/machine/frv/setjmp.S +Copyright: 2002 Dave Brolley +License: Default-1 + +Files: newlib/libc/machine/h8300/h8sx_strcpy.S +Copyright: 2003 Richard Sandiford +License: Default-1 + +Files: newlib/libc/machine/h8300/setarch.h +Copyright: 2003 Kazu Hirata +License: Default-1 + +Files: newlib/libc/machine/iq2000/setjmp.S +Copyright: 2003 Anthony Green +License: Default-1 + +Files: newlib/libc/machine/m68k/m68kasm.h +Copyright: 2008 Jeff Johnston +License: Default-1 + +Files: newlib/libc/machine/mep/setjmp.S +Copyright: 2003 DJ Delorie, Red Hat Inc. +License: Default-1 + +Files: newlib/libc/machine/microblaze/mb_endian.h +Copyright: 2013 Corinna Vinschen +License: Default-1 + +Files: newlib/libc/machine/mt/setjmp.S +Copyright: 2005 Aldy Hernandez +License: Default-1 + +Files: newlib/libc/machine/rx/memchr.S + newlib/libc/machine/rx/memcpy.S + newlib/libc/machine/rx/memmove.S + newlib/libc/machine/rx/mempcpy.S + newlib/libc/machine/rx/memset.S + newlib/libc/machine/rx/setjmp.S + newlib/libc/machine/rx/strcat.S + newlib/libc/machine/rx/strcmp.S + newlib/libc/machine/rx/strcpy.S + newlib/libc/machine/rx/strlen.S + newlib/libc/machine/rx/strncat.S + newlib/libc/machine/rx/strncmp.S + newlib/libc/machine/rx/strncpy.S +Copyright: 2009 Nick Clifton +License: Default-1 + +Files: newlib/libc/machine/sh/memcpy.S + newlib/libc/machine/sh/memset.S + newlib/libc/machine/sh/strcmp.S + newlib/libc/machine/sh/strcpy.S + newlib/libc/machine/sh/strlen.S +Copyright: 2002 SuperH Ltd. +License: Default-1 + +Files: newlib/libc/machine/sh/strncpy.S +Copyright: 2003 SuperH Ltd. +License: Default-1 + +Files: newlib/libc/machine/spu/assert.c + newlib/libc/machine/spu/sleep.c +Copyright: 2008 Patrick Mansfield +License: Default-1 + +Files: newlib/libc/machine/spu/usleep.c +Copyright: 2002 Jeff Johnston +License: Default-1 + +Files: newlib/libc/machine/spu/vfiprintf.c + newlib/libc/machine/spu/vfiscanf.c + newlib/libc/machine/spu/viprintf.c + newlib/libc/machine/spu/viscanf.c + newlib/libc/machine/spu/vsiprintf.c + newlib/libc/machine/spu/vsiscanf.c + newlib/libc/machine/spu/vsniprintf.c +Copyright: 2007 Kazunori Asayama +License: Default-1 + +Files: newlib/libc/machine/xstormy16/mallocr.c + newlib/libc/machine/xstormy16/tiny-malloc.c +Copyright: 2002 Geoffrey Keating +License: Default-1 + +Files: newlib/libc/misc/lock.c +Copyright: 2016 Thomas Preud'homme +License: Default-1 + +Files: newlib/libc/search/bsd_qsort_r.c + newlib/libc/search/qsort_r.c + newlib/libc/stdio/stdio_ext.c +Copyright: 2014 Yaakov Selkowitz +License: Default-1 + +Files: newlib/libc/signal/psignal.c +Copyright: 2002, 2011 Red Hat Inc. +License: Default-1 + +Files: newlib/libc/ssp/chk_fail.c +Copyright: 2017 Yaakov Selkowitz +License: Default-1 + +Files: newlib/libc/stdio/getdelim.c + newlib/libc/stdio/getline.c +Copyright: 2002, Red Hat Inc. - +License: Default-1 + +Files: newlib/libc/stdio/stdio_ext.h +Copyright: 2011 Yaakov Selkowitz +License: Default-1 + +Files: newlib/libc/stdio64/fdopen64.c +Copyright: 2003 Christopher Faylor +License: Default-1 + +Files: newlib/libc/stdlib/__atexit.c + newlib/libc/stdlib/__call_atexit.c + newlib/libc/stdlib/cxa_atexit.c + newlib/libc/stdlib/cxa_finalize.c +Copyright: 2004 Paul Brook +License: Default-1 + +Files: newlib/libc/stdlib/abort.c + newlib/libc/stdlib/abs.c + newlib/libc/stdlib/assert.c + newlib/libc/stdlib/assert_func.c + newlib/libc/stdlib/assert_no_arg.c + newlib/libc/stdlib/atexit.c + newlib/libc/stdlib/atexit.h + newlib/libc/stdlib/atof.c + newlib/libc/stdlib/atoff.c + newlib/libc/stdlib/atoi.c + newlib/libc/stdlib/atol.c + newlib/libc/stdlib/calloc.c + newlib/libc/stdlib/ecvtbuf.c + newlib/libc/stdlib/efgcvt.c + newlib/libc/stdlib/eprintf.c + newlib/libc/stdlib/exit.c + newlib/libc/stdlib/labs.c + newlib/libc/stdlib/local.h + newlib/libc/stdlib/mallocr.c + newlib/libc/stdlib/mbctype.h + newlib/libc/stdlib/mblen.c + newlib/libc/stdlib/mbstowcs.c + newlib/libc/stdlib/mbtowc.c + newlib/libc/stdlib/mbtowc_r.c + newlib/libc/stdlib/mstats.c + newlib/libc/stdlib/on_exit.c + newlib/libc/stdlib/rand.c + newlib/libc/stdlib/rand_r.c + newlib/libc/stdlib/srand.c + newlib/libc/stdlib/stdlib.tex + newlib/libc/stdlib/system.c + newlib/libc/stdlib/wcstombs.c + newlib/libc/stdlib/wctomb.c + newlib/libc/stdlib/wctomb_r.c +Copyright: 1990 Regents of the University of California. +License: Default-1 + +Files: newlib/libc/stdlib/getenv_r.c +Copyright: 1991 DJ Delorie. +License: Default-1 + +Files: newlib/libc/stdlib/itoa.c + newlib/libc/stdlib/utoa.c +Copyright: 2014 Corinna Vinschen +License: Default-1 + +Files: newlib/libc/stdlib/random.c + newlib/libc/stdlib/srandom.c +Copyright: 2016 Joel Sherrill +License: Default-1 + +Files: newlib/libc/string/memrchr.c +Copyright: 2012 Corinna Vinschen +License: Default-1 + +Files: newlib/libc/string/rawmemchr.c +Copyright: 2013 Yaakov Selkowitz +License: Default-1 + +Files: newlib/libc/string/stpcpy.c + newlib/libc/string/stpncpy.c + newlib/libc/string/wcpcpy.c + newlib/libc/string/wcpncpy.c + newlib/libc/string/wcsxfrm.c +Copyright: 2007 Corinna Vinschen +License: Default-1 + +Files: newlib/libc/string/strchrnul.c +Copyright: 2011 Corinna Vinschen +License: Default-1 + +Files: newlib/libc/string/strnstr.c +Copyright: 2017 Sichen Zhao <1473996754@qq.com> +License: Default-1 + +Files: newlib/libc/string/strsep.c +Copyright: 2002, Red Hat Inc. +License: Default-1 + +Files: newlib/libc/string/swab.c +Copyright: 2000 Alexandre Oliva +License: Default-1 + +Files: newlib/libc/string/uniset +Copyright: 2018 Markus Kuhn +License: Default-1 + +Files: newlib/libc/string/wcscoll.c + newlib/libc/string/wcswidth.c + newlib/libc/string/wcwidth.c +Copyright: 2003 Corinna Vinschen +License: Default-1 + +Files: newlib/libc/string/xpg_strerror_r.c +Copyright: 2011 Eric Blake +License: Default-1 + +Files: newlib/libc/time/month_lengths.c + newlib/libc/time/tzcalc_limits.c +Copyright: 2002 Arthur David Olson +License: Default-1 + +Files: newlib/libc/time/tzvars.c +Copyright: 2005 Tom Walsh +License: Default-1 + +Files: newlib/libc/time/wcsftime.c +Copyright: 2009 Craig Howland +License: Default-1 + +Files: newlib/libm/machine/x86/fenv.c +Copyright: 2010-2019 Red Hat, Inc. +License: Default-1 + +Files: zephyr/Kconfig +Copyright: 2021 Amazon.com, Inc. or its affiliates. SPDX-License-Identifier: Apache-2.0 +License: Default-1 + +Files: newlib/libc/include/fenv.h + newlib/libc/machine/riscv/asm.h + newlib/libc/machine/riscv/ieeefp.c + newlib/libc/machine/riscv/local.h + newlib/libc/machine/riscv/machine/fenv.h + newlib/libc/machine/riscv/memcpy.c + newlib/libc/machine/riscv/memset.S + newlib/libc/machine/riscv/setjmp.S + newlib/libc/machine/riscv/strcmp.S + newlib/libc/machine/riscv/strcpy.c + newlib/libc/machine/riscv/strlen.c +Copyright: 2017 SiFive Inc. +License: FreeBSD-1 + +Files: newlib/libc/machine/csky/setjmp.S +Copyright: 2020 C-SKY Microsystems +License: FreeBSD-1 + +Files: newlib/libc/machine/riscv/memcpy-asm.S + newlib/libc/machine/riscv/memmove-stub.c + newlib/libc/machine/riscv/memmove.S +Copyright: 2019 SiFive Inc. +License: FreeBSD-1 + +Files: test/printf-tests.c + test/testcases.c +Copyright: 2013 Bart Massey +License: GPL2-1 + +Files: newlib/libc/argz/argz_add.c + newlib/libc/argz/argz_add_sep.c + newlib/libc/argz/argz_append.c + newlib/libc/argz/argz_count.c + newlib/libc/argz/argz_create.c + newlib/libc/argz/argz_create_sep.c + newlib/libc/argz/argz_delete.c + newlib/libc/argz/argz_extract.c + newlib/libc/argz/argz_next.c + newlib/libc/argz/argz_replace.c + newlib/libc/argz/argz_stringify.c + newlib/libc/argz/buf_findstr.c + newlib/libc/argz/buf_findstr.h + newlib/libc/argz/envz_add.c + newlib/libc/argz/envz_entry.c + newlib/libc/argz/envz_get.c + newlib/libc/argz/envz_merge.c + newlib/libc/argz/envz_remove.c + newlib/libc/argz/envz_strip.c + newlib/libc/include/argz.h + newlib/libc/include/envz.h + newlib/libm/common/s_fdim.c + newlib/libm/common/s_fma.c + newlib/libm/common/s_fmax.c + newlib/libm/common/s_fmin.c + newlib/libm/common/s_signbit.c + newlib/libm/common/sf_fdim.c + newlib/libm/common/sf_fma.c + newlib/libm/common/sf_fmax.c + newlib/libm/common/sf_fmin.c + newlib/libm/machine/spu/sf_fpclassify.c + newlib/testsuite/config/default.exp + newlib/testsuite/include/check.h + newlib/testsuite/lib/checkoutput.exp + newlib/testsuite/lib/newlib.exp + newlib/testsuite/lib/passfail.exp + newlib/testsuite/newlib.elix/elix.exp + newlib/testsuite/newlib.elix/tmmap.c + newlib/testsuite/newlib.locale/UTF-8.c + newlib/testsuite/newlib.locale/UTF-8.exp + newlib/testsuite/newlib.locale/locale.exp + newlib/testsuite/newlib.search/hsearchtest.exp + newlib/testsuite/newlib.stdlib/atexit.c + newlib/testsuite/newlib.stdlib/atexit.exp + newlib/testsuite/newlib.string/string.exp + newlib/testsuite/newlib.string/tstring.c + newlib/testsuite/newlib.wctype/twctype.c + newlib/testsuite/newlib.wctype/wctype.exp +Copyright: 2002 Red Hat, Incorporated. +License: Other-1 + +Files: newlib/libc/argz/argz_insert.c +Copyright: 2002, 2005 Red Hat, Incorporated. +License: Other-1 + +Files: newlib/libc/include/inttypes.h + newlib/libc/include/stdint.h + newlib/libc/include/sys/_intsup.h + newlib/libc/include/sys/_stdint.h +Copyright: 2004, 2005 by Ralf Corsepius, Ulm/Germany. +License: Other-1 + +Files: newlib/libc/include/wordexp.h +Copyright: 2002, 2010 Red Hat, Incorporated. +License: Other-1 + +Files: newlib/libc/machine/x86/memchr-32.S + newlib/libc/machine/x86/memset-32.S + newlib/libc/machine/x86/strchr-32.S + newlib/libc/machine/x86/strlen-32.S +Copyright: 1998, 2002, 2008 Red Hat Inc. +License: Other-1 + +Files: newlib/libc/machine/x86/memcmp-32.S + newlib/libc/machine/x86/memcpy-32.S + newlib/libc/machine/x86/memmove-32.S + newlib/libm/machine/x86/f_atan2.S + newlib/libm/machine/x86/f_atan2f.S + newlib/libm/machine/x86/f_exp.c + newlib/libm/machine/x86/f_expf.c + newlib/libm/machine/x86/f_frexp.S + newlib/libm/machine/x86/f_frexpf.S + newlib/libm/machine/x86/f_ldexp.S + newlib/libm/machine/x86/f_ldexpf.S + newlib/libm/machine/x86/f_log.S + newlib/libm/machine/x86/f_log10.S + newlib/libm/machine/x86/f_log10f.S + newlib/libm/machine/x86/f_logf.S + newlib/libm/machine/x86/f_math.h + newlib/libm/machine/x86/f_pow.c + newlib/libm/machine/x86/f_powf.c + newlib/libm/machine/x86/f_tan.S + newlib/libm/machine/x86/f_tanf.S + newlib/libm/machine/x86/i386mach.h +Copyright: 1998, 2002 Red Hat Inc. +License: Other-1 + +Files: newlib/libc/machine/x86/memcpy-64.S + newlib/libc/machine/x86/memset-64.S + newlib/libc/machine/x86/setjmp-64.S + newlib/libc/machine/x86/x86_64mach.h +Copyright: 2007 Ellips BV. +License: Other-1 + +Files: newlib/libc/machine/xstormy16/setjmp.S +Copyright: 2001 Red Hat, Incorporated. +License: Other-1 + +Files: newlib/libc/posix/basename.c + newlib/libc/posix/dirname.c +Copyright: 2005 Shaun Jackman +License: Other-1 + +Files: newlib/libc/stdio/asniprintf.c + newlib/libc/stdio/asnprintf.c + newlib/libc/stdio/vasniprintf.c +Copyright: 2007, 2008 Eric Blake +License: Other-1 + +Files: newlib/libc/stdio/diprintf.c +Copyright: 2005, 2007 Shaun Jackman +License: Other-1 + +Files: newlib/libc/stdio/dprintf.c + newlib/libc/stdio/vdiprintf.c + newlib/libc/stdio/vdprintf.c +Copyright: 2005, 2007 Shaun Jackman +License: Other-1 + +Files: newlib/libc/stdio/fmemopen.c + newlib/libc/stdio/fopencookie.c + newlib/libc/stdio/funopen.c + newlib/libc/stdio/open_memstream.c + newlib/libc/stdio/vasnprintf.c +Copyright: 2007 Eric Blake +License: Other-1 + +Files: newlib/libc/stdio/fpurge.c +Copyright: 2009 Eric Blake +License: Other-1 + +Files: newlib/libc/string/gnu_basename.c +Copyright: 2015 Red Hat, Inc. +License: Other-1 + +Files: newlib/libc/string/str-two-way.h +Copyright: 2008, 2010 Eric Blake +License: Other-1 + +Files: newlib/libm/common/s_fpclassify.c + newlib/libm/common/sf_fpclassify.c + newlib/libm/ld/ld128/s_fpclassifyl.c + newlib/libm/ld/ld80/s_fpclassifyl.c +Copyright: 2002, 2007 Red Hat, Incorporated. +License: Other-1 + +Files: newlib/libm/complex/cabsl.c + newlib/libm/complex/cimagl.c + newlib/libm/complex/creall.c + newlib/libm/math/sl_hypot.c +Copyright: 2015 Red Hat, Incorporated. +License: Other-1 + +Files: newlib/libm/ld/common/s_sincosl.c +Copyright: 2013 Elliot Saba Developed at the University of Washington +License: Other-1 + +Files: newlib/testsuite/lib/flags.exp +Copyright: 2002, 2011 Red Hat, Incorporated. +License: Other-1 + +Files: newlib/testsuite/newlib.stdio/nulprintf.c +Copyright: 2014 ARM Ltd. +License: Other-1 + +Files: newlib/testsuite/newlib.stdio/stdio.exp + newlib/testsuite/newlib.stdio/swprintf.c +Copyright: 2011 ARM Ltd. +License: Other-1 + +Files: newlib/testsuite/newlib.stdlib/size_max.c + newlib/testsuite/newlib.stdlib/stdlib.exp +Copyright: 2008 CodeSourcery, Inc. +License: Other-1 + +Files: newlib/testsuite/newlib.time/time.exp +Copyright: 2022 jdoubleu. +License: Other-1 + +Files: newlib/libc/include/complex.h +Copyright: 2010 Matthias Drochner. +License: Other-2 + +Files: newlib/libc/string/explicit_bzero.c +Copyright: 2014 Ted Unangst +License: Other-2 + +Files: newlib/libc/include/elf.h + newlib/libc/string/strverscmp.c + newlib/libm/common/nexttowardf.c +Copyright: 2005-2014 Rich Felker, et al. +License: Other-3 + +Files: newlib/libc/include/ftw.h + newlib/libc/posix/ftw.c + newlib/libc/posix/nftw.c +Copyright: 2005-2020 Rich Felker, et al. +License: Other-3 + +Files: newlib/libc/machine/xtensa/machine/core-isa.h +Copyright: 1999-2010 Tensilica Inc. +License: Other-3 + +Files: newlib/libc/machine/xtensa/memcpy.S +Copyright: 2002-2008 Tensilica Inc. +License: Other-3 + +Files: newlib/libc/machine/xtensa/memset.S + newlib/libc/machine/xtensa/strcpy.S + newlib/libc/machine/xtensa/strlen.S + newlib/libc/machine/xtensa/strncpy.S +Copyright: 2001-2008 Tensilica Inc. +License: Other-3 + +Files: newlib/libc/machine/xtensa/setjmp.S +Copyright: 2001-2006 Tensilica Inc. +License: Other-3 + +Files: newlib/libc/machine/xtensa/strcmp.S +Copyright: 2001-20012 Tensilica Inc. +License: Other-3 + +Files: newlib/libc/machine/xtensa/xtensa-asm.h +Copyright: 2006 Tensilica Inc. +License: Other-3 + +Files: newlib/libc/sys/xtensa/include/xtensa/config/core-isa.h +Copyright: 1999-2023 Tensilica Inc. +License: Other-3 + +Files: test/libc-testsuite/basename.c + test/libc-testsuite/dirname.c + test/libc-testsuite/fnmatch.c + test/libc-testsuite/qsort.c + test/libc-testsuite/snprintf.c + test/libc-testsuite/sscanf.c + test/libc-testsuite/string.c + test/libc-testsuite/strtod.c + test/libc-testsuite/strtol.c +Copyright: 2005-2020 Rich Felker +License: Other-3 + +Files: newlib/libc/include/getopt.h +Copyright: 1997 Gregory Pietsch +License: Other-4 + +Files: newlib/libc/include/machine/_arc4random.h + newlib/libc/stdlib/arc4random.c + newlib/libc/stdlib/chacha_private.h +Copyright: 1996, David Mazieres + 2008, Damien Miller + 2013, Markus Friedl + 2014, Theo de Raadt +License: Other-5 + +Files: newlib/libc/stdlib/arc4random_uniform.c +Copyright: 2008, Damien Miller +License: Other-5 + +Files: newlib/libc/stdlib/reallocarray.c +Copyright: 2008 Otto Moerbeek +License: Other-5 + +Files: newlib/libc/string/strlcat.c + newlib/libc/string/strlcpy.c + newlib/libc/string/wcslcat.c + newlib/libc/string/wcslcpy.c +Copyright: 1998, 2015 Todd C. Miller +License: Other-5 + +Files: newlib/libc/string/timingsafe_bcmp.c +Copyright: 2010 Damien Miller. +License: Other-5 + +Files: newlib/libc/string/timingsafe_memcmp.c +Copyright: 2014 Google Inc. +License: Other-5 + +Files: newlib/libm/ld/common/polevll.c + newlib/libm/ld/ld128/e_expl.c + newlib/libm/ld/ld128/e_lgammal_r.c + newlib/libm/ld/ld128/e_log10l.c + newlib/libm/ld/ld128/e_log2l.c + newlib/libm/ld/ld128/e_logl.c + newlib/libm/ld/ld128/s_expm1l.c + newlib/libm/ld/ld128/s_log1pl.c + newlib/libm/ld/ld80/e_expl.c + newlib/libm/ld/ld80/e_log10l.c + newlib/libm/ld/ld80/e_log2l.c + newlib/libm/ld/ld80/e_logl.c + newlib/libm/ld/ld80/e_powl.c + newlib/libm/ld/ld80/e_tgammal.c + newlib/libm/ld/ld80/s_expm1l.c + newlib/libm/ld/ld80/s_log1pl.c +Copyright: 2008 Stephen L. Moshier +License: Other-5 + +Files: newlib/libm/ld/ld128/e_tgammal.c +Copyright: 2011 Martynas Venckus +License: Other-5 + +Files: newlib/libc/include/machine/fastmath.h + newlib/libc/include/machine/ieeefp.h + newlib/libc/include/machine/setjmp-dj.h + newlib/libc/include/machine/setjmp.h + newlib/libc/include/machine/time.h + newlib/libc/include/machine/types.h + newlib/libc/machine/x86/setjmp-32.S +Copyright: 1991 DJ Delorie +License: Other-6 + +Files: newlib/libc/include/sched.h + newlib/libc/include/sys/sched.h +Copyright: 1989-2010. On-Line Applications Research Corporation (OAR). +License: Other-7 + +Files: newlib/libc/include/sys/features.h +Copyright: 1989-2014. On-Line Applications Research Corporation (OAR). +License: Other-7 + +Files: newlib/libc/string/strsignal.c +Copyright: 2010, 2017. On-Line Applications Research Corporation (OAR). +License: Other-7 + +Files: newlib/libc/machine/amdgcn/abort.c + newlib/libc/machine/amdgcn/atexit.c + newlib/libc/machine/amdgcn/getreent.c + newlib/libc/machine/amdgcn/signal.c +Copyright: 2014-2017 Mentor Graphics. +License: Other-8 + +Files: newlib/libc/machine/amdgcn/exit-value.h + newlib/libc/machine/amdgcn/mlock.c +Copyright: 2017 Mentor Graphics. +License: Other-8 + +Files: newlib/libc/machine/bfin/longjmp.S + newlib/libc/machine/bfin/setjmp.S +Copyright: 2006 Analog Devices, Inc. +License: Other-8 + +Files: newlib/libc/machine/cr16/getenv.c + newlib/libc/machine/cr16/sys/libh.h + newlib/libc/machine/cr16/sys/syscall.h + newlib/libc/machine/crx/getenv.c + newlib/libc/machine/crx/sys/asm.h + newlib/libc/machine/crx/sys/libh.h + newlib/libc/machine/crx/sys/syscall.h +Copyright: 2004 National Semiconductor Corporation +License: Other-8 + +Files: newlib/libc/machine/cr16/sys/asm.h +Copyright: 2012 National Semiconductor Corporation +License: Other-8 + +Files: newlib/libc/machine/ft32/memcpy.S + newlib/libc/machine/ft32/memset.S + newlib/libc/machine/ft32/setjmp.S + newlib/libc/machine/ft32/stpcmp.S + newlib/libc/machine/ft32/strcmp.S + newlib/libc/machine/ft32/strcpy.S + newlib/libc/machine/ft32/strlen.S +Copyright: 2014 FTDI (support@ftdichip.com) +License: Other-8 + +Files: newlib/libc/machine/m68hc11/setjmp.S +Copyright: 1999, 2000, 2001, 2002 Stephane Carrez (stcarrez@nerim.fr) +License: Other-8 + +Files: newlib/libc/machine/m68k/memcpy.S + newlib/libc/machine/m68k/memset.S +Copyright: 2007 mocom software GmbH & Co KG) +License: Other-8 + +Files: newlib/libc/machine/mips/strlen.c +Copyright: 2001, 2002 Red Hat, Inc. +License: Other-8 + +Files: newlib/libc/machine/mips/strncpy.c +Copyright: 2001 Red Hat, Inc. +License: Other-8 + +Files: newlib/libc/machine/moxie/setjmp.S +Copyright: 2009, 2019 Anthony Green +License: Other-8 + +Files: newlib/libc/machine/nvptx/_exit.c + newlib/libc/machine/nvptx/abort.c + newlib/libc/machine/nvptx/calloc.c + newlib/libc/machine/nvptx/callocr.c + newlib/libc/machine/nvptx/mallocr.c + newlib/libc/machine/nvptx/misc.c + newlib/libc/machine/nvptx/reallocr.c + newlib/libc/machine/nvptx/write.c +Copyright: 2014-2018 Mentor Graphics. +License: Other-8 + +Files: newlib/libc/machine/nvptx/assert.c + newlib/libc/machine/nvptx/free.c + newlib/libc/machine/nvptx/malloc.c + newlib/libc/machine/nvptx/realloc.c +Copyright: 2016-2018 Mentor Graphics. +License: Other-8 + +Files: newlib/libc/machine/nvptx/printf.c + newlib/libc/machine/nvptx/putchar.c + newlib/libc/machine/nvptx/puts.c +Copyright: 2015-2018 Mentor Graphics. +License: Other-8 + +Files: newlib/libc/sys/amdgcn/lock.c +Copyright: 2024 BayLibre. +License: Other-8 + +Files: newlib/libc/machine/cris/include/pthread.h + newlib/libc/machine/cris/sys/errno.h + newlib/libc/machine/cris/sys/fcntl.h + newlib/libc/machine/cris/sys/signal.h +Copyright: 2001, 2004, 2005 Axis Communications AB. +License: Other-9 + +Files: newlib/libc/machine/cris/libcdtor.c +Copyright: 1999, 2000, 2003, 2004, 2005 Axis Communications. +License: Other-9 + +Files: newlib/libc/machine/cris/memcpy.c +Copyright: 1994-2005 Axis Communications. +License: Other-9 + +Files: newlib/libc/machine/cris/memmove.c +Copyright: 2000-2005 Axis Communications. +License: Other-9 + +Files: newlib/libc/machine/cris/memset.c +Copyright: 1999-2005 Axis Communications. +License: Other-9 + +Files: newlib/libc/machine/cris/setjmp.c +Copyright: 1993-2005 Axis Communications. +License: Other-9 + +Files: newlib/testsuite/newlib.string/memmove1.c +Copyright: 2005 Axis Communications. +License: Other-9 + +Files: newlib/libc/machine/hppa/memchr.S + newlib/libc/machine/hppa/memcmp.S + newlib/libc/machine/hppa/memcpy.S + newlib/libc/machine/hppa/memset.S + newlib/libc/machine/hppa/pcc_prefix.s + newlib/libc/machine/hppa/strcat.S + newlib/libc/machine/hppa/strcmp.S + newlib/libc/machine/hppa/strcpy.S + newlib/libc/machine/hppa/strlen.S + newlib/libc/machine/hppa/strncat.S + newlib/libc/machine/hppa/strncmp.S + newlib/libc/machine/hppa/strncpy.S +Copyright: 1986 HEWLETT-PACKARD COMPANY +License: Other-10 + +Files: newlib/libc/machine/i960/memccpy.S + newlib/libc/machine/i960/memccpy_ca.S + newlib/libc/machine/i960/memchr.S + newlib/libc/machine/i960/memchr_ca.S + newlib/libc/machine/i960/memcmp.S + newlib/libc/machine/i960/memcmp_ca.S + newlib/libc/machine/i960/memcpy.S + newlib/libc/machine/i960/memcpy_ca.S + newlib/libc/machine/i960/memset.S + newlib/libc/machine/i960/setjmp.S + newlib/libc/machine/i960/strchr.S + newlib/libc/machine/i960/strchr_ca.S + newlib/libc/machine/i960/strcmp.S + newlib/libc/machine/i960/strcmp_ca.S + newlib/libc/machine/i960/strcpy.S + newlib/libc/machine/i960/strcpy_ca.S + newlib/libc/machine/i960/strcspn.S + newlib/libc/machine/i960/strdup.S + newlib/libc/machine/i960/strlen.S + newlib/libc/machine/i960/strlen_ca.S + newlib/libc/machine/i960/strncat.S + newlib/libc/machine/i960/strncat_ca.S + newlib/libc/machine/i960/strncmp.S + newlib/libc/machine/i960/strncmp_ca.S + newlib/libc/machine/i960/strncpy.S + newlib/libc/machine/i960/strncpy_ca.S + newlib/libc/machine/i960/strpbrk.S + newlib/libc/machine/i960/strrchr.S +Copyright: 1993 Intel Corporation +License: Other-11 + +Files: newlib/libc/machine/msp430/setjmp.S +Copyright: 2013 Red Hat, Inc. +License: Other-12 + +Files: newlib/libc/machine/tic4x/setjmp.S +Copyright: 2004 Michael Hayes . +License: Other-13 + +Files: newlib/libc/machine/xc16x/putchar.c + newlib/libc/machine/xc16x/puts.c + newlib/libc/machine/xc16x/setjmp.S +Copyright: 2006 KPIT Cummins + 2009 Conny Marco Menebröcker +License: Other-14 + +Files: newlib/libc/machine/z8k/memcmp.S + newlib/libc/machine/z8k/memcpy.S + newlib/libc/machine/z8k/memmove.S + newlib/libc/machine/z8k/memset.S +Copyright: 2004 Christian Groessler +License: Other-15 + +Files: newlib/libc/misc/fini.c +Copyright: 2010 CodeSourcery, Inc. +License: Other-15 + +Files: newlib/libc/misc/init.c +Copyright: 2004 CodeSourcery, LLC +License: Other-15 + +Files: newlib/libc/reent/reent.c + newlib/libc/reent/reent.tex + newlib/libc/signal/signal.c + newlib/libc/signal/signal.tex + newlib/libc/string/bcmp.c + newlib/libc/string/bcopy.c + newlib/libc/string/bzero.c + newlib/libc/string/index.c + newlib/libc/string/memchr.c + newlib/libc/string/memcmp.c + newlib/libc/string/memcpy.c + newlib/libc/string/memmove.c + newlib/libc/string/memset.c + newlib/libc/string/rindex.c + newlib/libc/string/strcasecmp.c + newlib/libc/string/strcat.c + newlib/libc/string/strchr.c + newlib/libc/string/strcmp.c + newlib/libc/string/strcoll.c + newlib/libc/string/strcpy.c + newlib/libc/string/strcspn.c + newlib/libc/string/strerror.c + newlib/libc/string/strings.tex + newlib/libc/string/strlen.c + newlib/libc/string/strlwr.c + newlib/libc/string/strncasecmp.c + newlib/libc/string/strncat.c + newlib/libc/string/strncmp.c + newlib/libc/string/strncpy.c + newlib/libc/string/strpbrk.c + newlib/libc/string/strrchr.c + newlib/libc/string/strspn.c + newlib/libc/string/strtok.c + newlib/libc/string/strupr.c + newlib/libc/string/strxfrm.c + newlib/libc/time/asctime.c + newlib/libc/time/asctime_r.c + newlib/libc/time/clock.c + newlib/libc/time/ctime.c + newlib/libc/time/ctime_r.c + newlib/libc/time/difftime.c + newlib/libc/time/gmtime.c + newlib/libc/time/gmtime_r.c + newlib/libc/time/lcltime.c + newlib/libc/time/lcltime_buf.c + newlib/libc/time/lcltime_r.c + newlib/libc/time/mktime.c + newlib/libc/time/time.c + newlib/libc/time/time.tex + newlib/libm/test/acos_vec.c + newlib/libm/test/acosf_vec.c + newlib/libm/test/acosh_vec.c + newlib/libm/test/acoshf_vec.c + newlib/libm/test/asin_vec.c + newlib/libm/test/asinf_vec.c + newlib/libm/test/asinh_vec.c + newlib/libm/test/asinhf_vec.c + newlib/libm/test/atan2_vec.c + newlib/libm/test/atan2f_vec.c + newlib/libm/test/atan_vec.c + newlib/libm/test/atanf_vec.c + newlib/libm/test/atanh_vec.c + newlib/libm/test/atanhf_vec.c + newlib/libm/test/ceil_vec.c + newlib/libm/test/ceilf_vec.c + newlib/libm/test/conv_vec.c + newlib/libm/test/convert.c + newlib/libm/test/cos_vec.c + newlib/libm/test/cosf_vec.c + newlib/libm/test/cosh_vec.c + newlib/libm/test/coshf_vec.c + newlib/libm/test/dcvt.c + newlib/libm/test/dvec.c + newlib/libm/test/erf_vec.c + newlib/libm/test/erfc_vec.c + newlib/libm/test/erfcf_vec.c + newlib/libm/test/erff_vec.c + newlib/libm/test/exp_vec.c + newlib/libm/test/expf_vec.c + newlib/libm/test/fabs_vec.c + newlib/libm/test/fabsf_vec.c + newlib/libm/test/floor_vec.c + newlib/libm/test/floorf_vec.c + newlib/libm/test/fmod_vec.c + newlib/libm/test/fmodf_vec.c + newlib/libm/test/gamma_vec.c + newlib/libm/test/gammaf_vec.c + newlib/libm/test/hypot_vec.c + newlib/libm/test/hypotf_vec.c + newlib/libm/test/iconv_vec.c + newlib/libm/test/j0_vec.c + newlib/libm/test/j0f_vec.c + newlib/libm/test/j1_vec.c + newlib/libm/test/j1f_vec.c + newlib/libm/test/jn_vec.c + newlib/libm/test/jnf_vec.c + newlib/libm/test/log10_vec.c + newlib/libm/test/log10f_vec.c + newlib/libm/test/log1p_vec.c + newlib/libm/test/log1pf_vec.c + newlib/libm/test/log2_vec.c + newlib/libm/test/log2f_vec.c + newlib/libm/test/log_vec.c + newlib/libm/test/logf_vec.c + newlib/libm/test/math.c + newlib/libm/test/math2.c + newlib/libm/test/sin_vec.c + newlib/libm/test/sinf_vec.c + newlib/libm/test/sinh_vec.c + newlib/libm/test/sinhf_vec.c + newlib/libm/test/sprint_ivec.c + newlib/libm/test/sprint_vec.c + newlib/libm/test/sqrt_vec.c + newlib/libm/test/sqrtf_vec.c + newlib/libm/test/string.c + newlib/libm/test/tan_vec.c + newlib/libm/test/tanf_vec.c + newlib/libm/test/tanh_vec.c + newlib/libm/test/tanhf_vec.c + newlib/libm/test/test.c + newlib/libm/test/test.h + newlib/libm/test/test_ieee.c + newlib/libm/test/test_is.c + newlib/libm/test/trunc_vec.c + newlib/libm/test/truncf_vec.c + newlib/libm/test/y0_vec.c + newlib/libm/test/y0f_vec.c + newlib/libm/test/y1_vec.c + newlib/libm/test/y1f_vec.c + newlib/libm/test/yn_vec.c + newlib/libm/test/ynf_vec.c +Copyright: 1994 Cygnus Support. +License: Other-16 + +Files: newlib/libc/stdio/vfieeefp.h + newlib/libc/stdlib/dtoa.c + newlib/libc/stdlib/mprec.c + newlib/libc/stdlib/mprec.h +Copyright: 1991 AT&T. +License: Other-17 + +Files: newlib/libc/stdlib/drand48.c + newlib/libc/stdlib/erand48.c + newlib/libc/stdlib/jrand48.c + newlib/libc/stdlib/lcong48.c + newlib/libc/stdlib/lrand48.c + newlib/libc/stdlib/mrand48.c + newlib/libc/stdlib/nrand48.c + newlib/libc/stdlib/rand48.c + newlib/libc/stdlib/rand48.h + newlib/libc/stdlib/seed48.c + newlib/libc/stdlib/srand48.c +Copyright: 1993 Martin Birgmeier +License: Other-18 + +Files: newlib/libc/stdlib/gdtoa-gethex.c + newlib/libc/stdlib/gdtoa.h +Copyright: 1998 Lucent Technologies +License: Other-19 + +Files: newlib/libc/stdlib/gdtoa-hexnan.c +Copyright: 2000 Lucent Technologies +License: Other-19 + +Files: newlib/libc/stdlib/strtod.c + newlib/libc/stdlib/strtodg.c +Copyright: 1998-2001 Lucent Technologies +License: Other-19 + +Files: newlib/libc/stdlib/strtorx.c +Copyright: 1998, 2000 Lucent Technologies +License: Other-19 + +Files: newlib/libc/stdlib/getopt.c +Copyright: 1997 Gregory Pietsch +License: Other-20 + +Files: newlib/libc/stdlib/ldtoa.c +Copyright: 1984,2000 S.L. Moshier +License: Other-21 + +Files: newlib/libc/string/wcsnlen.c +Copyright: 2003, Artem B. Bityuckiy (dedekind@mail.ru). +License: Other-22 + +Files: newlib/libc/sys/xtensa/crt0.c +Copyright: 2003 Tensilica Inc. +License: Other-23 + +Files: newlib/libc/tinystdio/atod_ryu.c + newlib/libc/tinystdio/atof_ryu.c + newlib/libc/tinystdio/ryu/ryu_parse.h +Copyright: 2019 Ulf Adams +License: Other-24 + +Files: newlib/libc/tinystdio/dtoa_ryu.c + newlib/libc/tinystdio/ftoa_ryu.c + newlib/libc/tinystdio/ryu/common.h + newlib/libc/tinystdio/ryu/d2s_intrinsics.h + newlib/libc/tinystdio/ryu/digit_table.h + newlib/libc/tinystdio/ryu/f2s_intrinsics.h + newlib/libc/tinystdio/ryu/ryu.h + newlib/libc/tinystdio/ryu_divpow2.c + newlib/libc/tinystdio/ryu_log10.c + newlib/libc/tinystdio/ryu_log2pow5.c + newlib/libc/tinystdio/ryu_pow5bits.c + newlib/libc/tinystdio/ryu_table.c + newlib/libc/tinystdio/ryu_umul128.c +Copyright: 2018 Ulf Adams +License: Other-24 + +Files: newlib/libc/xdr/xdr_private.c + newlib/libc/xdr/xdr_private.h +Copyright: 2009 Charles S. Wilson +License: Other-25 + +Files: newlib/libm/common/fdlibm.h + newlib/libm/common/isgreater.c + newlib/libm/common/s_cbrt.c + newlib/libm/common/s_copysign.c + newlib/libm/common/s_exp10.c + newlib/libm/common/s_expm1.c + newlib/libm/common/s_finite.c + newlib/libm/common/s_ilogb.c + newlib/libm/common/s_infinity.c + newlib/libm/common/s_isinf.c + newlib/libm/common/s_isinfd.c + newlib/libm/common/s_isnan.c + newlib/libm/common/s_isnand.c + newlib/libm/common/s_llrint.c + newlib/libm/common/s_llround.c + newlib/libm/common/s_log1p.c + newlib/libm/common/s_log2.c + newlib/libm/common/s_logb.c + newlib/libm/common/s_lrint.c + newlib/libm/common/s_lround.c + newlib/libm/common/s_modf.c + newlib/libm/common/s_nan.c + newlib/libm/common/s_nearbyint.c + newlib/libm/common/s_nextafter.c + newlib/libm/common/s_pow10.c + newlib/libm/common/s_rint.c + newlib/libm/common/s_round.c + newlib/libm/common/s_scalbln.c + newlib/libm/common/s_scalbn.c + newlib/libm/common/s_trunc.c + newlib/libm/common/sf_cbrt.c + newlib/libm/common/sf_copysign.c + newlib/libm/common/sf_exp10.c + newlib/libm/common/sf_expm1.c + newlib/libm/common/sf_finite.c + newlib/libm/common/sf_ilogb.c + newlib/libm/common/sf_infinity.c + newlib/libm/common/sf_isinf.c + newlib/libm/common/sf_isinff.c + newlib/libm/common/sf_isnan.c + newlib/libm/common/sf_isnanf.c + newlib/libm/common/sf_llrint.c + newlib/libm/common/sf_llround.c + newlib/libm/common/sf_log1p.c + newlib/libm/common/sf_logb.c + newlib/libm/common/sf_lrint.c + newlib/libm/common/sf_lround.c + newlib/libm/common/sf_modf.c + newlib/libm/common/sf_nan.c + newlib/libm/common/sf_nearbyint.c + newlib/libm/common/sf_nextafter.c + newlib/libm/common/sf_pow10.c + newlib/libm/common/sf_rint.c + newlib/libm/common/sf_round.c + newlib/libm/common/sf_scalbln.c + newlib/libm/common/sf_scalbn.c + newlib/libm/common/sf_trunc.c + newlib/libm/ld/common/s_atanl.c + newlib/libm/ld/common/s_ilogbl.c + newlib/libm/ld/common/s_logbl.c + newlib/libm/ld/common/s_scalbnl.c + newlib/libm/ld/ld128/e_acoshl.c + newlib/libm/ld/ld128/e_atanhl.c + newlib/libm/ld/ld128/e_coshl.c + newlib/libm/ld/ld128/e_fmodl.c + newlib/libm/ld/ld128/e_hypotl.c + newlib/libm/ld/ld128/e_powl.c + newlib/libm/ld/ld128/e_sinhl.c + newlib/libm/ld/ld128/s_asinhl.c + newlib/libm/ld/ld128/s_ceill.c + newlib/libm/ld/ld128/s_copysignl.c + newlib/libm/ld/ld128/s_erfl.c + newlib/libm/ld/ld128/s_floorl.c + newlib/libm/ld/ld128/s_modfl.c + newlib/libm/ld/ld128/s_nextafterl.c + newlib/libm/ld/ld128/s_nexttoward.c + newlib/libm/ld/ld128/s_nexttowardf.c + newlib/libm/ld/ld128/s_tanhl.c + newlib/libm/ld/ld128/s_truncl.c + newlib/libm/ld/ld80/e_acoshl.c + newlib/libm/ld/ld80/e_atanhl.c + newlib/libm/ld/ld80/e_coshl.c + newlib/libm/ld/ld80/e_hypotl.c + newlib/libm/ld/ld80/e_lgammal_r.c + newlib/libm/ld/ld80/e_sinhl.c + newlib/libm/ld/ld80/s_asinhl.c + newlib/libm/ld/ld80/s_ceill.c + newlib/libm/ld/ld80/s_copysignl.c + newlib/libm/ld/ld80/s_erfl.c + newlib/libm/ld/ld80/s_floorl.c + newlib/libm/ld/ld80/s_modfl.c + newlib/libm/ld/ld80/s_nextafterl.c + newlib/libm/ld/ld80/s_nexttoward.c + newlib/libm/ld/ld80/s_nexttowardf.c + newlib/libm/ld/ld80/s_tanhl.c + newlib/libm/ld/ld80/s_truncl.c + newlib/libm/ld/math_private_openbsd.h + newlib/libm/math/k_cos.c + newlib/libm/math/k_rem_pio2.c + newlib/libm/math/k_sin.c + newlib/libm/math/k_tan.c + newlib/libm/math/kf_cos.c + newlib/libm/math/kf_rem_pio2.c + newlib/libm/math/kf_sin.c + newlib/libm/math/kf_tan.c + newlib/libm/math/math.tex + newlib/libm/math/s_acos.c + newlib/libm/math/s_acosh.c + newlib/libm/math/s_asin.c + newlib/libm/math/s_asinh.c + newlib/libm/math/s_atan.c + newlib/libm/math/s_atan2.c + newlib/libm/math/s_atanh.c + newlib/libm/math/s_ceil.c + newlib/libm/math/s_cos.c + newlib/libm/math/s_cosh.c + newlib/libm/math/s_drem.c + newlib/libm/math/s_erf.c + newlib/libm/math/s_exp.c + newlib/libm/math/s_exp2.c + newlib/libm/math/s_fabs.c + newlib/libm/math/s_floor.c + newlib/libm/math/s_fmod.c + newlib/libm/math/s_frexp.c + newlib/libm/math/s_gamma.c + newlib/libm/math/s_hypot.c + newlib/libm/math/s_j0.c + newlib/libm/math/s_j1.c + newlib/libm/math/s_jn.c + newlib/libm/math/s_log.c + newlib/libm/math/s_log10.c + newlib/libm/math/s_pow.c + newlib/libm/math/s_rem_pio2.c + newlib/libm/math/s_remainder.c + newlib/libm/math/s_scalb.c + newlib/libm/math/s_signif.c + newlib/libm/math/s_sin.c + newlib/libm/math/s_sinh.c + newlib/libm/math/s_sqrt.c + newlib/libm/math/s_tan.c + newlib/libm/math/s_tanh.c + newlib/libm/math/s_tgamma.c + newlib/libm/math/sf_acos.c + newlib/libm/math/sf_acosh.c + newlib/libm/math/sf_asin.c + newlib/libm/math/sf_asinh.c + newlib/libm/math/sf_atan.c + newlib/libm/math/sf_atan2.c + newlib/libm/math/sf_atanh.c + newlib/libm/math/sf_ceil.c + newlib/libm/math/sf_cos.c + newlib/libm/math/sf_cosh.c + newlib/libm/math/sf_drem.c + newlib/libm/math/sf_erf.c + newlib/libm/math/sf_exp.c + newlib/libm/math/sf_exp2.c + newlib/libm/math/sf_fabs.c + newlib/libm/math/sf_floor.c + newlib/libm/math/sf_fmod.c + newlib/libm/math/sf_frexp.c + newlib/libm/math/sf_gamma.c + newlib/libm/math/sf_hypot.c + newlib/libm/math/sf_j0.c + newlib/libm/math/sf_j1.c + newlib/libm/math/sf_jn.c + newlib/libm/math/sf_lgamma.c + newlib/libm/math/sf_log.c + newlib/libm/math/sf_log10.c + newlib/libm/math/sf_log2.c + newlib/libm/math/sf_pow.c + newlib/libm/math/sf_rem_pio2.c + newlib/libm/math/sf_remainder.c + newlib/libm/math/sf_scalb.c + newlib/libm/math/sf_signif.c + newlib/libm/math/sf_sin.c + newlib/libm/math/sf_sinh.c + newlib/libm/math/sf_sqrt.c + newlib/libm/math/sf_tan.c + newlib/libm/math/sf_tanh.c + newlib/libm/math/sf_tgamma.c + newlib/libm/math/sr_lgamma.c + newlib/libm/math/srf_lgamma.c +Copyright: 1993 Sun Microsystems, Inc. +License: Other-26 + +Files: newlib/libm/common/s_remquo.c + newlib/libm/common/sf_remquo.c + newlib/libm/ld/common/e_acosl.c + newlib/libm/ld/common/e_asinl.c + newlib/libm/ld/common/e_atan2l.c + newlib/libm/ld/common/e_lgammal.c + newlib/libm/ld/common/k_rem_pio2.c + newlib/libm/ld/ld128/s_remquol.c + newlib/libm/ld/ld80/e_fmodl.c + newlib/libm/ld/ld80/s_remquol.c +Copyright: 1993 Sun Microsystems, Inc. +License: Other-27 + +Files: newlib/libm/ld/common/s_cbrtl.c +Copyright: 1993 Sun Microsystems, Inc. +License: Other-28 + +Files: newlib/libm/ld/ld128/e_rem_pio2l.h + newlib/libm/ld/ld80/e_rem_pio2l.h +Copyright: 1993 Sun Microsystems, Inc. +License: Other-29 + +Files: newlib/libm/ld/ld128/k_cosl.c + newlib/libm/ld/ld128/k_sinl.c + newlib/libm/ld/ld80/k_cosl.c + newlib/libm/ld/ld80/k_sinl.c +Copyright: 1993 Sun Microsystems, Inc. +License: Other-30 + +Files: newlib/libm/ld/ld128/k_tanl.c + newlib/libm/ld/ld80/k_tanl.c +Copyright: 2004 Sun Microsystems, Inc. +License: Other-31 + +Files: newlib/libm/machine/x86/f_llrint.c + newlib/libm/machine/x86/f_llrintf.c + newlib/libm/machine/x86/f_llrintl.c + newlib/libm/machine/x86/f_lrint.c + newlib/libm/machine/x86/f_lrintf.c + newlib/libm/machine/x86/f_lrintl.c + newlib/libm/machine/x86/f_rint.c + newlib/libm/machine/x86/f_rintf.c + newlib/libm/machine/x86/f_rintl.c +Copyright: 2007 Dave Korn +License: Other-32 + +Files: newlib/libc/machine/d10v/setjmp.S + newlib/libc/machine/d30v/setjmp.S + newlib/libc/machine/fr30/setjmp.S + newlib/libc/machine/h8300/defines.h + newlib/libc/machine/h8300/memcpy.S + newlib/libc/machine/h8300/memset.S + newlib/libc/machine/h8300/reg_memcpy.S + newlib/libc/machine/h8300/reg_memset.S + newlib/libc/machine/h8300/setjmp.S + newlib/libc/machine/h8300/strcmp.S + newlib/libc/machine/h8500/cmpsi.c + newlib/libc/machine/h8500/divhi3.S + newlib/libc/machine/h8500/divsi3.c + newlib/libc/machine/h8500/mulhi3.c + newlib/libc/machine/h8500/mulsi3.c + newlib/libc/machine/h8500/negsi2.c + newlib/libc/machine/h8500/psi.S + newlib/libc/machine/h8500/setjmp.S + newlib/libc/machine/h8500/shifts.c + newlib/libc/machine/hppa/DEFS.h + newlib/libc/machine/m32r/setjmp.S + newlib/libc/machine/m68k/setjmp.S + newlib/libc/machine/m68k/strcpy.c + newlib/libc/machine/m68k/strlen.c + newlib/libc/machine/m88k/setjmp.S + newlib/libc/machine/mips/setjmp.S + newlib/libc/machine/mn10200/setjmp.S + newlib/libc/machine/mn10300/memchr.S + newlib/libc/machine/mn10300/memcmp.S + newlib/libc/machine/mn10300/memcpy.S + newlib/libc/machine/mn10300/memset.S + newlib/libc/machine/mn10300/setjmp.S + newlib/libc/machine/mn10300/strchr.S + newlib/libc/machine/mn10300/strcmp.S + newlib/libc/machine/mn10300/strcpy.S + newlib/libc/machine/mn10300/strlen.S + newlib/libc/machine/necv70/fastmath.S + newlib/libc/machine/necv70/machine/registers.h + newlib/libc/machine/necv70/setjmp.S + newlib/libc/machine/powerpc/setjmp.S + newlib/libc/machine/sh/asm.h + newlib/libc/machine/sh/setjmp.S + newlib/libc/machine/sparc/machine/sparclet.h + newlib/libc/machine/sparc/scan.c + newlib/libc/machine/sparc/shuffle.c + newlib/libc/machine/tic80/setjmp.S + newlib/libc/machine/v850/setjmp.S + newlib/libc/machine/w65/cmpsi.c + newlib/libc/machine/w65/divsi3.c + newlib/libc/machine/w65/lshrhi.S + newlib/libc/machine/w65/mulsi3.c + newlib/libc/machine/w65/sdivhi3.S + newlib/libc/machine/w65/smulhi3.S + newlib/libc/machine/w65/udivhi3.S + newlib/libc/machine/w65/umodhi3.S + newlib/libc/machine/x86/i386mach.h + newlib/libc/machine/z8k/args.h + newlib/libc/machine/z8k/setjmp.S + newlib/libc/stdio/asiprintf.c + newlib/libc/stdio/clearerr.c + newlib/libc/stdio/fclose.c + newlib/libc/stdio/fcloseall.c + newlib/libc/stdio/fdopen.c + newlib/libc/stdio/feof.c + newlib/libc/stdio/ferror.c + newlib/libc/stdio/fflush.c + newlib/libc/stdio/fgetc.c + newlib/libc/stdio/fgetpos.c + newlib/libc/stdio/fgets.c + newlib/libc/stdio/fileno.c + newlib/libc/stdio/findfp.c + newlib/libc/stdio/fiprintf.c + newlib/libc/stdio/fiscanf.c + newlib/libc/stdio/floatio.h + newlib/libc/stdio/fopen.c + newlib/libc/stdio/fprintf.c + newlib/libc/stdio/fputc.c + newlib/libc/stdio/fputs.c + newlib/libc/stdio/fscanf.c + newlib/libc/stdio/fseek.c + newlib/libc/stdio/fseeko.c + newlib/libc/stdio/fsetpos.c + newlib/libc/stdio/ftell.c + newlib/libc/stdio/ftello.c + newlib/libc/stdio/fvwrite.c + newlib/libc/stdio/fwalk.c + newlib/libc/stdio/fwprintf.c + newlib/libc/stdio/fwrite.c + newlib/libc/stdio/fwscanf.c + newlib/libc/stdio/getc.c + newlib/libc/stdio/getc_u.c + newlib/libc/stdio/getchar.c + newlib/libc/stdio/getchar_u.c + newlib/libc/stdio/gets.c + newlib/libc/stdio/getw.c + newlib/libc/stdio/iprintf.c + newlib/libc/stdio/iscanf.c + newlib/libc/stdio/nano-vfscanf.c + newlib/libc/stdio/nano-vfscanf_float.c + newlib/libc/stdio/nano-vfscanf_local.h + newlib/libc/stdio/perror.c + newlib/libc/stdio/printf.c + newlib/libc/stdio/putc.c + newlib/libc/stdio/putc_u.c + newlib/libc/stdio/putchar.c + newlib/libc/stdio/putchar_u.c + newlib/libc/stdio/puts.c + newlib/libc/stdio/putw.c + newlib/libc/stdio/refill.c + newlib/libc/stdio/remove.c + newlib/libc/stdio/rename.c + newlib/libc/stdio/rewind.c + newlib/libc/stdio/rget.c + newlib/libc/stdio/scanf.c + newlib/libc/stdio/sccl.c + newlib/libc/stdio/setbuf.c + newlib/libc/stdio/setbuffer.c + newlib/libc/stdio/setlinebuf.c + newlib/libc/stdio/setvbuf.c + newlib/libc/stdio/siprintf.c + newlib/libc/stdio/siscanf.c + newlib/libc/stdio/sprintf.c + newlib/libc/stdio/sscanf.c + newlib/libc/stdio/stdio.c + newlib/libc/stdio/stdio.h + newlib/libc/stdio/stdio.tex + newlib/libc/stdio/swscanf.c + newlib/libc/stdio/sys/stdio.h + newlib/libc/stdio/tmpfile.c + newlib/libc/stdio/tmpnam.c + newlib/libc/stdio/ungetc.c + newlib/libc/stdio/vfscanf.c + newlib/libc/stdio/vfwscanf.c + newlib/libc/stdio/viprintf.c + newlib/libc/stdio/viscanf.c + newlib/libc/stdio/vprintf.c + newlib/libc/stdio/vscanf.c + newlib/libc/stdio/vsiprintf.c + newlib/libc/stdio/vsiscanf.c + newlib/libc/stdio/vsnprintf.c + newlib/libc/stdio/vsprintf.c + newlib/libc/stdio/vsscanf.c + newlib/libc/stdio/vswprintf.c + newlib/libc/stdio/vswscanf.c + newlib/libc/stdio/vwprintf.c + newlib/libc/stdio/vwscanf.c + newlib/libc/stdio/wbuf.c + newlib/libc/stdio/wbufw.c + newlib/libc/stdio/wprintf.c + newlib/libc/stdio/wscanf.c + newlib/libc/stdio64/fgetpos64.c + newlib/libc/stdio64/fopen64.c + newlib/libc/stdio64/freopen64.c + newlib/libc/stdio64/fseeko64.c + newlib/libc/stdio64/fsetpos64.c + newlib/libc/stdio64/ftello64.c + newlib/libc/stdio64/stdio64.c + newlib/libc/stdio64/stdio64.tex + newlib/libc/stdio64/tmpfile64.c + newlib/libc/tinystdio/fgetpos.c + newlib/libc/tinystdio/fsetpos.c +Copyright: 1990 The Regents of the University of California. +License: UCB-1 + +Files: newlib/libc/stdio/asprintf.c + newlib/libc/stdio/fread.c + newlib/libc/stdio/freopen.c + newlib/libc/stdio/fvwrite.h + newlib/libc/stdio/local.h + newlib/libc/stdio/makebuf.c + newlib/libc/stdio/sniprintf.c + newlib/libc/stdio/snprintf.c + newlib/libc/stdio/swprintf.c + newlib/libc/stdio/vasiprintf.c + newlib/libc/stdio/vasprintf.c + newlib/libc/stdio/vsniprintf.c + newlib/libc/stdio/wsetup.c +Copyright: 1990, 2007 The Regents of the University of California. +License: UCB-1 + +Files: newlib/libc/stdio/flags.c + newlib/libc/tinystdio/sflags.c +Copyright: 1990 Regents of the University of California. +License: UCB-1 + +Files: newlib/libc/stdio/mktemp.c + newlib/libc/stdlib/setenv.c + newlib/libc/tinystdio/mktemp.c +Copyright: 1987 Regents of the University of California. +License: UCB-2 + +Files: newlib/libc/stdlib/getenv.c +Copyright: 1987, 2000 Regents of the University of California. +License: UCB-2 + +Files: newlib/libc/stdlib/putenv.c +Copyright: 1988 The Regents of the University of California. +License: UCB-2 + +License: AGPL3-1 + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + . + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + . + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + +License: BSD2-1 + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + . + THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + +License: BSD2-2 + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + . + THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + +License: BSD2-3 + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + . + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + . + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License: BSD2-4 + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + . + THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + +License: BSD2-5 + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + . + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License: BSD2-6 + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + . + THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + +License: BSD2-7 + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + . + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + +License: BSD2-8 + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + . + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + . + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation and/or + other materials provided with the distribution. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License: BSD2-9 + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + . + THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + +License: BSD2-10 + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + . + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + . + 2. Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL + TENSILICA INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + OF THE POSSIBILITY OF SUCH DAMAGE. + +License: BSD2-11 + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + . + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + +License: BSD2-12 + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + +License: BSD2-13 + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + . + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + . + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL TENSILICA + INCORPORATED BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License: BSD2-14 + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice unmodified, this list of conditions, and the following + disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + . + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License: BSD2-15 + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + . + THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + +License: BSD3-1 + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + . + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + . + 2. Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + . + 3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + OF THE POSSIBILITY OF SUCH DAMAGE. + +License: BSD3-2 + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + +License: BSD3-3 + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + . + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + . + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + . + The name of Red Hat Incorporated may not be used to endorse + or promote products derived from this software without specific + prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License: BSD3-4 + c) UNIX System Laboratories, Inc. + All or some portions of this file are derived from material licensed + to the University of California by American Telephone and Telegraph + Co. or Unix System Laboratories, Inc. and are reproduced herein with + the permission of UNIX System Laboratories, Inc. + . + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + +License: BSD3-5 + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + +License: BSD3-6 + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + Neither the name of Sun Microsystems, Inc. nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + +License: BSD3-7 + c) UNIX System Laboratories, Inc. + All or some portions of this file are derived from material licensed + to the University of California by American Telephone and Telegraph + Co. or Unix System Laboratories, Inc. and are reproduced herein with + the permission of UNIX System Laboratories, Inc. + . + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + +License: BSD3-8 + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. The name of the company may not be used to endorse or promote + products derived from this software without specific prior written + permission. + . + THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED + WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License: BSD3-9 + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + Neither the name of the Linaro nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License: BSD3-10 + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + Neither the name of the company nor the names of its contributors + may be used to endorse or promote products derived from this + software without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License: BSD3-11 + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + . + 1) Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + . + 2) Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + . + 3) Neither the name of the Synopsys, Inc., nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + +License: BSD3-12 + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + . + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + . + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + . + Neither the name of Linaro Limited nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License: BSD3-13 + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + . + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + . + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + . + Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + +License: BSD3-14 + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + Neither the name of Adapteva nor the names of its contributors may be + used to endorse or promote products derived from this software without + specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + +License: BSD3-15 + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + . + 1. Redistributions source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + . + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + . + 3. Neither the name of Xilinx nor the names of its contributors may be + used to endorse or promote products derived from this software without + specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS + IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License: BSD3-16 + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + . + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + Redistributions in binary form must reproduce the above + copyright + notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with + the distribution. + Neither the name of MIPS Technologies Inc. nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License: BSD3-17 + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. Neither the name of the MIPS Technologies, Inc., nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE MIPS TECHNOLOGIES, INC. ``AS IS'' AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE MIPS TECHNOLOGIES, INC. BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + +License: BSD3-18 + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. Neither the name of the MIPS Technologies, Inc., nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY IMAGINATION TECHNOLOGIES LIMITED ``AS IS'' AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL IMAGINATION TECHNOLOGIES LIMITED BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + +License: BSD3-19 + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + . + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + . + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + . + The name of the company may not be used to endorse or promote + products derived from this software without specific prior written + permission. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License: BSD3-20 + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + . + o Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + o Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + o Neither the name of Altera Corporation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY ALTERA CORPORATION, THE COPYRIGHT HOLDER, + AND ITS CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL + THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR + TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License: BSD3-21 + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + . + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + . + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + . + Neither the names of the copyright holders nor the names of their + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + +License: BSD3-22 + This software was developed by the Computer Systems Engineering group + at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and + contributed to Berkeley. + . + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + +License: BSD3-23 + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + . + Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + Neither the name of IBM nor the names of its contributors may be + used to endorse or promote products derived from this software without + specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + +License: BSD3-24 + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + . + Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + Neither the names of Toshiba nor the names of its + contributors may be used to endorse or promote products derived from this + software without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + +License: BSD3-25 + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + . + Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + Neither the names of the copyright holders nor the names of their + contributors may be used to endorse or promote products derived from this + software without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + +License: BSD3-26 + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + . + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + . + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + . + Neither the name of Texas Instruments Incorporated nor the names + of its contributors may be used to endorse or promote products + derived from this software without specific prior written + permission. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License: BSD3-27 + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + . + Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + Neither the name of Rolls-Royce Controls and Data Services Limited nor + the names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE. + +License: BSD3-28 + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License: BSD3-29 + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL + THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License: BSD3-30 + SPDX-License-Identifier: BSD-3-Clause + . + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. The name of the company may not be used to endorse or promote + products derived from this software without specific prior written + permission. + . + THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED + WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License: BSD3-31 + Portions of this software were developed by David Chisnall + under sponsorship from the FreeBSD Foundation. + . + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + +License: BSD3-32 + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + +License: BSD3-33 + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + . + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + . + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + . + 3. Neither the name of KTH nor the names of its contributors may be + used to endorse or promote products derived from this software without + specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY KTH AND ITS CONTRIBUTORS ``AS IS'' AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL KTH OR ITS CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License: BSD3-34 + Rewritten in C by Soren Kuula + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + +License: BSD3-35 + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + Neither the name of Mentor Graphics nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY CODESOURCERY, INC. ``AS IS'' AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL CODESOURCERY BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License: BSD3-36 + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer + in this position and unchanged. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License: BSD3-37 + Redistribution and use in source and binary forms, with or + without modification, are permitted provided that the + following conditions are met: + . + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + . + Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials + provided with the distribution. + . + Neither the name of IBM Corporation nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior written + permission. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License: Default-1 + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + . + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + . + 2. Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + . + 3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + OF THE POSSIBILITY OF SUCH DAMAGE. + +License: FreeBSD-1 + This copyrighted material is made available to anyone wishing to use, + modify, copy, or redistribute it subject to the terms and conditions + of the FreeBSD License. This program is distributed in the hope that + it will be useful, but WITHOUT ANY WARRANTY expressed or implied, + including the implied warranties of MERCHANTABILITY or FITNESS FOR + A PARTICULAR PURPOSE. A copy of this license is available at + http://www.opensource.org/licenses. + +License: GPL2-1 + This program is licensed under the GPL version 2 or later. + Please see the file COPYING.GPL2 in this distribution for + license terms. + +License: Other-1 + Permission to use, copy, modify, and distribute this software + is freely granted, provided that this notice is preserved. + +License: Other-2 + Public domain. + +License: Other-3 + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + . + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + . + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +License: Other-4 + This file and the accompanying getopt.c implementation file are hereby + placed in the public domain without restrictions. Just give the author + credit, don't claim you wrote it or prevent anyone else from using it. + . + Gregory Pietsch's current e-mail address: + gpietsch@comcast.net + +License: Other-5 + Permission to use, copy, modify, and distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + . + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +License: Other-6 + Redistribution, modification, and use in source and binary forms is permitted + provided that the above copyright notice and following paragraph are + duplicated in all such forms. + . + This file is distributed WITHOUT ANY WARRANTY; without even the implied + warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +License: Other-7 + Permission to use, copy, modify, and distribute this software for any + purpose without fee is hereby granted, provided that this entire notice + is included in all copies of any software which is or includes a copy + or modification of this software. + . + THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED + WARRANTY. IN PARTICULAR, THE AUTHOR MAKES NO REPRESENTATION + OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS + SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. + +License: Other-8 + The authors hereby grant permission to use, copy, modify, distribute, + and license this software and its documentation for any purpose, provided + that existing copyright notices are retained in all copies and that this + notice is included verbatim in any distributions. No written agreement, + license, or royalty fee is required for any of the authorized uses. + Modifications to this software may be copyrighted by their authors + and need not follow the licensing terms described here, provided that + the new terms are clearly indicated on the first page of each file where + they apply. + +License: Other-9 + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + . + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + . + 2. Neither the name of Axis Communications nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY AXIS COMMUNICATIONS AND ITS CONTRIBUTORS + AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL AXIS + COMMUNICATIONS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + +License: Other-10 + To anyone who acknowledges that this file is provided "AS IS" + without any express or implied warranty: + permission to use, copy, modify, and distribute this file + for any purpose is hereby granted without fee, provided that + the above copyright notice and this notice appears in all + copies, and that the name of Hewlett-Packard Company not be + used in advertising or publicity pertaining to distribution + of the software without specific, written prior permission. + Hewlett-Packard Company makes no representations about the + suitability of this software for any purpose. + +License: Other-11 + Intel hereby grants you permission to copy, modify, and distribute this + software and its documentation. Intel grants this permission provided + that the above copyright notice appears in all copies and that both the + copyright notice and this permission notice appear in supporting + documentation. In addition, Intel grants this permission provided that + you prominently mark as "not part of the original" any modifications + made to this software or documentation, and that the name of Intel + Corporation not be used in advertising or publicity pertaining to + distribution of the software or the documentation without specific, + written prior permission. + . + Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR + IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY + +License: Other-12 + This copyrighted material is made available to anyone wishing to use, + modify, copy, or redistribute it subject to the terms and conditions + of the BSD License. This program is distributed in the hope that + it will be useful, but WITHOUT ANY WARRANTY expressed or implied, + including the implied warranties of MERCHANTABILITY or FITNESS FOR + A PARTICULAR PURPOSE. A copy of this license is available at + http://www.opensource.org/licenses. Any Red Hat trademarks that are + incorporated in the source code or documentation are not subject to + the BSD License and may only be used or replicated with the express + permission of Red Hat, Inc. + +License: Other-13 + The author hereby grant permission to use, copy, modify, distribute, + and license this software and its documentation for any purpose, provided + that existing copyright notices are retained in all copies and that this + notice is included verbatim in any distributions. No written agreement, + license, or royalty fee is required for any of the authorized uses. + Modifications to this software may be copyrighted by their authors + and need not follow the licensing terms described here, provided that + the new terms are clearly indicated on the first page of each file where + they apply. + +License: Other-14 + Redistribution and use in source and binary forms is permitted + provided that the above copyright notice and following paragraph are + duplicated in all such forms. + . + This file is distributed WITHOUT ANY WARRANTY; without even the implied + warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +License: Other-15 + Permission to use, copy, modify, and distribute this file + for any purpose is hereby granted without fee, provided that + the above copyright notice and this notice appears in all + copies. + . + This file is distributed WITHOUT ANY WARRANTY; without even the implied + warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +License: Other-16 + Redistribution and use in source and binary forms are permitted + provided that the above copyright notice and this paragraph are + duplicated in all such forms and that any documentation, + and/or other materials related to such + distribution and use acknowledge that the software was developed + at Cygnus Support, Inc. Cygnus Support, Inc. may not be used to + endorse or promote products derived from this software without + specific prior written permission. + THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +License: Other-17 + Permission to use, copy, modify, and distribute this software for any + purpose without fee is hereby granted, provided that this entire notice + is included in all copies of any software which is or includes a copy + or modification of this software and in all copies of the supporting + documentation for such software. + . + THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED + WARRANTY. IN PARTICULAR, NEITHER THE AUTHOR NOR AT&T MAKES ANY + REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY + OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. + +License: Other-18 + You may redistribute unmodified or modified versions of this source + code provided that the above copyright notice and this and the + following conditions are retained. + . + This software is provided ``as is'', and comes with no warranties + of any kind. I shall in no event be liable for anything that happens + to anyone/anything when using this software. + +License: Other-19 + Permission to use, copy, modify, and distribute this software and + its documentation for any purpose and without fee is hereby + granted, provided that the above copyright notice appear in all + copies and that both that the copyright notice and this + permission notice and warranty disclaimer appear in supporting + documentation, and that the name of Lucent or any of its entities + not be used in advertising or publicity pertaining to + distribution of the software without specific, written prior + permission. + . + LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. + IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY + SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, + ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF + THIS SOFTWARE. + +License: Other-20 + This file and the accompanying getopt.h header file are hereby placed in the + public domain without restrictions. Just give the author credit, don't + claim you wrote it or prevent anyone else from using it. + . + Gregory Pietsch's current e-mail address: + gpietsch@comcast.net + +License: Other-21 + Permission to use, copy, modify, and distribute this software for any + purpose without fee is hereby granted, provided that this entire notice + is included in all copies of any software which is or includes a copy + or modification of this software and in all copies of the supporting + documentation for such software. + . + THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED + WARRANTY. IN PARTICULAR, THE AUTHOR MAKES NO REPRESENTATION + OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS + SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. + +License: Other-22 + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the above copyright notice, + this condition statement, and the following disclaimer are retained + in any redistributions of the source code. + . + THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + +License: Other-23 + These coded instructions, statements, and computer programs are the + copyrighted works and confidential proprietary information of Tensilica Inc. + +License: Other-24 + The contents of this file may be used under the terms of the Apache License, + Version 2.0. + . + See accompanying file LICENSE-Apache or copy at + http://www.apache.org/licenses/LICENSE-2.0) + . + Alternatively, the contents of this file may be used under the terms of + the Boost Software License, Version 1.0. + See accompanying file LICENSE-Boost or copy at + https://www.boost.org/LICENSE_1_0.txt) + . + Unless required by applicable law or agreed to in writing, this software + is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. + +License: Other-25 + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + . + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + . + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR + OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + +License: Other-26 + Developed at SunPro, a Sun Microsystems, Inc. business. + Permission to use, copy, modify, and distribute this + software is freely granted, provided that this notice + is preserved. + +License: Other-27 + Developed at SunSoft, a Sun Microsystems, Inc. business. + Permission to use, copy, modify, and distribute this + software is freely granted, provided that this notice + is preserved. + +License: Other-28 + Copyright (c) 2009-2011, Bruce D. Evans, Steven G. Kargl, David Schultz. + . + Developed at SunPro, a Sun Microsystems, Inc. business. + Permission to use, copy, modify, and distribute this + software is freely granted, provided that this notice + is preserved. + . + . + The argument reduction and testing for exceptional cases was + written by Steven G. Kargl with input from Bruce D. Evans + and David A. Schultz. + +License: Other-29 + Copyright (c) 2008 Steven G. Kargl, David Schultz, Bruce D. Evans. + . + Developed at SunSoft, a Sun Microsystems, Inc. business. + Permission to use, copy, modify, and distribute this + software is freely granted, provided that this notice + is preserved. + . + . + Optimized by Bruce D. Evans. + +License: Other-30 + Copyright (c) 2008 Steven G. Kargl, David Schultz, Bruce D. Evans. + . + Developed at SunSoft, a Sun Microsystems, Inc. business. + Permission to use, copy, modify, and distribute this + software is freely granted, provided that this notice + is preserved. + +License: Other-31 + Copyright (c) 2008 Steven G. Kargl, David Schultz, Bruce D. Evans. + . + Permission to use, copy, modify, and distribute this + software is freely granted, provided that this notice + is preserved. + +License: Other-32 + x87 FP implementation contributed to Newlib by + Dave Korn, November 2007. This file is placed in the + public domain. Permission to use, copy, modify, and + distribute this software is freely granted. + +License: UCB-1 + Redistribution and use in source and binary forms are permitted + provided that the above copyright notice and this paragraph are + duplicated in all such forms and that any documentation, + and/or other materials related to such + distribution and use acknowledge that the software was developed + by the University of California, Berkeley. The name of the + University may not be used to endorse or promote products derived + from this software without specific prior written permission. + THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +License: UCB-2 + Redistribution and use in source and binary forms are permitted + provided that: (1) source distributions retain this entire copyright + notice and comment, and (2) distributions including binaries display + the following acknowledgement: ``This product includes software + developed by the University of California, Berkeley and its contributors'' + in the documentation or other materials provided with the distribution. + Neither the name of the University nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. diff --git a/components/newlib/Kconfig b/components/newlib/Kconfig index 78eaa4737612..23f6b6a9e8b0 100644 --- a/components/newlib/Kconfig +++ b/components/newlib/Kconfig @@ -1,8 +1,19 @@ -menu "Newlib" +menu "LibC" - choice NEWLIB_STDOUT_LINE_ENDING + choice LIBC + prompt "LibC to build application with" + default LIBC_NEWLIB + + config LIBC_NEWLIB + bool "NewLib" + config LIBC_PICOLIBC + bool "Picolibc (EXPERIMENTAL)" + depends on !IDF_TOOLCHAIN_CLANG && IDF_EXPERIMENTAL_FEATURES + endchoice + + choice LIBC_STDOUT_LINE_ENDING prompt "Line ending for console output" - default NEWLIB_STDOUT_LINE_ENDING_CRLF + default LIBC_STDOUT_LINE_ENDING_CRLF depends on VFS_SUPPORT_IO help This option allows configuring the desired line endings sent to console @@ -17,17 +28,17 @@ menu "Newlib" This option doesn't affect behavior of the UART driver (drivers/uart.h). - config NEWLIB_STDOUT_LINE_ENDING_CRLF + config LIBC_STDOUT_LINE_ENDING_CRLF bool "CRLF" - config NEWLIB_STDOUT_LINE_ENDING_LF + config LIBC_STDOUT_LINE_ENDING_LF bool "LF" - config NEWLIB_STDOUT_LINE_ENDING_CR + config LIBC_STDOUT_LINE_ENDING_CR bool "CR" endchoice - choice NEWLIB_STDIN_LINE_ENDING + choice LIBC_STDIN_LINE_ENDING prompt "Line ending for console input" - default NEWLIB_STDIN_LINE_ENDING_CR + default LIBC_STDIN_LINE_ENDING_CR depends on VFS_SUPPORT_IO help This option allows configuring which input sequence on console produces @@ -42,17 +53,18 @@ menu "Newlib" This option doesn't affect behavior of the UART driver (drivers/uart.h). - config NEWLIB_STDIN_LINE_ENDING_CRLF + config LIBC_STDIN_LINE_ENDING_CRLF bool "CRLF" - config NEWLIB_STDIN_LINE_ENDING_LF + config LIBC_STDIN_LINE_ENDING_LF bool "LF" - config NEWLIB_STDIN_LINE_ENDING_CR + config LIBC_STDIN_LINE_ENDING_CR bool "CR" endchoice - config NEWLIB_NANO_FORMAT + config LIBC_NEWLIB_NANO_FORMAT bool "Enable 'nano' formatting options for printf/scanf family" default y if IDF_TARGET_ESP32C2 + depends on LIBC_NEWLIB help In most chips the ROM contains parts of newlib C library, including printf/scanf family of functions. These functions have been compiled with so-called "nano" @@ -76,9 +88,9 @@ menu "Newlib" If you need 64-bit integer formatting support or C99 features, keep this option disabled. - choice NEWLIB_TIME_SYSCALL + choice LIBC_TIME_SYSCALL prompt "Timers used for gettimeofday function" - default NEWLIB_TIME_SYSCALL_USE_RTC_HRT + default LIBC_TIME_SYSCALL_USE_RTC_HRT help This setting defines which hardware timers are used to implement 'gettimeofday' and 'time' functions in C library. @@ -104,22 +116,22 @@ menu "Newlib" - When RTC is used for timekeeping, two RTC_STORE registers are used to keep time in deep sleep mode. - config NEWLIB_TIME_SYSCALL_USE_RTC_HRT + config LIBC_TIME_SYSCALL_USE_RTC_HRT bool "RTC and high-resolution timer" select ESP_TIME_FUNCS_USE_RTC_TIMER select ESP_TIME_FUNCS_USE_ESP_TIMER - config NEWLIB_TIME_SYSCALL_USE_RTC + config LIBC_TIME_SYSCALL_USE_RTC bool "RTC" select ESP_TIME_FUNCS_USE_RTC_TIMER - config NEWLIB_TIME_SYSCALL_USE_HRT + config LIBC_TIME_SYSCALL_USE_HRT bool "High-resolution timer" select ESP_TIME_FUNCS_USE_ESP_TIMER - config NEWLIB_TIME_SYSCALL_USE_NONE + config LIBC_TIME_SYSCALL_USE_NONE bool "None" select ESP_TIME_FUNCS_USE_NONE endchoice -endmenu # Newlib +endmenu # LibC config STDATOMIC_S32C1I_SPIRAM_WORKAROUND bool diff --git a/components/newlib/platform_include/endian.h b/components/newlib/platform_include/endian.h index 5671d9013d5c..3bb2dc7114c3 100644 --- a/components/newlib/platform_include/endian.h +++ b/components/newlib/platform_include/endian.h @@ -41,6 +41,7 @@ #pragma once +#include #include /* @@ -65,6 +66,7 @@ extern "C" { * Host to big endian, host to little endian, big endian to host, and little * endian to host byte order functions as detailed in byteorder(9). */ +#if CONFIG_LIBC_NEWLIB #if _BYTE_ORDER == _LITTLE_ENDIAN #define htobe16(x) bswap16((x)) #define htobe32(x) bswap32((x)) @@ -94,6 +96,7 @@ extern "C" { #define le32toh(x) bswap32((x)) #define le64toh(x) bswap64((x)) #endif /* _BYTE_ORDER == _LITTLE_ENDIAN */ +#endif /* CONFIG_LIBC_NEWLIB */ /* Alignment-agnostic encode/decode bytestream to/from little/big endian. */ diff --git a/components/newlib/platform_include/esp_newlib.h b/components/newlib/platform_include/esp_newlib.h index 23da9f2d6b3f..84bf780867b5 100644 --- a/components/newlib/platform_include/esp_newlib.h +++ b/components/newlib/platform_include/esp_newlib.h @@ -3,7 +3,7 @@ * * SPDX-License-Identifier: Apache-2.0 */ - +/* TODO IDF-11226 rename this file to esp_libc.h */ #pragma once #include @@ -12,18 +12,17 @@ extern "C" { #endif -/* - * Initialize newlib time functions - */ -void esp_newlib_time_init(void); - /** - * Replacement for newlib's _REENT_INIT_PTR and __sinit. + * Function which sets up newlib in ROM for use with ESP-IDF * - * Called from startup code and FreeRTOS, not intended to be called from - * application code. + * Includes defining the syscall table, setting up any common locks, etc. + * + * Called from the startup code, not intended to be called from application + * code. */ -void esp_reent_init(struct _reent* r); +void esp_libc_init(void); + +void esp_setup_syscall_table(void) __attribute__((deprecated("Please call esp_libc_init() in newer code"))); /** * Postponed _GLOBAL_REENT stdio FPs initialization. @@ -34,24 +33,28 @@ void esp_reent_init(struct _reent* r); * application code. * */ -void esp_newlib_init_global_stdio(const char* stdio_dev); +#if CONFIG_VFS_SUPPORT_IO +void esp_libc_init_global_stdio(const char *stdio_dev); +#else +void esp_libc_init_global_stdio(void); +#endif -/** - * Clean up some of lazily allocated buffers in REENT structures. - */ -void esp_reent_cleanup(void); +void esp_libc_time_init(void); +#if CONFIG_LIBC_NEWLIB /** - * Function which sets up newlib in ROM for use with ESP-IDF - * - * Includes defining the syscall table, setting up any common locks, etc. + * Replacement for newlib's _REENT_INIT_PTR and __sinit. * - * Called from the startup code, not intended to be called from application - * code. + * Called from startup code and FreeRTOS, not intended to be called from + * application code. */ -void esp_newlib_init(void); +void esp_reent_init(struct _reent* r); +#endif -void esp_setup_syscall_table(void) __attribute__((deprecated("Please call esp_newlib_init() in newer code"))); +/** + * Clean up some of lazily allocated buffers in REENT structures. + */ +void esp_reent_cleanup(void); /** * Update current microsecond time from RTC @@ -67,9 +70,14 @@ void esp_sync_timekeeping_timers(void); #define esp_sync_counters_rtc_and_frc esp_sync_timekeeping_timers /** - * Initialize newlib static locks + * Initialize libc static locks */ -void esp_newlib_locks_init(void); +void esp_libc_locks_init(void); + +/* TODO IDF-11226 */ +void esp_newlib_time_init(void) __attribute__((deprecated("Please use esp_libc_time_init instead"))); +void esp_newlib_init(void) __attribute__((deprecated("Please use esp_libc_init instead"))); +void esp_newlib_locks_init(void) __attribute__((deprecated("Please use esp_libc_locks_init instead"))); #ifdef __cplusplus } diff --git a/components/newlib/platform_include/stdio.h b/components/newlib/platform_include/stdio.h new file mode 100644 index 000000000000..b49167fe5ff6 --- /dev/null +++ b/components/newlib/platform_include/stdio.h @@ -0,0 +1,14 @@ +/* + * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ +#pragma once + +#include "sdkconfig.h" + +#include_next + +#if CONFIG_LIBC_PICOLIBC +FILE *open_memstream(char **, size_t *); +#endif diff --git a/components/newlib/platform_include/stdio_ext.h b/components/newlib/platform_include/stdio_ext.h new file mode 100644 index 000000000000..8c49947ff3e7 --- /dev/null +++ b/components/newlib/platform_include/stdio_ext.h @@ -0,0 +1,14 @@ +/* + * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ +#pragma once + +#include "sdkconfig.h" + +#if CONFIG_LIBC_NEWLIB +#include_next +#else +#include +#endif diff --git a/components/newlib/platform_include/errno.h b/components/newlib/platform_include/sys/errno.h similarity index 83% rename from components/newlib/platform_include/errno.h rename to components/newlib/platform_include/sys/errno.h index cad5f16165b3..8701bf6b02e9 100644 --- a/components/newlib/platform_include/errno.h +++ b/components/newlib/platform_include/sys/errno.h @@ -7,7 +7,8 @@ #ifndef _ESP_PLATFORM_ERRNO_H_ #define _ESP_PLATFORM_ERRNO_H_ -#include_next "errno.h" +#include_next "sys/errno.h" +#include "sdkconfig.h" // // Possibly define some missing errors @@ -28,4 +29,9 @@ #define EAI_BADFLAGS 3 /* invalid value for ai_flags */ #endif +#if CONFIG_LIBC_PICOLIBC +#undef __errno_r +#define __errno_r(r) errno +#endif + #endif // _ESP_PLATFORM_ERRNO_H_ diff --git a/components/newlib/platform_include/sys/lock.h b/components/newlib/platform_include/sys/lock.h index 34d9126086f1..aed4d2c18329 100644 --- a/components/newlib/platform_include/sys/lock.h +++ b/components/newlib/platform_include/sys/lock.h @@ -8,6 +8,10 @@ #include_next #include "sdkconfig.h" +#ifdef __cplusplus +extern "C" { +#endif + #ifdef _RETARGETABLE_LOCKING /* Actual platfrom-specific definition of struct __lock. @@ -48,4 +52,12 @@ int _lock_try_acquire_recursive(_lock_t *plock); void _lock_release(_lock_t *plock); void _lock_release_recursive(_lock_t *plock); +#if CONFIG_LIBC_PICOLIBC +#define __lock_try_acquire(lock) _lock_try_acquire(&(lock)) +#define __lock_try_acquire_recursive(lock) _lock_try_acquire_recursive(&(lock)) +#endif // CONFIG_LIBC_PICOLIBC #endif // _RETARGETABLE_LOCKING + +#ifdef __cplusplus +} +#endif diff --git a/components/newlib/platform_include/sys/reent.h b/components/newlib/platform_include/sys/reent.h index 504f288ac211..993cdc3bca32 100644 --- a/components/newlib/platform_include/sys/reent.h +++ b/components/newlib/platform_include/sys/reent.h @@ -5,22 +5,37 @@ */ #pragma once +#include "sdkconfig.h" +#if CONFIG_LIBC_NEWLIB #define _REENT_BACKWARD_BINARY_COMPAT #define _REENT_SDIDINIT(_ptr) ((_ptr)->_reserved_0) #define _REENT_SGLUE(_ptr) (__sglue) #include_next +#endif // CONFIG_LIBC_NEWLIB #ifdef __cplusplus extern "C" { #endif +#if CONFIG_LIBC_NEWLIB + extern void __sinit(struct _reent *); extern struct _glue __sglue; extern struct _reent * _global_impure_ptr; +#else // CONFIG_LIBC_NEWLIB + +struct _reent {}; +#define __getreent() NULL + +int _system_r(struct _reent *r, const char *str); +int _raise_r(struct _reent *r, int sig); + +#endif // CONFIG_LIBC_NEWLIB + #ifdef __cplusplus } #endif diff --git a/components/newlib/priv_include/esp_time_impl.h b/components/newlib/priv_include/esp_time_impl.h index 7b4f0758d13d..61c32dff199e 100644 --- a/components/newlib/priv_include/esp_time_impl.h +++ b/components/newlib/priv_include/esp_time_impl.h @@ -5,8 +5,6 @@ */ #pragma once -void esp_time_impl_init(void); - uint64_t esp_time_impl_get_time(void); uint64_t esp_time_impl_get_time_since_boot(void); @@ -16,3 +14,7 @@ uint32_t esp_time_impl_get_time_resolution(void); void esp_time_impl_set_boot_time(uint64_t t); uint64_t esp_time_impl_get_boot_time(void); + +void esp_sync_timekeeping_timers(void); + +void esp_set_time_from_rtc(void); diff --git a/components/newlib/sdkconfig.rename b/components/newlib/sdkconfig.rename new file mode 100644 index 000000000000..d7ab49df4bb7 --- /dev/null +++ b/components/newlib/sdkconfig.rename @@ -0,0 +1,17 @@ +# sdkconfig replacement configurations for deprecated options formatted as +# CONFIG_DEPRECATED_OPTION CONFIG_NEW_OPTION + +CONFIG_NEWLIB_STDOUT_LINE_ENDING CONFIG_LIBC_STDOUT_LINE_ENDING +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF CONFIG_LIBC_STDOUT_LINE_ENDING_CRLF +CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF CONFIG_LIBC_STDOUT_LINE_ENDING_LF +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR CONFIG_LIBC_STDOUT_LINE_ENDING_CR +CONFIG_NEWLIB_STDIN_LINE_ENDING CONFIG_LIBC_STDIN_LINE_ENDING +CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF CONFIG_LIBC_STDIN_LINE_ENDING_CRLF +CONFIG_NEWLIB_STDIN_LINE_ENDING_LF CONFIG_LIBC_STDIN_LINE_ENDING_LF +CONFIG_NEWLIB_STDIN_LINE_ENDING_CR CONFIG_LIBC_STDIN_LINE_ENDING_CR +CONFIG_NEWLIB_NANO_FORMAT CONFIG_LIBC_NEWLIB_NANO_FORMAT +CONFIG_NEWLIB_TIME_SYSCALL CONFIG_LIBC_TIME_SYSCALL +CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC_HRT CONFIG_LIBC_TIME_SYSCALL_USE_RTC_HRT +CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC CONFIG_LIBC_TIME_SYSCALL_USE_RTC +CONFIG_NEWLIB_TIME_SYSCALL_USE_HRT CONFIG_LIBC_TIME_SYSCALL_USE_HRT +CONFIG_NEWLIB_TIME_SYSCALL_USE_NONE CONFIG_LIBC_TIME_SYSCALL_USE_NONE diff --git a/components/newlib/sdkconfig.rename.esp32 b/components/newlib/sdkconfig.rename.esp32 index b37b72f4011e..b655ceb8308b 100644 --- a/components/newlib/sdkconfig.rename.esp32 +++ b/components/newlib/sdkconfig.rename.esp32 @@ -1,9 +1,9 @@ # sdkconfig replacement configurations for deprecated options formatted as # CONFIG_DEPRECATED_OPTION CONFIG_NEW_OPTION -CONFIG_ESP32_TIME_SYSCALL_USE_RTC_HRT CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC_HRT -CONFIG_ESP32_TIME_SYSCALL_USE_RTC CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC -CONFIG_ESP32_TIME_SYSCALL_USE_HRT CONFIG_NEWLIB_TIME_SYSCALL_USE_HRT -CONFIG_ESP32_TIME_SYSCALL_USE_NONE CONFIG_NEWLIB_TIME_SYSCALL_USE_NONE -CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1 CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC_HRT -CONFIG_ESP32_TIME_SYSCALL_USE_FRC1 CONFIG_NEWLIB_TIME_SYSCALL_USE_HRT +CONFIG_ESP32_TIME_SYSCALL_USE_RTC_HRT CONFIG_LIBC_TIME_SYSCALL_USE_RTC_HRT +CONFIG_ESP32_TIME_SYSCALL_USE_RTC CONFIG_LIBC_TIME_SYSCALL_USE_RTC +CONFIG_ESP32_TIME_SYSCALL_USE_HRT CONFIG_LIBC_TIME_SYSCALL_USE_HRT +CONFIG_ESP32_TIME_SYSCALL_USE_NONE CONFIG_LIBC_TIME_SYSCALL_USE_NONE +CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1 CONFIG_LIBC_TIME_SYSCALL_USE_RTC_HRT +CONFIG_ESP32_TIME_SYSCALL_USE_FRC1 CONFIG_LIBC_TIME_SYSCALL_USE_HRT diff --git a/components/newlib/sdkconfig.rename.esp32c3 b/components/newlib/sdkconfig.rename.esp32c3 index 3449c4620d9b..fbb608b79ce2 100644 --- a/components/newlib/sdkconfig.rename.esp32c3 +++ b/components/newlib/sdkconfig.rename.esp32c3 @@ -1,7 +1,7 @@ # sdkconfig replacement configurations for deprecated options formatted as # CONFIG_DEPRECATED_OPTION CONFIG_NEW_OPTION -CONFIG_ESP32C3_TIME_SYSCALL_USE_RTC_SYSTIMER CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC_HRT -CONFIG_ESP32C3_TIME_SYSCALL_USE_RTC CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC -CONFIG_ESP32C3_TIME_SYSCALL_USE_SYSTIMER CONFIG_NEWLIB_TIME_SYSCALL_USE_HRT -CONFIG_ESP32C3_TIME_SYSCALL_USE_NONE CONFIG_NEWLIB_TIME_SYSCALL_USE_NONE +CONFIG_ESP32C3_TIME_SYSCALL_USE_RTC_SYSTIMER CONFIG_LIBC_TIME_SYSCALL_USE_RTC_HRT +CONFIG_ESP32C3_TIME_SYSCALL_USE_RTC CONFIG_LIBC_TIME_SYSCALL_USE_RTC +CONFIG_ESP32C3_TIME_SYSCALL_USE_SYSTIMER CONFIG_LIBC_TIME_SYSCALL_USE_HRT +CONFIG_ESP32C3_TIME_SYSCALL_USE_NONE CONFIG_LIBC_TIME_SYSCALL_USE_NONE diff --git a/components/newlib/sdkconfig.rename.esp32s2 b/components/newlib/sdkconfig.rename.esp32s2 index 3a443e81cbf2..b94f4cdfe0a9 100644 --- a/components/newlib/sdkconfig.rename.esp32s2 +++ b/components/newlib/sdkconfig.rename.esp32s2 @@ -1,9 +1,9 @@ # sdkconfig replacement configurations for deprecated options formatted as # CONFIG_DEPRECATED_OPTION CONFIG_NEW_OPTION -CONFIG_ESP32S2_TIME_SYSCALL_USE_RTC_SYSTIMER CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC_HRT -CONFIG_ESP32S2_TIME_SYSCALL_USE_RTC CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC -CONFIG_ESP32S2_TIME_SYSCALL_USE_SYSTIMER CONFIG_NEWLIB_TIME_SYSCALL_USE_HRT -CONFIG_ESP32S2_TIME_SYSCALL_USE_NONE CONFIG_NEWLIB_TIME_SYSCALL_USE_NONE -CONFIG_ESP32S2_TIME_SYSCALL_USE_RTC_FRC1 CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC_HRT -CONFIG_ESP32S2_TIME_SYSCALL_USE_FRC1 CONFIG_NEWLIB_TIME_SYSCALL_USE_HRT +CONFIG_ESP32S2_TIME_SYSCALL_USE_RTC_SYSTIMER CONFIG_LIBC_TIME_SYSCALL_USE_RTC_HRT +CONFIG_ESP32S2_TIME_SYSCALL_USE_RTC CONFIG_LIBC_TIME_SYSCALL_USE_RTC +CONFIG_ESP32S2_TIME_SYSCALL_USE_SYSTIMER CONFIG_LIBC_TIME_SYSCALL_USE_HRT +CONFIG_ESP32S2_TIME_SYSCALL_USE_NONE CONFIG_LIBC_TIME_SYSCALL_USE_NONE +CONFIG_ESP32S2_TIME_SYSCALL_USE_RTC_FRC1 CONFIG_LIBC_TIME_SYSCALL_USE_RTC_HRT +CONFIG_ESP32S2_TIME_SYSCALL_USE_FRC1 CONFIG_LIBC_TIME_SYSCALL_USE_HRT diff --git a/components/newlib/sdkconfig.rename.esp32s3 b/components/newlib/sdkconfig.rename.esp32s3 index 8599ac610d66..3b8d10aeb11f 100644 --- a/components/newlib/sdkconfig.rename.esp32s3 +++ b/components/newlib/sdkconfig.rename.esp32s3 @@ -1,9 +1,9 @@ # sdkconfig replacement configurations for deprecated options formatted as # CONFIG_DEPRECATED_OPTION CONFIG_NEW_OPTION -CONFIG_ESP32S3_TIME_SYSCALL_USE_RTC_SYSTIMER CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC_HRT -CONFIG_ESP32S3_TIME_SYSCALL_USE_RTC CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC -CONFIG_ESP32S3_TIME_SYSCALL_USE_SYSTIMER CONFIG_NEWLIB_TIME_SYSCALL_USE_HRT -CONFIG_ESP32S3_TIME_SYSCALL_USE_NONE CONFIG_NEWLIB_TIME_SYSCALL_USE_NONE -CONFIG_ESP32S3_TIME_SYSCALL_USE_RTC_FRC1 CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC_HRT -CONFIG_ESP32S3_TIME_SYSCALL_USE_FRC1 CONFIG_NEWLIB_TIME_SYSCALL_USE_HRT +CONFIG_ESP32S3_TIME_SYSCALL_USE_RTC_SYSTIMER CONFIG_LIBC_TIME_SYSCALL_USE_RTC_HRT +CONFIG_ESP32S3_TIME_SYSCALL_USE_RTC CONFIG_LIBC_TIME_SYSCALL_USE_RTC +CONFIG_ESP32S3_TIME_SYSCALL_USE_SYSTIMER CONFIG_LIBC_TIME_SYSCALL_USE_HRT +CONFIG_ESP32S3_TIME_SYSCALL_USE_NONE CONFIG_LIBC_TIME_SYSCALL_USE_NONE +CONFIG_ESP32S3_TIME_SYSCALL_USE_RTC_FRC1 CONFIG_LIBC_TIME_SYSCALL_USE_RTC_HRT +CONFIG_ESP32S3_TIME_SYSCALL_USE_FRC1 CONFIG_LIBC_TIME_SYSCALL_USE_HRT diff --git a/components/newlib/.gitignore b/components/newlib/src/.gitignore similarity index 100% rename from components/newlib/.gitignore rename to components/newlib/src/.gitignore diff --git a/components/newlib/abort.c b/components/newlib/src/abort.c similarity index 100% rename from components/newlib/abort.c rename to components/newlib/src/abort.c diff --git a/components/newlib/assert.c b/components/newlib/src/assert.c similarity index 93% rename from components/newlib/assert.c rename to components/newlib/src/assert.c index 633b19af918e..9bdb2f66ccba 100644 --- a/components/newlib/assert.c +++ b/components/newlib/src/assert.c @@ -81,12 +81,16 @@ void __attribute__((noreturn)) __assert_func(const char *file, int line, const c #endif /* CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT */ } +#if CONFIG_LIBC_NEWLIB void __attribute__((noreturn)) __assert(const char *file, int line, const char *failedexpr) +#else +void __attribute__((noreturn)) __assert(const char *file, const char *failedexpr, int line) +#endif { __assert_func(file, line, NULL, failedexpr); } /* No-op function, used to force linker to include these changes */ -void newlib_include_assert_impl(void) +void esp_libc_include_assert_impl(void) { } diff --git a/components/newlib/esp32-spiram-rom-functions-c.lf b/components/newlib/src/esp32-spiram-rom-functions-c.lf similarity index 100% rename from components/newlib/esp32-spiram-rom-functions-c.lf rename to components/newlib/src/esp32-spiram-rom-functions-c.lf diff --git a/components/newlib/flockfile.c b/components/newlib/src/flockfile.c similarity index 100% rename from components/newlib/flockfile.c rename to components/newlib/src/flockfile.c diff --git a/components/newlib/getentropy.c b/components/newlib/src/getentropy.c similarity index 92% rename from components/newlib/getentropy.c rename to components/newlib/src/getentropy.c index 0dfc661b1d3a..530a5964cc6b 100644 --- a/components/newlib/getentropy.c +++ b/components/newlib/src/getentropy.c @@ -29,7 +29,7 @@ int getentropy(void *buffer, size_t length) return 0; } -void newlib_include_getentropy_impl(void) +void esp_libc_include_getentropy_impl(void) { // Linker hook, exists for no other purpose } diff --git a/components/newlib/heap.c b/components/newlib/src/heap.c similarity index 92% rename from components/newlib/heap.c rename to components/newlib/src/heap.c index 5c30eaad0e46..6812aeb4f13e 100644 --- a/components/newlib/heap.c +++ b/components/newlib/src/heap.c @@ -24,11 +24,6 @@ void* malloc(size_t size) return heap_caps_malloc_default(size); } -void* calloc(size_t n, size_t size) -{ - return _calloc_r(_REENT, n, size); -} - void* realloc(void* ptr, size_t size) { return heap_caps_realloc_default(ptr, size); @@ -39,11 +34,24 @@ void free(void *ptr) heap_caps_free(ptr); } -void* _malloc_r(struct _reent *r, size_t size) +ESP_COMPILER_DIAGNOSTIC_PUSH_IGNORE("-Wanalyzer-malloc-leak") +void* calloc(size_t nmemb, size_t size) { - return heap_caps_malloc_default(size); + void *result; + size_t size_bytes; + if (__builtin_mul_overflow(nmemb, size, &size_bytes)) { + return NULL; + } + + result = heap_caps_malloc_default(size_bytes); + if (result != NULL) { + bzero(result, size_bytes); + } + return result; } +ESP_COMPILER_DIAGNOSTIC_POP("-Wanalyzer-malloc-leak") +#if CONFIG_LIBC_NEWLIB void _free_r(struct _reent *r, void* ptr) { heap_caps_free(ptr); @@ -54,20 +62,16 @@ void* _realloc_r(struct _reent *r, void* ptr, size_t size) return heap_caps_realloc_default(ptr, size); } -void* _calloc_r(struct _reent *r, size_t nmemb, size_t size) +void* _malloc_r(struct _reent *r, size_t size) { - void *result; - size_t size_bytes; - if (__builtin_mul_overflow(nmemb, size, &size_bytes)) { - return NULL; - } + return heap_caps_malloc_default(size); +} - result = heap_caps_malloc_default(size_bytes); - if (result != NULL) { - bzero(result, size_bytes); - } - return result; +void* _calloc_r(struct _reent *r, size_t nmemb, size_t size) +{ + return calloc(nmemb, size); } +#endif void* memalign(size_t alignment, size_t n) { @@ -99,7 +103,7 @@ int posix_memalign(void **out_ptr, size_t alignment, size_t size) /* No-op function, used to force linking this file, instead of the heap implementation from newlib. */ -void newlib_include_heap_impl(void) +void esp_libc_include_heap_impl(void) { } diff --git a/components/newlib/src/init.c b/components/newlib/src/init.c new file mode 100644 index 000000000000..809ab07af3fe --- /dev/null +++ b/components/newlib/src/init.c @@ -0,0 +1,30 @@ +/* + * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ +#include "sdkconfig.h" +#include "esp_newlib.h" +#include "esp_private/startup_internal.h" +#include "esp_bit_defs.h" + +ESP_SYSTEM_INIT_FN(init_libc, CORE, BIT(0), 102) +{ + esp_libc_init(); + return ESP_OK; +} + +ESP_SYSTEM_INIT_FN(init_libc_stdio, CORE, BIT(0), 115) +{ +#if CONFIG_VFS_SUPPORT_IO + esp_libc_init_global_stdio("/dev/console"); +#else + esp_libc_init_global_stdio(); +#endif + return ESP_OK; +} + +// Hook to force the linker to include this file +void esp_libc_init_funcs(void) +{ +} diff --git a/components/newlib/locks.c b/components/newlib/src/locks.c similarity index 95% rename from components/newlib/locks.c rename to components/newlib/src/locks.c index 6ad04fcfafa5..a4570b568267 100644 --- a/components/newlib/locks.c +++ b/components/newlib/src/locks.c @@ -14,6 +14,8 @@ #include "freertos/portable.h" #include "esp_rom_caps.h" +#include "sdkconfig.h" + /* Notes on our newlib lock implementation: * * - Use FreeRTOS mutex semaphores as locks. @@ -24,12 +26,16 @@ * protected by lock_init_spinlock. * - Race conditions around lazy initialisation (via lock_acquire) are * protected against. - * - Anyone calling lock_close is reponsible for ensuring noone else + * - Anyone calling lock_close is responsible for ensuring no one else * is holding the lock at this time. * - Race conditions between lock_close & lock_init (for the same lock) * are the responsibility of the caller. */ +#if CONFIG_LIBC_PICOLIBC +struct __lock __lock___libc_recursive_mutex; +#endif + static portMUX_TYPE lock_init_spinlock = portMUX_INITIALIZER_UNLOCKED; /* Initialize the given lock by allocating a new mutex semaphore @@ -359,23 +365,13 @@ extern StaticSemaphore_t __attribute__((alias("s_common_mutex"))) __lock___tz_mu extern StaticSemaphore_t __attribute__((alias("s_common_mutex"))) __lock___dd_hash_mutex; extern StaticSemaphore_t __attribute__((alias("s_common_mutex"))) __lock___arc4random_mutex; -void esp_newlib_locks_init(void) +#if CONFIG_LIBC_NEWLIB +static void esp_libc_newlib_locks_init(void) { - /* Initialize the two mutexes used for the locks above. - * Asserts below check our assumption that SemaphoreHandle_t will always - * point to the corresponding StaticSemaphore_t structure. - */ - SemaphoreHandle_t handle; - handle = xSemaphoreCreateMutexStatic(&s_common_mutex); - assert(handle == (SemaphoreHandle_t) &s_common_mutex); - handle = xSemaphoreCreateRecursiveMutexStatic(&s_common_recursive_mutex); - assert(handle == (SemaphoreHandle_t) &s_common_recursive_mutex); - (void) handle; - /* Chip ROMs are built with older versions of newlib, and rely on different lock variables. * Initialize these locks to the same values. */ -#ifdef CONFIG_IDF_TARGET_ESP32 +#if CONFIG_IDF_TARGET_ESP32 /* Newlib 2.2.0 is used in ROM, the following lock symbols are defined: */ extern _lock_t __sfp_lock; __sfp_lock = (_lock_t) &s_common_recursive_mutex; @@ -385,7 +381,7 @@ void esp_newlib_locks_init(void) __env_lock_object = (_lock_t) &s_common_recursive_mutex; extern _lock_t __tz_lock_object; __tz_lock_object = (_lock_t) &s_common_mutex; -#elif defined(CONFIG_IDF_TARGET_ESP32S2) +#elif CONFIG_IDF_TARGET_ESP32S2 /* Newlib 3.0.0 is used in ROM, the following lock symbols are defined: */ extern _lock_t __sinit_recursive_mutex; __sinit_recursive_mutex = (_lock_t) &s_common_recursive_mutex; @@ -405,3 +401,28 @@ void esp_newlib_locks_init(void) #error Unsupported target #endif } +#endif // CONFIG_LIBC_NEWLIB + +/* TODO IDF-11226 */ +void esp_newlib_locks_init(void) __attribute__((alias("esp_libc_locks_init"))); +void esp_libc_locks_init(void) +{ + /* Initialize the two mutexes used for the locks above. + * Asserts below check our assumption that SemaphoreHandle_t will always + * point to the corresponding StaticSemaphore_t structure. + */ + SemaphoreHandle_t handle; + handle = xSemaphoreCreateMutexStatic(&s_common_mutex); + assert(handle == (SemaphoreHandle_t) &s_common_mutex); + handle = xSemaphoreCreateRecursiveMutexStatic(&s_common_recursive_mutex); + assert(handle == (SemaphoreHandle_t) &s_common_recursive_mutex); +#if CONFIG_LIBC_PICOLIBC + handle = xSemaphoreCreateRecursiveMutexStatic((StaticQueue_t *) &__lock___libc_recursive_mutex); + assert(handle == (SemaphoreHandle_t) &__lock___libc_recursive_mutex); +#endif + (void) handle; + +#if CONFIG_LIBC_NEWLIB + esp_libc_newlib_locks_init(); +#endif +} diff --git a/components/newlib/newlib.lf b/components/newlib/src/newlib.lf similarity index 100% rename from components/newlib/newlib.lf rename to components/newlib/src/newlib.lf diff --git a/components/newlib/newlib_init.c b/components/newlib/src/newlib_init.c similarity index 74% rename from components/newlib/newlib_init.c rename to components/newlib/src/newlib_init.c index cba25d3b27c4..112f1bc54518 100644 --- a/components/newlib/newlib_init.c +++ b/components/newlib/src/newlib_init.c @@ -21,7 +21,6 @@ #include "soc/soc_caps.h" #include "esp_rom_caps.h" #include "esp_rom_libc_stubs.h" -#include "esp_private/startup_internal.h" extern int _printf_float(struct _reent *rptr, void *pdata, @@ -126,7 +125,9 @@ static struct syscall_stub_table s_stub_table = { #endif }; -void esp_newlib_init(void) +/* TODO IDF-11226 */ +void esp_newlib_init(void) __attribute__((alias("esp_libc_init"))); +void esp_libc_init(void) { #if CONFIG_IDF_TARGET_ESP32 syscall_table_ptr_pro = syscall_table_ptr_app = &s_stub_table; @@ -150,16 +151,10 @@ void esp_newlib_init(void) } environ[0] = NULL; - esp_newlib_locks_init(); + esp_libc_locks_init(); } -ESP_SYSTEM_INIT_FN(init_newlib, CORE, BIT(0), 102) -{ - esp_newlib_init(); - return ESP_OK; -} - -void esp_setup_newlib_syscalls(void) __attribute__((alias("esp_newlib_init"))); +void esp_setup_newlib_syscalls(void) __attribute__((alias("esp_libc_init"))); /** * Postponed _GLOBAL_REENT stdio FPs initialization. @@ -169,46 +164,39 @@ void esp_setup_newlib_syscalls(void) __attribute__((alias("esp_newlib_init"))); * Called from startup code and FreeRTOS, not intended to be called from * application code. */ -void esp_newlib_init_global_stdio(const char *stdio_dev) +#if CONFIG_VFS_SUPPORT_IO +void esp_libc_init_global_stdio(const char *stdio_dev) { - if (stdio_dev == NULL) { - _GLOBAL_REENT->__cleanup = NULL; - _REENT_SDIDINIT(_GLOBAL_REENT) = 0; - __sinit(_GLOBAL_REENT); - _GLOBAL_REENT->__cleanup = esp_cleanup_r; - _REENT_SDIDINIT(_GLOBAL_REENT) = 1; - } else { - _REENT_STDIN(_GLOBAL_REENT) = fopen(stdio_dev, "r"); - _REENT_STDOUT(_GLOBAL_REENT) = fopen(stdio_dev, "w"); - _REENT_STDERR(_GLOBAL_REENT) = fopen(stdio_dev, "w"); + _REENT_STDIN(_GLOBAL_REENT) = fopen(stdio_dev, "r"); + _REENT_STDOUT(_GLOBAL_REENT) = fopen(stdio_dev, "w"); + _REENT_STDERR(_GLOBAL_REENT) = fopen(stdio_dev, "w"); #if ESP_ROM_NEEDS_SWSETUP_WORKAROUND - /* - - This workaround for printf functions using 32-bit time_t after the 64-bit time_t upgrade - - The 32-bit time_t usage is triggered through ROM Newlib functions printf related functions calling __swsetup_r() on - the first call to a particular file pointer (i.e., stdin, stdout, stderr) - - Thus, we call the toolchain version of __swsetup_r() now (before any printf calls are made) to setup all of the - file pointers. Thus, the ROM newlib code will never call the ROM version of __swsetup_r(). - - See IDFGH-7728 for more details - */ - extern int __swsetup_r(struct _reent *, FILE *); - __swsetup_r(_GLOBAL_REENT, _REENT_STDIN(_GLOBAL_REENT)); - __swsetup_r(_GLOBAL_REENT, _REENT_STDOUT(_GLOBAL_REENT)); - __swsetup_r(_GLOBAL_REENT, _REENT_STDERR(_GLOBAL_REENT)); + /* + - This workaround for printf functions using 32-bit time_t after the 64-bit time_t upgrade + - The 32-bit time_t usage is triggered through ROM Newlib functions printf related functions calling __swsetup_r() on + the first call to a particular file pointer (i.e., stdin, stdout, stderr) + - Thus, we call the toolchain version of __swsetup_r() now (before any printf calls are made) to setup all of the + file pointers. Thus, the ROM newlib code will never call the ROM version of __swsetup_r(). + - See IDFGH-7728 for more details + */ + extern int __swsetup_r(struct _reent *, FILE *); + __swsetup_r(_GLOBAL_REENT, _REENT_STDIN(_GLOBAL_REENT)); + __swsetup_r(_GLOBAL_REENT, _REENT_STDOUT(_GLOBAL_REENT)); + __swsetup_r(_GLOBAL_REENT, _REENT_STDERR(_GLOBAL_REENT)); #endif /* ESP_ROM_NEEDS_SWSETUP_WORKAROUND */ - } } - -ESP_SYSTEM_INIT_FN(init_newlib_stdio, CORE, BIT(0), 115) +#else /* CONFIG_VFS_SUPPORT_IO */ +void esp_libc_init_global_stdio(void) { -#if defined(CONFIG_VFS_SUPPORT_IO) - esp_newlib_init_global_stdio("/dev/console"); -#else - esp_newlib_init_global_stdio(NULL); -#endif - return ESP_OK; + _GLOBAL_REENT->__cleanup = NULL; + _REENT_SDIDINIT(_GLOBAL_REENT) = 0; + __sinit(_GLOBAL_REENT); + _GLOBAL_REENT->__cleanup = esp_cleanup_r; + _REENT_SDIDINIT(_GLOBAL_REENT) = 1; } +#endif /* CONFIG_VFS_SUPPORT_IO */ // Hook to force the linker to include this file -void newlib_include_init_funcs(void) +void esp_libc_include_init_funcs(void) { } diff --git a/components/newlib/src/picolibc/esp32-spiram-rom-functions-c.lf b/components/newlib/src/picolibc/esp32-spiram-rom-functions-c.lf new file mode 100644 index 000000000000..f2a97b4cc9bb --- /dev/null +++ b/components/newlib/src/picolibc/esp32-spiram-rom-functions-c.lf @@ -0,0 +1,162 @@ +# If the Picolibc 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. + +[mapping:libc] +archive: + libc.a +entries: + if SPIRAM_CACHE_WORKAROUND = y: + # The following libs are either used in a lot of places or in critical code. (such as panic or abort) + # Thus, they shall always be placed in IRAM. + libc_stdlib_itoa (noflash) + libc_string_memcmp (noflash) + libc_machine_xtensa_memcpy (noflash) + libc_machine_xtensa_memset (noflash) + libc_string_strcat (noflash) + libc_machine_xtensa_strcmp (noflash) + libc_machine_xtensa_strlen (noflash) + + if SPIRAM_CACHE_LIBJMP_IN_IRAM = y: + libc_machine_xtensa_longjmp (noflash) + libc_machine_xtensa_setjmp (noflash) + + if SPIRAM_CACHE_LIBMATH_IN_IRAM = y: + libc_stdlib_abs (noflash) + libc_stdlib_div (noflash) + libc_stdlib_labs (noflash) + libc_stdlib_ldiv (noflash) + libm_common_quorem (noflash) + libm_common_s_fpclassify (noflash) + libm_common_sf_nan (noflash) + + if SPIRAM_CACHE_LIBNUMPARSER_IN_IRAM = y: + libc_stdlib_utoa (noflash) + libc_stdlib_atoi (noflash) + libc_stdlib_atol (noflash) + libc_tinystdio_strtol (noflash) + libc_tinystdio_strtoul (noflash) + + if SPIRAM_CACHE_LIBIO_IN_IRAM = y: + libc_stdlib_wcrtomb (noflash) + libc_stdlib_fvwrite (noflash) + libc_stdlib_wbuf (noflash) + libc_stdlib_wsetup (noflash) + libc_tinystdio_fputwc (noflash) + libc_stdlib_wctomb_r (noflash) + libc_tinystdio_ungetc (noflash) + libc_tinystdio_makebuf (noflash) + libc_tinystdio_fflush (noflash) + libc_stdlib_refill (noflash) + libc_stdlib_sccl (noflash) + + if SPIRAM_CACHE_LIBTIME_IN_IRAM = y: + libc_time_asctime (noflash) + libc_time_asctime_r (noflash) + libc_time_ctime (noflash) + libc_time_ctime_r (noflash) + libc_time_lcltime (noflash) + libc_time_lcltime_r (noflash) + libc_time_gmtime (noflash) + libc_time_gmtime_r (noflash) + libc_time_strftime (noflash) + libc_time_mktime (noflash) + libc_time_tzset_r (noflash) + libc_time_tzset (noflash) + libc_time_time (noflash) + libc_time_gettzinfo (noflash) + libc_time_systimes (noflash) + libc_time_month_lengths (noflash) + libc_time_timelocal (noflash) + libc_time_tzvars (noflash) + libc_time_tzlock (noflash) + libc_time_tzcalc_limits (noflash) + libc_time_strptime (noflash) + + if SPIRAM_CACHE_LIBCHAR_IN_IRAM = y: + libc_ctype_ctype_ (noflash) + libc_ctype_toupper (noflash) + libc_ctype_tolower (noflash) + libc_ctype_toascii (noflash) + libc_string_strupr (noflash) + libc_string_bzero (noflash) + libc_ctype_isalnum (noflash) + libc_ctype_isalpha (noflash) + libc_ctype_isascii (noflash) + libc_ctype_isblank (noflash) + libc_ctype_iscntrl (noflash) + libc_ctype_isdigit (noflash) + libc_ctype_isgraph (noflash) + libc_ctype_islower (noflash) + libc_ctype_isprint (noflash) + libc_ctype_ispunct (noflash) + libc_ctype_isspace (noflash) + libc_ctype_isupper (noflash) + + if SPIRAM_CACHE_LIBMEM_IN_IRAM = y: + libc_string_memccpy (noflash) + libc_string_memchr (noflash) + libc_string_memmove (noflash) + libc_string_memrchr (noflash) + + if SPIRAM_CACHE_LIBSTR_IN_IRAM = y: + libc_string_strcasecmp (noflash) + libc_string_strcasestr (noflash) + libc_string_strchr (noflash) + libc_string_strcoll (noflash) + libc_string_strcpy (noflash) + libc_string_strcspn (noflash) + libc_string_strdup (noflash) + libc_string_strdup_r (noflash) + libc_string_strlcat (noflash) + libc_string_strlcpy (noflash) + libc_string_strlwr (noflash) + libc_string_strncasecmp (noflash) + libc_string_strncat (noflash) + libc_string_strncmp (noflash) + libc_string_strncpy (noflash) + libc_string_strndup (noflash) + libc_string_strndup_r (noflash) + libc_string_strnlen (noflash) + libc_string_strrchr (noflash) + libc_string_strsep (noflash) + libc_string_strspn (noflash) + libc_string_strstr (noflash) + libc_string_strtok_r (noflash) + libc_string_strupr (noflash) + + if SPIRAM_CACHE_LIBRAND_IN_IRAM = y: + libc_stdlib_srand (noflash) + libc_stdlib_rand (noflash) + libc_stdlib_rand_r (noflash) + + if SPIRAM_CACHE_LIBENV_IN_IRAM = y: + libc_stdlib_environ (noflash) + libc_stdlib_envlock (noflash) + libc_stdlib_getenv_r (noflash) + + if SPIRAM_CACHE_LIBFILE_IN_IRAM = y: + libc_tinystdio_lock (noflash) + libc_tinystdio_isatty (noflash) + libc_tinystdio_fclose (noflash) + libc_tinystdio_open (noflash) + libc_tinystdio_close (noflash) + libc_tinystdio_creat (noflash) + libc_tinystdio_read (noflash) + libc_tinystdio_rshift (noflash) + libc_tinystdio_sbrk (noflash) + libc_tinystdio_stdio (noflash) + libc_tinystdio_syssbrk (noflash) + libc_tinystdio_sysclose (noflash) + libc_tinystdio_sysopen (noflash) + libc_tinystdio_sysread (noflash) + libc_tinystdio_syswrite (noflash) + libc_tinystdio_impure (noflash) + libc_tinystdio_fwalk (noflash) + libc_tinystdio_findfp (noflash) + + if SPIRAM_CACHE_LIBMISC_IN_IRAM = y: + libc_stdlib_raise (noflash) + libc_stdlib_system (noflash) diff --git a/components/newlib/src/picolibc/open_memstream.c b/components/newlib/src/picolibc/open_memstream.c new file mode 100644 index 000000000000..051a07b0d34e --- /dev/null +++ b/components/newlib/src/picolibc/open_memstream.c @@ -0,0 +1,128 @@ +/* + * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ +#include +#include +#include +#include +#include + +#define GET_BUF(mf) (*(mf->pbuf)) +#define GET_SIZE(mf) (*(mf->psize)) + +struct __file_mem { + struct __file_ext xfile; + char **pbuf; + size_t *psize; // == strlen(*pbuf); + size_t len; // Total allocated size + size_t pos; +}; + +static int __fmem_put(char c, FILE *f) +{ + struct __file_mem *mf = (struct __file_mem *) f; + if (mf->len == mf->pos) { + size_t newsize = mf->len * 3 / 2; + char *tmp = realloc(GET_BUF(mf), newsize); + if (!tmp) { + return _FDEV_ERR; + } + GET_BUF(mf) = tmp; + mf->len = newsize; + } + GET_BUF(mf)[mf->pos++] = c; + if (mf->pos > GET_SIZE(mf)) { + GET_SIZE(mf) = mf->pos; + } + return (unsigned char) c; +} + +static int __fmem_get(FILE *f) +{ + struct __file_mem *mf = (struct __file_mem *) f; + int c; + if (mf->pos < GET_SIZE(mf)) { + c = (unsigned char) GET_BUF(mf)[mf->pos++]; + if (c == '\0') { + c = _FDEV_EOF; + } + } else { + c = _FDEV_ERR; + } + return c; +} + +static int __fmem_flush(FILE *f) +{ + struct __file_mem *mf = (struct __file_mem *) f; + GET_BUF(mf)[mf->pos] = '\0'; + GET_SIZE(mf) = mf->pos; + return 0; +} + +static off_t __fmem_seek(FILE *f, off_t pos, int whence) +{ + struct __file_mem *mf = (struct __file_mem *) f; + + switch (whence) { + case SEEK_SET: + break; + case SEEK_CUR: + pos += mf->pos; + break; + case SEEK_END: + pos += GET_SIZE(mf); + break; + } + if (pos < 0 || GET_SIZE(mf) < (size_t) pos) { + return EOF; + } + mf->pos = pos; + return pos; +} + +static int __fmem_close(FILE *f) +{ + __fmem_flush(f); + free(f); + return 0; +} + +FILE * +open_memstream(char **buf, size_t *size) +{ + struct __file_mem *mf; + + if (!buf || !size) { + errno = EINVAL; + return NULL; + } + /* Allocate file structure and necessary buffers */ + mf = calloc(1, sizeof(struct __file_mem)); + + if (mf == NULL) { + errno = ENOMEM; + return NULL; + } + + *buf = malloc(BUFSIZ); + if (*buf == NULL) { + errno = ENOMEM; + free(mf); + return NULL; + } + + *mf = (struct __file_mem) { + .xfile = FDEV_SETUP_EXT(__fmem_put, __fmem_get, __fmem_flush, __fmem_close, + __fmem_seek, NULL, __SWR), + .pbuf = buf, + .psize = size, + .len = BUFSIZ, + .pos = 0, + }; + *size = 0; + *buf[0] = '\0'; + return (FILE *) mf; +} diff --git a/components/newlib/src/picolibc/picolibc_init.c b/components/newlib/src/picolibc/picolibc_init.c new file mode 100644 index 000000000000..a4c4f12d34b8 --- /dev/null +++ b/components/newlib/src/picolibc/picolibc_init.c @@ -0,0 +1,179 @@ +/* + * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include "sdkconfig.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "esp_newlib.h" +#include "esp_attr.h" +#include "soc/soc_caps.h" +#include "esp_rom_caps.h" +#include "esp_heap_caps.h" +#include "esp_rom_libc_stubs.h" + +#if !(CONFIG_IDF_TARGET_ESP32 || CONFIG_IDF_TARGET_ESP32S2) +static void esp_cleanup_r(struct _reent *rptr) +{ + return; +} +#endif + +#if ESP_ROM_HAS_RETARGETABLE_LOCKING +static int __retarget_lock_try_acquire(struct __lock * p) +{ + __retarget_lock_acquire(p); + return 0; +} + +static int __retarget_lock_try_acquire_recursive(struct __lock *p) +{ + __retarget_lock_acquire_recursive(p); + return 0; +} +#endif + +static struct syscall_stub_table s_stub_table = { + .__getreent = (void *)abort, + ._malloc_r = (void *)abort, + ._free_r = (void *)abort, + ._realloc_r = (void *)abort, + ._calloc_r = (void *)abort, + ._abort = &abort, + ._system_r = (void *)abort, + ._rename_r = (void *)abort, + ._times_r = (void *)abort, + ._gettimeofday_r = (void *)abort, + ._raise_r = (void *)abort, + ._unlink_r = (void *)abort, + ._link_r = (void *)abort, + ._stat_r = (void *)abort, + ._fstat_r = (void *)abort, + ._sbrk_r = (void *)abort, + ._getpid_r = (void *)abort, + ._kill_r = (void *)abort, + ._exit_r = NULL, // never called in ROM + ._close_r = (void *)abort, + ._open_r = (void *)abort, + ._write_r = (void *)abort, + ._lseek_r = (void *)abort, + ._read_r = (void *)abort, +#if ESP_ROM_HAS_RETARGETABLE_LOCKING + ._retarget_lock_init = &__retarget_lock_init, + ._retarget_lock_init_recursive = &__retarget_lock_init_recursive, + ._retarget_lock_close = &__retarget_lock_close, + ._retarget_lock_close_recursive = &__retarget_lock_close_recursive, + ._retarget_lock_acquire = &__retarget_lock_acquire, + ._retarget_lock_acquire_recursive = &__retarget_lock_acquire_recursive, + ._retarget_lock_try_acquire = &__retarget_lock_try_acquire, + ._retarget_lock_try_acquire_recursive = &__retarget_lock_try_acquire_recursive, + ._retarget_lock_release = &__retarget_lock_release, + ._retarget_lock_release_recursive = &__retarget_lock_release_recursive, +#else + ._lock_init = &_lock_init, + ._lock_init_recursive = &_lock_init_recursive, + ._lock_close = &_lock_close, + ._lock_close_recursive = &_lock_close_recursive, + ._lock_acquire = &_lock_acquire, + ._lock_acquire_recursive = &_lock_acquire_recursive, + ._lock_try_acquire = &_lock_try_acquire, + ._lock_try_acquire_recursive = &_lock_try_acquire_recursive, + ._lock_release = &_lock_release, + ._lock_release_recursive = &_lock_release_recursive, +#endif + ._printf_float = NULL, + ._scanf_float = NULL, +#if !(CONFIG_IDF_TARGET_ESP32 || CONFIG_IDF_TARGET_ESP32S2) + /* TODO IDF-2570 : mark that this assert failed in ROM, to avoid confusion between IDF & ROM + assertion failures (as function names & source file names will be similar) + */ + .__assert_func = __assert_func, + + /* We don't expect either ROM code to ever call __sinit, so it's implemented as abort() for now. + + __sinit may be called in IDF side only if /dev/console used as input/output. It called only + once for _GLOBAL_REENT. Then reuse std file pointers from _GLOBAL_REENT in another reents. + See esp_newlib_init() and esp_reent_init() for details. + */ + .__sinit = (void *)abort, + ._cleanup_r = &esp_cleanup_r, +#endif +}; + +/* TODO IDF-11226 */ +void esp_newlib_init(void) __attribute__((alias("esp_libc_init"))); +void esp_libc_init(void) +{ +#if CONFIG_IDF_TARGET_ESP32 + syscall_table_ptr_pro = syscall_table_ptr_app = &s_stub_table; +#elif CONFIG_IDF_TARGET_ESP32S2 + syscall_table_ptr_pro = &s_stub_table; +#else + syscall_table_ptr = &s_stub_table; +#endif + + environ = malloc(sizeof(char*)); + if (environ == 0) { + // if allocation fails this early in startup process, there's nothing else other than to panic. + abort(); + } + environ[0] = NULL; + + esp_libc_locks_init(); +} + +void esp_setup_newlib_syscalls(void) __attribute__((alias("esp_libc_init"))); + +/* dummy function for backward compatibility */ +void esp_reent_cleanup(void) +{ + return; +} + +#if CONFIG_VFS_SUPPORT_IO +FILE *stdin; +FILE *stdout; +FILE *stderr; +void esp_libc_init_global_stdio(const char *stdio_dev) +{ + stdin = fopen(stdio_dev, "r"); + stdout = fopen(stdio_dev, "w"); + assert(stdin); + assert(stdout); + setlinebuf(stdout); + stderr = stdout; +} +#else /* CONFIG_VFS_SUPPORT_IO */ +static char write_buf[BUFSIZ]; +static char read_buf[BUFSIZ]; + +static struct __file_bufio __stdin = FDEV_SETUP_BUFIO(0, read_buf, BUFSIZ, read, write, lseek, close, __SRD, 0); +static struct __file_bufio __stdout = FDEV_SETUP_BUFIO(1, write_buf, BUFSIZ, read, write, lseek, close, __SWR, __BLBF); + +FILE *stdin = &__stdin.xfile.cfile.file; +FILE *stdout = &__stdout.xfile.cfile.file; +FILE *stderr = &__stdout.xfile.cfile.file; +void esp_libc_init_global_stdio(void) +{ + __lock_init_recursive(stdin->lock); + __lock_init_recursive(stdout->lock); +} +#endif /* CONFIG_VFS_SUPPORT_IO */ + +// Hook to force the linker to include this file +void esp_libc_include_init_funcs(void) +{ +} diff --git a/components/newlib/src/picolibc/rand.c b/components/newlib/src/picolibc/rand.c new file mode 100644 index 000000000000..871d0b577b63 --- /dev/null +++ b/components/newlib/src/picolibc/rand.c @@ -0,0 +1,22 @@ +/* + * SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ +#include + +_Thread_local unsigned long long _tls_rand_next = 1; + +void srand(unsigned int seed) +{ + _tls_rand_next = seed; +} + +int rand(void) +{ + /* This multiplier was obtained from Knuth, D.E., "The Art of + Computer Programming," Vol 2, Seminumerical Algorithms, Third + Edition, Addison-Wesley, 1998, p. 106 (line 26) & p. 108 */ + _tls_rand_next = _tls_rand_next * __extension__ 6364136223846793005LL + 1; + return (int)((_tls_rand_next >> 32) & RAND_MAX); +} diff --git a/components/newlib/poll.c b/components/newlib/src/poll.c similarity index 96% rename from components/newlib/poll.c rename to components/newlib/src/poll.c index 2963a402caa0..4371c63b031e 100644 --- a/components/newlib/poll.c +++ b/components/newlib/src/poll.c @@ -5,6 +5,7 @@ */ #include +#include #include #include #include @@ -21,11 +22,10 @@ int poll(struct pollfd *fds, nfds_t nfds, int timeout) fd_set readfds; fd_set writefds; fd_set errorfds; - struct _reent* r = __getreent(); int ret = 0; if (fds == NULL) { - __errno_r(r) = ENOENT; + errno = ENOENT; return -1; } diff --git a/components/newlib/port/CMakeLists.txt b/components/newlib/src/port/CMakeLists.txt similarity index 100% rename from components/newlib/port/CMakeLists.txt rename to components/newlib/src/port/CMakeLists.txt diff --git a/components/newlib/port/esp_time_impl.c b/components/newlib/src/port/esp_time_impl.c similarity index 98% rename from components/newlib/port/esp_time_impl.c rename to components/newlib/src/port/esp_time_impl.c index c182f3acfa48..276b6aae769e 100644 --- a/components/newlib/port/esp_time_impl.c +++ b/components/newlib/src/port/esp_time_impl.c @@ -138,8 +138,3 @@ void esp_sync_timekeeping_timers(void) esp_time_impl_set_boot_time(esp_time_impl_get_boot_time() + ((int64_t)s_microseconds_offset - s_microseconds_offset_cur)); #endif } - -void esp_time_impl_init(void) -{ - esp_set_time_from_rtc(); -} diff --git a/components/newlib/port/xtensa/stdatomic_s32c1i.c b/components/newlib/src/port/xtensa/stdatomic_s32c1i.c similarity index 100% rename from components/newlib/port/xtensa/stdatomic_s32c1i.c rename to components/newlib/src/port/xtensa/stdatomic_s32c1i.c diff --git a/components/newlib/pthread.c b/components/newlib/src/pthread.c similarity index 95% rename from components/newlib/pthread.c rename to components/newlib/src/pthread.c index 60dfe2e36254..13da80d7d50c 100644 --- a/components/newlib/pthread.c +++ b/components/newlib/src/pthread.c @@ -31,7 +31,7 @@ int sigfillset(sigset_t *what) return 0; } -void newlib_include_pthread_impl(void) +void esp_libc_include_pthread_impl(void) { // Linker hook, exists for no other purpose } diff --git a/components/newlib/random.c b/components/newlib/src/random.c similarity index 92% rename from components/newlib/random.c rename to components/newlib/src/random.c index 6225fff47955..259af50c7d6d 100644 --- a/components/newlib/random.c +++ b/components/newlib/src/random.c @@ -18,7 +18,7 @@ ssize_t getrandom(void *buf, size_t buflen, unsigned int flags) { // Flags are ignored because: // - esp_random is non-blocking so it works for both blocking and non-blocking calls, - // - don't have opportunity so set som other source of entropy. + // - don't have opportunity so set some other source of entropy. ESP_LOGD(TAG, "getrandom(buf=0x%x, buflen=%d, flags=%u)", (int) buf, buflen, flags); diff --git a/components/newlib/realpath.c b/components/newlib/src/realpath.c similarity index 100% rename from components/newlib/realpath.c rename to components/newlib/src/realpath.c diff --git a/components/newlib/reent_init.c b/components/newlib/src/reent_init.c similarity index 100% rename from components/newlib/reent_init.c rename to components/newlib/src/reent_init.c diff --git a/components/newlib/syscalls.c b/components/newlib/src/reent_syscalls.c similarity index 85% rename from components/newlib/syscalls.c rename to components/newlib/src/reent_syscalls.c index c60280912f5f..f6eb75cb034d 100644 --- a/components/newlib/syscalls.c +++ b/components/newlib/src/reent_syscalls.c @@ -61,7 +61,7 @@ ssize_t _read_r_console(struct _reent *r, int fd, void * data, size_t size) } } if (received == 0) { - errno = EWOULDBLOCK; + __errno_r(r) = EWOULDBLOCK; return -1; } return received; @@ -97,9 +97,9 @@ static int _fsync_console(int fd) * another definition is provided. That definition may come from * VFS, LWIP, or the application. */ -ssize_t _read_r(struct _reent *r, int fd, void * dst, size_t size) +ssize_t _read_r(struct _reent *r, int fd, void *dst, size_t size) __attribute__((weak, alias("_read_r_console"))); -ssize_t _write_r(struct _reent *r, int fd, const void * data, size_t size) +ssize_t _write_r(struct _reent *r, int fd, const void *data, size_t size) __attribute__((weak, alias("_write_r_console"))); int _fstat_r(struct _reent *r, int fd, struct stat *st) __attribute__((weak, alias("_fstat_r_console"))); @@ -137,8 +137,6 @@ __attribute__((weak, alias("syscall_not_implemented"))); /* These functions are not expected to be overridden */ int _system_r(struct _reent *r, const char *str) __attribute__((alias("syscall_not_implemented"))); -int raise(int sig) -__attribute__((alias("syscall_not_implemented_aborts"))); int _raise_r(struct _reent *r, int sig) __attribute__((alias("syscall_not_implemented_aborts"))); void* _sbrk_r(struct _reent *r, ptrdiff_t sz) @@ -147,34 +145,14 @@ int _getpid_r(struct _reent *r) __attribute__((alias("syscall_not_implemented"))); int _kill_r(struct _reent *r, int pid, int sig) __attribute__((alias("syscall_not_implemented"))); -void _exit(int __status) -__attribute__((alias("syscall_not_implemented_aborts"))); #if defined(__GNUC__) && !defined(__clang__) #pragma GCC diagnostic pop #endif -/* Similar to syscall_not_implemented, but not taking struct _reent argument */ -int system(const char* str) -{ - errno = ENOSYS; - return -1; -} - -/* Replaces newlib fcntl, which has been compiled without HAVE_FCNTL */ -int fcntl(int fd, int cmd, ...) -{ - va_list args; - va_start(args, cmd); - int arg = va_arg(args, int); - va_end(args); - struct _reent* r = __getreent(); - return _fcntl_r(r, fd, cmd, arg); -} - /* No-op function, used to force linking this file, instead of the syscalls implementation from libgloss. */ -void newlib_include_syscalls_impl(void) +void esp_libc_include_reent_syscalls_impl(void) { } diff --git a/components/newlib/scandir.c b/components/newlib/src/scandir.c similarity index 100% rename from components/newlib/scandir.c rename to components/newlib/src/scandir.c diff --git a/components/newlib/stdatomic.c b/components/newlib/src/stdatomic.c similarity index 100% rename from components/newlib/stdatomic.c rename to components/newlib/src/stdatomic.c diff --git a/components/newlib/src/syscalls.c b/components/newlib/src/syscalls.c new file mode 100644 index 000000000000..4ead5eb1a3c7 --- /dev/null +++ b/components/newlib/src/syscalls.c @@ -0,0 +1,131 @@ +/* + * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ +#include +#include +#include +#include +#include +#include +#include + +#if CONFIG_LIBC_PICOLIBC +int open(const char *pathname, int flags, ...) +{ + /* The mode argument must be supplied if O_CREAT or O_TMPFILE is specified + * in flags. + * But O_TMPFILE is a linux flag. Ignore it + */ + if (flags & O_CREAT) { + va_list args; + va_start(args, flags); + mode_t mode = va_arg(args, mode_t); + va_end(args); + + return _open_r(__getreent(), pathname, flags, mode); + } + + return _open_r(__getreent(), pathname, flags, 0); +} + +int close(int fd) +{ + return _close_r(__getreent(), fd); +} + +ssize_t read(int fd, void *dst, size_t size) +{ + return _read_r(__getreent(), fd, dst, size); +} + +ssize_t write(int fd, const void *dst, size_t size) +{ + return _write_r(__getreent(), fd, dst, size); +} + +off_t lseek(int fd, off_t size, int mode) +{ + return _lseek_r(__getreent(), fd, size, mode); +} + +int creat(const char *path, mode_t mode) +{ + return _open_r(__getreent(), path, O_WRONLY | O_CREAT | O_TRUNC, mode); +} + +int gettimeofday(struct timeval *restrict tv, void *restrict tz) +{ + return _gettimeofday_r(__getreent(), tv, tz); +} + +int unlink(const char *path) +{ + return _unlink_r(__getreent(), path); +} + +int stat(const char * path, struct stat * st) +{ + return _stat_r(__getreent(), path, st); +} + +int link(const char* n1, const char* n2) +{ + return _link_r(__getreent(), n1, n2); +} + +int rename(const char *src, const char *dst) +{ + return _rename_r(__getreent(), src, dst); +} + +int isatty(int fd) +{ + struct stat buf; + + if (_fstat_r(__getreent(), fd, &buf) < 0) { + return 0; + } + + if (S_ISCHR(buf.st_mode)) { + return 1; + } + + return 0; +} + +int fcntl(int fd, int cmd, ...) +{ + va_list args; + va_start(args, cmd); + int arg = va_arg(args, int); + va_end(args); + return _fcntl_r(__getreent(), fd, cmd, arg); +} + +#endif // CONFIG_LIBC_PICOLIBC + +void _exit(int __status) +{ + abort(); +} + +int fstat(int fd, struct stat *st) +{ + return _fstat_r(__getreent(), fd, st); +} + +int raise(int sig) +{ + return _raise_r(__getreent(), sig); +} + +int system(const char* str) +{ + return _system_r(__getreent(), str); +} + +void esp_libc_include_syscalls_impl(void) +{ +} diff --git a/components/newlib/sysconf.c b/components/newlib/src/sysconf.c similarity index 100% rename from components/newlib/sysconf.c rename to components/newlib/src/sysconf.c diff --git a/components/newlib/system_libs.lf b/components/newlib/src/system_libs.lf similarity index 100% rename from components/newlib/system_libs.lf rename to components/newlib/src/system_libs.lf diff --git a/components/newlib/termios.c b/components/newlib/src/termios.c similarity index 100% rename from components/newlib/termios.c rename to components/newlib/src/termios.c diff --git a/components/newlib/time.c b/components/newlib/src/time.c similarity index 98% rename from components/newlib/time.c rename to components/newlib/src/time.c index ce993e8f71c9..5638a28be7d2 100644 --- a/components/newlib/time.c +++ b/components/newlib/src/time.c @@ -295,7 +295,9 @@ WEAK_UNLESS_TIMEFUNC_IMPL int clock_getres(clockid_t clock_id, struct timespec * #endif } -void esp_newlib_time_init(void) +/* TODO IDF-11226 */ +void esp_newlib_time_init(void) __attribute__((alias("esp_libc_time_init"))); +void esp_libc_time_init(void) { - esp_time_impl_init(); + esp_set_time_from_rtc(); } diff --git a/components/newlib/test_apps/newlib/CMakeLists.txt b/components/newlib/test_apps/newlib/CMakeLists.txt index 1c4cb3414c3d..a288fe07f506 100644 --- a/components/newlib/test_apps/newlib/CMakeLists.txt +++ b/components/newlib/test_apps/newlib/CMakeLists.txt @@ -2,7 +2,6 @@ cmake_minimum_required(VERSION 3.16) set(EXTRA_COMPONENT_DIRS "$ENV{IDF_PATH}/tools/unit-test-app/components") -set(COMPONENTS main) include($ENV{IDF_PATH}/tools/cmake/project.cmake) project(newlib_test) diff --git a/components/newlib/test_apps/newlib/main/CMakeLists.txt b/components/newlib/test_apps/newlib/main/CMakeLists.txt index ec619cce43cf..65505baadfb4 100644 --- a/components/newlib/test_apps/newlib/main/CMakeLists.txt +++ b/components/newlib/test_apps/newlib/main/CMakeLists.txt @@ -1,13 +1,21 @@ -idf_component_register(SRCS - "test_app_main.c" - "test_atomic.c" - "test_file.c" - "test_locks.c" - "test_misc.c" - "test_newlib.c" - "test_printf.c" - "test_setjmp.c" - "test_stdatomic.c" - "test_time.c" - PRIV_REQUIRES unity vfs cmock esp_timer spi_flash test_utils pthread esp_psram +set(srcs + "test_app_main.c" + "test_atomic.c" + "test_locks.c" + "test_misc.c" + "test_memstream.c" + "test_newlib.c" + "test_setjmp.c" + "test_stdatomic.c" + "test_time.c") + +if(CONFIG_LIBC_NEWLIB) + list(APPEND srcs + # test_file.c tests if "_blksize" field was set correct to "FILE" struct. + # But picolibc does not have such field in the "FILE". So test is applicable only for newlib. + "test_file.c") +endif() + +idf_component_register(SRCS "${srcs}" + PRIV_REQUIRES unity vfs cmock driver esp_timer spi_flash test_utils pthread esp_psram WHOLE_ARCHIVE) diff --git a/components/newlib/test_apps/newlib/main/test_memstream.c b/components/newlib/test_apps/newlib/main/test_memstream.c new file mode 100644 index 000000000000..06d6e70b1ad0 --- /dev/null +++ b/components/newlib/test_apps/newlib/main/test_memstream.c @@ -0,0 +1,72 @@ +/* + * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Unlicense OR CC0-1.0 + */ +#include +#include +#include +#include +#include +#include +#include +#include "test_utils.h" + +TEST_CASE("memstream_fseek", "[newlib]") +{ + FILE *stream; + char *buf; + size_t len; + off_t eob; + + stream = open_memstream(&buf, &len); + fprintf(stream, "Hello Espressif!"); + fflush(stream); + TEST_ASSERT_EQUAL_STRING("Hello Espressif!", buf); + TEST_ASSERT_EQUAL_UINT32(strlen("Hello Espressif!"), len); + eob = ftell(stream); + fseek(stream, 0, SEEK_SET); + fprintf(stream, "HELLO"); + fseek(stream, eob, SEEK_SET); + fclose(stream); + TEST_ASSERT_EQUAL_STRING("HELLO Espressif!", buf); + TEST_ASSERT_EQUAL_UINT32(strlen("HELLO Espressif!"), len); + free(buf); +} + +TEST_CASE("memstream_overwrite", "[newlib]") +{ + FILE *stream; + char *buf; + size_t len; + + stream = open_memstream(&buf, &len); + fprintf(stream, "Hello Espressif!"); + fflush(stream); + TEST_ASSERT_EQUAL_STRING("Hello Espressif!", buf); + TEST_ASSERT_EQUAL_UINT32(strlen("Hello Espressif!"), len); + fseek(stream, 0, SEEK_SET); + fprintf(stream, "HELLO"); + fclose(stream); + TEST_ASSERT_EQUAL_STRING("HELLO", buf); + TEST_ASSERT_EQUAL_UINT32(strlen("HELLO"), len); + free(buf); +} + +TEST_CASE("memstream_realloc", "[newlib]") +{ + FILE *stream; + char *buf; + size_t len; + + stream = open_memstream(&buf, &len); + // Initial buf size is BUFSIZ. Try to go out of bounds. + for (int i = 0; i < BUFSIZ * 2; i++) { + fputc('A' + (i % ('Z' - 'A')), stream); + } + fclose(stream); + for (int i = 0; i < BUFSIZ * 2; i++) { + TEST_ASSERT_EQUAL_UINT32('A' + (i % ('Z' - 'A')), buf[i]); + } + free(buf); +} diff --git a/components/newlib/test_apps/newlib/main/test_newlib.c b/components/newlib/test_apps/newlib/main/test_newlib.c index 48cd9d0992e6..a2d69698fb27 100644 --- a/components/newlib/test_apps/newlib/main/test_newlib.c +++ b/components/newlib/test_apps/newlib/main/test_newlib.c @@ -136,18 +136,19 @@ static bool fn_in_rom(void *fn) TEST_CASE("check if ROM or Flash is used for functions", "[newlib]") { -#if PRINTF_NANO_IN_ROM || (ESP_ROM_HAS_NEWLIB_NORMAL_FORMAT && !CONFIG_NEWLIB_NANO_FORMAT) +#if CONFIG_LIBC_NEWLIB && (PRINTF_NANO_IN_ROM || (ESP_ROM_HAS_NEWLIB_NORMAL_FORMAT && !CONFIG_NEWLIB_NANO_FORMAT)) TEST_ASSERT(fn_in_rom(vfprintf)); #else TEST_ASSERT_FALSE(fn_in_rom(vfprintf)); -#endif // PRINTF_NANO_IN_ROM || (ESP_ROM_HAS_NEWLIB_NORMAL_FORMAT && !CONFIG_NEWLIB_NANO_FORMAT) +#endif // CONFIG_LIBC_NEWLIB && (PRINTF_NANO_IN_ROM || (ESP_ROM_HAS_NEWLIB_NORMAL_FORMAT && !CONFIG_NEWLIB_NANO_FORMAT)) -#if SSCANF_NANO_IN_ROM || (ESP_ROM_HAS_NEWLIB_NORMAL_FORMAT && !CONFIG_NEWLIB_NANO_FORMAT) +#if CONFIG_LIBC_NEWLIB && (SSCANF_NANO_IN_ROM || (ESP_ROM_HAS_NEWLIB_NORMAL_FORMAT && !CONFIG_NEWLIB_NANO_FORMAT)) TEST_ASSERT(fn_in_rom(sscanf)); #else TEST_ASSERT_FALSE(fn_in_rom(sscanf)); -#endif // SSCANF_NANO_IN_ROM || (ESP_ROM_HAS_NEWLIB_NORMAL_FORMAT && !CONFIG_NEWLIB_NANO_FORMAT) +#endif // CONFIG_LIBC_NEWLIB && (SSCANF_NANO_IN_ROM || (ESP_ROM_HAS_NEWLIB_NORMAL_FORMAT && !CONFIG_NEWLIB_NANO_FORMAT)) +#if CONFIG_LIBC_NEWLIB #if defined(CONFIG_IDF_TARGET_ESP32) #if defined(CONFIG_SPIRAM_CACHE_WORKAROUND) @@ -162,10 +163,15 @@ TEST_CASE("check if ROM or Flash is used for functions", "[newlib]") /* S2 do not have these in ROM */ TEST_ASSERT_FALSE(fn_in_rom(atoi)); TEST_ASSERT_FALSE(fn_in_rom(strtol)); -#else +#else // defined(CONFIG_IDF_TARGET_ESP32) TEST_ASSERT(fn_in_rom(atoi)); TEST_ASSERT(fn_in_rom(strtol)); #endif // defined(CONFIG_IDF_TARGET_ESP32) +#else // CONFIG_LIBC_NEWLIB + /* picolobc uses it's own implementation without using struct reent */ + TEST_ASSERT_FALSE(fn_in_rom(atoi)); + TEST_ASSERT_FALSE(fn_in_rom(strtol)); +#endif // CONFIG_LIBC_NEWLIB } #ifndef CONFIG_NEWLIB_NANO_FORMAT diff --git a/components/newlib/test_apps/newlib/pytest_newlib.py b/components/newlib/test_apps/newlib/pytest_newlib.py index 8b2c5cc4505d..6b66d1673652 100644 --- a/components/newlib/test_apps/newlib/pytest_newlib.py +++ b/components/newlib/test_apps/newlib/pytest_newlib.py @@ -9,6 +9,7 @@ 'config', [ pytest.param('default', marks=[pytest.mark.supported_targets]), + pytest.param('picolibc', marks=[pytest.mark.supported_targets]), pytest.param('options', marks=[pytest.mark.supported_targets]), pytest.param('single_core_esp32', marks=[pytest.mark.esp32]), pytest.param('psram_esp32', marks=[pytest.mark.esp32]), diff --git a/components/newlib/test_apps/newlib/sdkconfig.ci.picolibc b/components/newlib/test_apps/newlib/sdkconfig.ci.picolibc new file mode 100644 index 000000000000..71a154be0efc --- /dev/null +++ b/components/newlib/test_apps/newlib/sdkconfig.ci.picolibc @@ -0,0 +1,2 @@ +CONFIG_IDF_EXPERIMENTAL_FEATURES=y +CONFIG_LIBC_PICOLIBC=y diff --git a/components/newlib/test_apps/newlib/sdkconfig.ci.release_esp32c2 b/components/newlib/test_apps/newlib/sdkconfig.ci.release_esp32c2 index 5cf6db1b443c..4f591806303f 100644 --- a/components/newlib/test_apps/newlib/sdkconfig.ci.release_esp32c2 +++ b/components/newlib/test_apps/newlib/sdkconfig.ci.release_esp32c2 @@ -4,7 +4,7 @@ CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_SIZE=y CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT=y # C2 specific moved from old C2 default config -CONFIG_NEWLIB_TIME_SYSCALL_USE_NONE=n -CONFIG_NEWLIB_TIME_SYSCALL_USE_HRT=y -CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC=n -CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC_HRT=n +CONFIG_LIBC_TIME_SYSCALL_USE_NONE=n +CONFIG_LIBC_TIME_SYSCALL_USE_HRT=y +CONFIG_LIBC_TIME_SYSCALL_USE_RTC=n +CONFIG_LIBC_TIME_SYSCALL_USE_RTC_HRT=n diff --git a/components/nvs_flash/src/nvs_platform.hpp b/components/nvs_flash/src/nvs_platform.hpp index 3c9275aa7404..19a30e875c8d 100644 --- a/components/nvs_flash/src/nvs_platform.hpp +++ b/components/nvs_flash/src/nvs_platform.hpp @@ -6,6 +6,9 @@ #pragma once #include "esp_err.h" +#ifndef LINUX_TARGET +#include +#endif namespace nvs { diff --git a/components/nvs_flash/test_apps/main/app_main.c b/components/nvs_flash/test_apps/main/app_main.c index 43ade3807b37..17601f77a183 100644 --- a/components/nvs_flash/test_apps/main/app_main.c +++ b/components/nvs_flash/test_apps/main/app_main.c @@ -11,6 +11,7 @@ #include "mbedtls/aes.h" #endif #include "memory_checks.h" +#include "esp_newlib.h" #include "esp_heap_caps.h" #include "time.h" diff --git a/components/pthread/pthread_cond_var.c b/components/pthread/pthread_cond_var.c index 145ae430747b..674dce89e893 100644 --- a/components/pthread/pthread_cond_var.c +++ b/components/pthread/pthread_cond_var.c @@ -17,6 +17,7 @@ #include #include +#include #include "esp_log.h" const static char *TAG = "esp_pthread"; diff --git a/components/spi_flash/spi_flash_os_func_app.c b/components/spi_flash/spi_flash_os_func_app.c index 4bbfbb9e369e..b017ecf0bd75 100644 --- a/components/spi_flash/spi_flash_os_func_app.c +++ b/components/spi_flash/spi_flash_os_func_app.c @@ -5,6 +5,7 @@ */ #include +#include #include //For max/min #include "esp_attr.h" #include "esp_private/system_internal.h" diff --git a/components/spi_flash/test_apps/esp_flash_stress/main/test_app_main.c b/components/spi_flash/test_apps/esp_flash_stress/main/test_app_main.c index 54d22dfd2ddd..5f46799fcd9a 100644 --- a/components/spi_flash/test_apps/esp_flash_stress/main/test_app_main.c +++ b/components/spi_flash/test_apps/esp_flash_stress/main/test_app_main.c @@ -7,6 +7,7 @@ #include "unity.h" #include "unity_test_utils.h" #include "esp_heap_caps.h" +#include "esp_newlib.h" // load partition table in tests will use memory #define TEST_MEMORY_LEAK_THRESHOLD (600) diff --git a/components/ulp/cmake/IDFULPProject.cmake b/components/ulp/cmake/IDFULPProject.cmake index fd90cfd87ffb..d9d4197b71a8 100644 --- a/components/ulp/cmake/IDFULPProject.cmake +++ b/components/ulp/cmake/IDFULPProject.cmake @@ -180,6 +180,11 @@ endfunction() function(ulp_add_build_binary_targets ulp_app_name) + if(ADD_PICOLIBC_SPECS) + target_compile_options(${ulp_app_name} PRIVATE $<$:-specs=picolibc.specs>) + target_compile_options(${ulp_app_name} PRIVATE $<$:-specs=picolibcpp.specs>) + endif() + if(CONFIG_ULP_COPROC_TYPE_LP_CORE) set(ULP_BASE_ADDR "0x0") else() diff --git a/components/ulp/esp32ulp_mapgen.py b/components/ulp/esp32ulp_mapgen.py index 382752269c3c..90b8535aaee2 100755 --- a/components/ulp/esp32ulp_mapgen.py +++ b/components/ulp/esp32ulp_mapgen.py @@ -2,11 +2,8 @@ # esp32ulp_mapgen utility converts a symbol list provided by nm into an export script # for the linker and a header file. # -# SPDX-FileCopyrightText: 2016-2021 Espressif Systems (Shanghai) CO LTD +# SPDX-FileCopyrightText: 2016-2024 Espressif Systems (Shanghai) CO LTD # SPDX-License-Identifier: Apache-2.0 - -from __future__ import print_function - import argparse import os import textwrap @@ -21,18 +18,20 @@ def gen_ld_h_from_sym(f_sym: typing.TextIO, f_ld: typing.TextIO, f_h: typing.Tex /* ULP variable definitions for the linker. * This file is generated automatically by {UTIL} utility. */ - """ + """ # noqa: E222 )) f_h.write(textwrap.dedent( f""" /* ULP variable definitions for the compiler. * This file is generated automatically by {UTIL} utility. */ + #include + #pragma once #ifdef __cplusplus extern "C" {{ #endif - """ + """ # noqa: E222 )) for line in f_sym: diff --git a/components/ulp/project_include.cmake b/components/ulp/project_include.cmake index 47b2af53c404..3cb52588efe9 100644 --- a/components/ulp/project_include.cmake +++ b/components/ulp/project_include.cmake @@ -60,6 +60,7 @@ function(__setup_ulp_project app_name project_path s_sources exp_dep_srcs) -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FLAG} -DULP_S_SOURCES=$ -DULP_APP_NAME=${app_name} + -DADD_PICOLIBC_SPECS=${CONFIG_LIBC_PICOLIBC} -DCOMPONENT_DIR=${COMPONENT_DIR} -DCOMPONENT_INCLUDES=$ -DIDF_TARGET=${idf_target} diff --git a/components/vfs/vfs.c b/components/vfs/vfs.c index 7c6cd90a1cfc..ed5c68ef6485 100644 --- a/components/vfs/vfs.c +++ b/components/vfs/vfs.c @@ -968,7 +968,7 @@ ssize_t esp_vfs_read(struct _reent *r, int fd, void * dst, size_t size) ssize_t esp_vfs_pread(int fd, void *dst, size_t size, off_t offset) { - struct _reent *r = __getreent(); + [[maybe_unused]] struct _reent *r = __getreent(); const vfs_entry_t* vfs = get_vfs_for_fd(fd); const int local_fd = get_local_fd(vfs, fd); if (vfs == NULL || local_fd < 0) { @@ -982,7 +982,7 @@ ssize_t esp_vfs_pread(int fd, void *dst, size_t size, off_t offset) ssize_t esp_vfs_pwrite(int fd, const void *src, size_t size, off_t offset) { - struct _reent *r = __getreent(); + [[maybe_unused]] struct _reent *r = __getreent(); const vfs_entry_t* vfs = get_vfs_for_fd(fd); const int local_fd = get_local_fd(vfs, fd); if (vfs == NULL || local_fd < 0) { @@ -1047,7 +1047,7 @@ int esp_vfs_ioctl(int fd, int cmd, ...) { const vfs_entry_t* vfs = get_vfs_for_fd(fd); const int local_fd = get_local_fd(vfs, fd); - struct _reent* r = __getreent(); + [[maybe_unused]] struct _reent* r = __getreent(); if (vfs == NULL || local_fd < 0) { __errno_r(r) = EBADF; return -1; @@ -1076,7 +1076,7 @@ int esp_vfs_fsync(int fd) { const vfs_entry_t* vfs = get_vfs_for_fd(fd); const int local_fd = get_local_fd(vfs, fd); - struct _reent* r = __getreent(); + [[maybe_unused]] struct _reent* r = __getreent(); if (vfs == NULL || local_fd < 0) { __errno_r(r) = EBADF; return -1; @@ -1105,7 +1105,7 @@ int esp_vfs_utime(const char *path, const struct utimbuf *times) { int ret; const vfs_entry_t* vfs = get_vfs_for_path(path); - struct _reent* r = __getreent(); + [[maybe_unused]] struct _reent* r = __getreent(); if (vfs == NULL) { __errno_r(r) = ENOENT; return -1; @@ -1181,7 +1181,7 @@ int esp_vfs_rename(struct _reent *r, const char *src, const char *dst) DIR* esp_vfs_opendir(const char* name) { const vfs_entry_t* vfs = get_vfs_for_path(name); - struct _reent* r = __getreent(); + [[maybe_unused]] struct _reent* r = __getreent(); if (vfs == NULL) { __errno_r(r) = ENOENT; return NULL; @@ -1198,7 +1198,7 @@ DIR* esp_vfs_opendir(const char* name) struct dirent* esp_vfs_readdir(DIR* pdir) { const vfs_entry_t* vfs = get_vfs_for_index(pdir->dd_vfs_idx); - struct _reent* r = __getreent(); + [[maybe_unused]] struct _reent* r = __getreent(); if (vfs == NULL) { __errno_r(r) = EBADF; return NULL; @@ -1211,7 +1211,7 @@ struct dirent* esp_vfs_readdir(DIR* pdir) int esp_vfs_readdir_r(DIR* pdir, struct dirent* entry, struct dirent** out_dirent) { const vfs_entry_t* vfs = get_vfs_for_index(pdir->dd_vfs_idx); - struct _reent* r = __getreent(); + [[maybe_unused]] struct _reent* r = __getreent(); if (vfs == NULL) { errno = EBADF; return -1; @@ -1224,7 +1224,7 @@ int esp_vfs_readdir_r(DIR* pdir, struct dirent* entry, struct dirent** out_diren long esp_vfs_telldir(DIR* pdir) { const vfs_entry_t* vfs = get_vfs_for_index(pdir->dd_vfs_idx); - struct _reent* r = __getreent(); + [[maybe_unused]] struct _reent* r = __getreent(); if (vfs == NULL) { errno = EBADF; return -1; @@ -1237,7 +1237,7 @@ long esp_vfs_telldir(DIR* pdir) void esp_vfs_seekdir(DIR* pdir, long loc) { const vfs_entry_t* vfs = get_vfs_for_index(pdir->dd_vfs_idx); - struct _reent* r = __getreent(); + [[maybe_unused]] struct _reent* r = __getreent(); if (vfs == NULL) { errno = EBADF; return; @@ -1253,7 +1253,7 @@ void esp_vfs_rewinddir(DIR* pdir) int esp_vfs_closedir(DIR* pdir) { const vfs_entry_t* vfs = get_vfs_for_index(pdir->dd_vfs_idx); - struct _reent* r = __getreent(); + [[maybe_unused]] struct _reent* r = __getreent(); if (vfs == NULL) { errno = EBADF; return -1; @@ -1266,7 +1266,7 @@ int esp_vfs_closedir(DIR* pdir) int esp_vfs_mkdir(const char* name, mode_t mode) { const vfs_entry_t* vfs = get_vfs_for_path(name); - struct _reent* r = __getreent(); + [[maybe_unused]] struct _reent* r = __getreent(); if (vfs == NULL) { __errno_r(r) = ENOENT; return -1; @@ -1283,7 +1283,7 @@ int esp_vfs_mkdir(const char* name, mode_t mode) int esp_vfs_rmdir(const char* name) { const vfs_entry_t* vfs = get_vfs_for_path(name); - struct _reent* r = __getreent(); + [[maybe_unused]] struct _reent* r = __getreent(); if (vfs == NULL) { __errno_r(r) = ENOENT; return -1; @@ -1301,7 +1301,7 @@ int esp_vfs_access(const char *path, int amode) { int ret; const vfs_entry_t* vfs = get_vfs_for_path(path); - struct _reent* r = __getreent(); + [[maybe_unused]] struct _reent* r = __getreent(); if (vfs == NULL) { __errno_r(r) = ENOENT; return -1; @@ -1315,7 +1315,7 @@ int esp_vfs_truncate(const char *path, off_t length) { int ret; const vfs_entry_t* vfs = get_vfs_for_path(path); - struct _reent* r = __getreent(); + [[maybe_unused]] struct _reent* r = __getreent(); if (vfs == NULL) { __errno_r(r) = ENOENT; return -1; @@ -1332,7 +1332,7 @@ int esp_vfs_ftruncate(int fd, off_t length) { const vfs_entry_t* vfs = get_vfs_for_fd(fd); int local_fd = get_local_fd(vfs, fd); - struct _reent* r = __getreent(); + [[maybe_unused]] struct _reent* r = __getreent(); if (vfs == NULL || local_fd < 0) { __errno_r(r) = EBADF; return -1; @@ -1422,7 +1422,7 @@ int esp_vfs_select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *errorfds // NOTE: Please see the "Synchronous input/output multiplexing" section of the ESP-IDF Programming Guide // (API Reference -> Storage -> Virtual Filesystem) for a general overview of the implementation of VFS select(). int ret = 0; - struct _reent* r = __getreent(); + [[maybe_unused]] struct _reent* r = __getreent(); ESP_LOGD(TAG, "esp_vfs_select starts with nfds = %d", nfds); if (timeout) { @@ -1694,7 +1694,7 @@ int tcgetattr(int fd, struct termios *p) { const vfs_entry_t* vfs = get_vfs_for_fd(fd); const int local_fd = get_local_fd(vfs, fd); - struct _reent* r = __getreent(); + [[maybe_unused]] struct _reent* r = __getreent(); if (vfs == NULL || local_fd < 0) { __errno_r(r) = EBADF; return -1; @@ -1708,7 +1708,7 @@ int tcsetattr(int fd, int optional_actions, const struct termios *p) { const vfs_entry_t* vfs = get_vfs_for_fd(fd); const int local_fd = get_local_fd(vfs, fd); - struct _reent* r = __getreent(); + [[maybe_unused]] struct _reent* r = __getreent(); if (vfs == NULL || local_fd < 0) { __errno_r(r) = EBADF; return -1; @@ -1722,7 +1722,7 @@ int tcdrain(int fd) { const vfs_entry_t* vfs = get_vfs_for_fd(fd); const int local_fd = get_local_fd(vfs, fd); - struct _reent* r = __getreent(); + [[maybe_unused]] struct _reent* r = __getreent(); if (vfs == NULL || local_fd < 0) { __errno_r(r) = EBADF; return -1; @@ -1736,7 +1736,7 @@ int tcflush(int fd, int select) { const vfs_entry_t* vfs = get_vfs_for_fd(fd); const int local_fd = get_local_fd(vfs, fd); - struct _reent* r = __getreent(); + [[maybe_unused]] struct _reent* r = __getreent(); if (vfs == NULL || local_fd < 0) { __errno_r(r) = EBADF; return -1; @@ -1750,7 +1750,7 @@ int tcflow(int fd, int action) { const vfs_entry_t* vfs = get_vfs_for_fd(fd); const int local_fd = get_local_fd(vfs, fd); - struct _reent* r = __getreent(); + [[maybe_unused]] struct _reent* r = __getreent(); if (vfs == NULL || local_fd < 0) { __errno_r(r) = EBADF; return -1; @@ -1764,7 +1764,7 @@ pid_t tcgetsid(int fd) { const vfs_entry_t* vfs = get_vfs_for_fd(fd); const int local_fd = get_local_fd(vfs, fd); - struct _reent* r = __getreent(); + [[maybe_unused]] struct _reent* r = __getreent(); if (vfs == NULL || local_fd < 0) { __errno_r(r) = EBADF; return -1; @@ -1778,7 +1778,7 @@ int tcsendbreak(int fd, int duration) { const vfs_entry_t* vfs = get_vfs_for_fd(fd); const int local_fd = get_local_fd(vfs, fd); - struct _reent* r = __getreent(); + [[maybe_unused]] struct _reent* r = __getreent(); if (vfs == NULL || local_fd < 0) { __errno_r(r) = EBADF; return -1; diff --git a/docs/en/COPYRIGHT.rst b/docs/en/COPYRIGHT.rst index 484eb59f2a28..1082cc860a5e 100644 --- a/docs/en/COPYRIGHT.rst +++ b/docs/en/COPYRIGHT.rst @@ -19,7 +19,7 @@ Firmware Components These third party libraries can be included into the application (firmware) produced by ESP-IDF. -* :component:`Newlib ` is licensed under the BSD License and is Copyright of various parties, as described in :component_file:`COPYING.NEWLIB `. +* :component:`Newlib ` is licensed under the BSD License and is Copyright of various parties, as described in :component_file:`COPYING.NEWLIB `. If :ref:`CONFIG_LIBC_PICOLIBC` is enabled, see also :component_file:`COPYING.picolibc `. * :component:`Xtensa header files ` are Copyright (C) 2013 Tensilica Inc and are licensed under the MIT License as reproduced in the individual header files. @@ -141,6 +141,7 @@ Copyright (C) 2011 ChaN, all right reserved. .. _Newlib: https://sourceware.org/newlib/ +.. _Picolibc: https://keithp.com/picolibc/ .. _FreeRTOS: https://freertos.org/ .. _esptool.py: https://github.com/espressif/esptool .. _LWIP: https://savannah.nongnu.org/projects/lwip/ diff --git a/docs/en/api-guides/c.rst b/docs/en/api-guides/c.rst index fb3f88c50f17..3bb09b4b971d 100644 --- a/docs/en/api-guides/c.rst +++ b/docs/en/api-guides/c.rst @@ -3,7 +3,14 @@ C Support :link_to_translation:`zh_CN:[中文]` -ESP-IDF is primarily written in C and provides C APIs. ESP-IDF uses `Newlib `_ as its C Standard Library implementation (the Newlib version is specified in :component_file:`newlib/sbom.yml`). In general, all C features that are supported by the compiler (currently GCC) can be used in ESP-IDF, unless specified in :ref:`unsupported_c_features` below. +ESP-IDF is primarily written in C and provides C APIs. ESP-IDF can use one of the following C Standard Library implementations: + +- `Newlib `_ (default) +- `Picolibc `_ (enabled with :ref:`CONFIG_LIBC_PICOLIBC` Kconfig option) + +The Newlib version is specified in :component_file:`newlib/sbom.yml`. + +In general, all C features supported by the compiler (currently GCC) can be used in ESP-IDF, unless otherwise noted in :ref:`unsupported_c_features` below. .. _c_version: diff --git a/docs/en/api-guides/lwip.rst b/docs/en/api-guides/lwip.rst index ec3433b51807..7e946181c9f4 100644 --- a/docs/en/api-guides/lwip.rst +++ b/docs/en/api-guides/lwip.rst @@ -173,7 +173,7 @@ Example: Socket Error Reason Code ++++++++++++++++++++++++ -Below is a list of common error codes. For a more detailed list of standard POSIX/C error codes, please see `newlib errno.h `_ and the platform-specific extensions :component_file:`newlib/platform_include/errno.h`. +Below is a list of common error codes. For a more detailed list of standard POSIX/C error codes, please see `newlib errno.h `_ and the platform-specific extensions :component_file:`newlib/platform_include/sys/errno.h`. .. list-table:: :header-rows: 1 diff --git a/docs/en/api-guides/performance/ram-usage.rst b/docs/en/api-guides/performance/ram-usage.rst index 61d3da465480..98eddd5df1df 100644 --- a/docs/en/api-guides/performance/ram-usage.rst +++ b/docs/en/api-guides/performance/ram-usage.rst @@ -96,6 +96,7 @@ Reducing Stack Sizes - Avoid stack heavy functions. String formatting functions (like ``printf()``) are particularly heavy users of the stack, so any task which does not ever call these can usually have its stack size reduced. + - Using experimental :ref:`picolibc-instead-of-newlib` reduces the stack usage of ``printf()`` calls significantly. - Enabling :ref:`newlib-nano-formatting` reduces the stack usage of any task that calls ``printf()`` or other C string formatting functions. - Avoid allocating large variables on the stack. In C, any large structures or arrays allocated as an automatic variable (i.e., default scope of a C declaration) uses space on the stack. To minimize the sizes of these, allocate them statically and/or see if you can save memory by dynamically allocating them from the heap only when they are needed. diff --git a/docs/en/api-guides/performance/size.rst b/docs/en/api-guides/performance/size.rst index 7cfc916b400b..0a94ed855e77 100644 --- a/docs/en/api-guides/performance/size.rst +++ b/docs/en/api-guides/performance/size.rst @@ -151,6 +151,17 @@ lwIP IPv4 Before disabling IPv4 support, please note that IPv6 only network environments are not ubiquitous and must be supported in the local network, e.g., by your internet service provider or using constrained local network settings. +.. _picolibc-instead-of-newlib: + +Picolibc instead of Newlib +@@@@@@@@@@@@@@@@@@@@@@@@@@ + +By default, ESP-IDF uses the Newlib C library, and it also has experimental support for the Picolibc C library. + +Picolibc C library provides smaller ``printf``-family functions and can reduce the binary size by up to 30 KB, depending on your application. + +To switch to linking against the Picolibc C library, please enable the configuration options :ref:`CONFIG_IDF_EXPERIMENTAL_FEATURES` and :ref:`CONFIG_LIBC_PICOLIBC`. + .. _newlib-nano-formatting: Newlib Nano Formatting @@ -160,13 +171,13 @@ By default, ESP-IDF uses Newlib "full" formatting for I/O functions (``printf()` .. only:: CONFIG_ESP_ROM_HAS_NEWLIB_NANO_FORMAT - Enabling the config option :ref:`CONFIG_NEWLIB_NANO_FORMAT` will switch Newlib to the "Nano" formatting mode. This is smaller in code size, and a large part of the implementation is compiled into the {IDF_TARGET_NAME} ROM, so it does not need to be included in the binary at all. + Enabling the config option :ref:`CONFIG_LIBC_NEWLIB_NANO_FORMAT` will switch Newlib to the "Nano" formatting mode. This is smaller in code size, and a large part of the implementation is compiled into the {IDF_TARGET_NAME} ROM, so it does not need to be included in the binary at all. The exact difference in binary size depends on which features the firmware uses, but 25 KB ~ 50 KB is typical. .. only:: CONFIG_ESP_ROM_HAS_NEWLIB_NORMAL_FORMAT - Disabling the config option :ref:`CONFIG_NEWLIB_NANO_FORMAT` will switch Newlib to the "full" formatting mode. This will reduce the binary size, as {IDF_TARGET_NAME} has the full formatting version of the functions in ROM, so it does not need to be included in the binary at all. + Disabling the config option :ref:`CONFIG_LIBC_NEWLIB_NANO_FORMAT` will switch Newlib to the "full" formatting mode. This will reduce the binary size, as {IDF_TARGET_NAME} has the full formatting version of the functions in ROM, so it does not need to be included in the binary at all. Enabling "Nano" formatting reduces the stack usage of each function that calls ``printf()`` or another string formatting function, see :ref:`optimize-stack-sizes`. @@ -177,7 +188,7 @@ Enabling "Nano" formatting reduces the stack usage of each function that calls ` .. note:: - :ref:`CONFIG_NEWLIB_NANO_FORMAT` is enabled by default on {IDF_TARGET_NAME}. + :ref:`CONFIG_LIBC_NEWLIB_NANO_FORMAT` is enabled by default on {IDF_TARGET_NAME}. .. _Newlib README file: https://sourceware.org/newlib/README diff --git a/docs/en/api-guides/stdio.rst b/docs/en/api-guides/stdio.rst index 55d14f6f0276..f0b10cfaed31 100644 --- a/docs/en/api-guides/stdio.rst +++ b/docs/en/api-guides/stdio.rst @@ -101,8 +101,8 @@ VFS drivers provide an optional newline conversion feature for input and output. Applications can configure this behavior globally using the following Kconfig options: - - :ref:`CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF`, :ref:`CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR`, :ref:`CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF` - for output - - :ref:`CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF`, :ref:`CONFIG_NEWLIB_STDIN_LINE_ENDING_CR`, :ref:`CONFIG_NEWLIB_STDIN_LINE_ENDING_LF` - for input + - :ref:`CONFIG_LIBC_STDOUT_LINE_ENDING_CRLF`, :ref:`CONFIG_LIBC_STDOUT_LINE_ENDING_CR`, :ref:`CONFIG_LIBC_STDOUT_LINE_ENDING_LF` - for output + - :ref:`CONFIG_LIBC_STDIN_LINE_ENDING_CRLF`, :ref:`CONFIG_LIBC_STDIN_LINE_ENDING_CR`, :ref:`CONFIG_LIBC_STDIN_LINE_ENDING_LF` - for input It is also possible to configure line ending conversion for the specific VFS driver: diff --git a/docs/en/api-reference/system/system_time.rst b/docs/en/api-reference/system/system_time.rst index 1e9746614d7a..8d9cd267544d 100644 --- a/docs/en/api-reference/system/system_time.rst +++ b/docs/en/api-reference/system/system_time.rst @@ -26,7 +26,7 @@ The possible combinations of hardware timers used to keep system time are listed - High-resolution timer - None -It is recommended that users stick to the default option as it provides the highest accuracy. However, users can also select a different setting via the :ref:`CONFIG_NEWLIB_TIME_SYSCALL` configuration option. +It is recommended that users stick to the default option as it provides the highest accuracy. However, users can also select a different setting via the :ref:`CONFIG_LIBC_TIME_SYSCALL` configuration option. .. _rtc-clock-source-choice: diff --git a/docs/zh_CN/COPYRIGHT.rst b/docs/zh_CN/COPYRIGHT.rst index de29353097bc..cbd82840d074 100644 --- a/docs/zh_CN/COPYRIGHT.rst +++ b/docs/zh_CN/COPYRIGHT.rst @@ -19,7 +19,9 @@ 以下这些第三方库包含在 ESP-IDF 生成的应用程序(固件)中。 -* :component:`Newlib ` 经 BSD 许可证许可,版权归各方所有,如 :component_file:`COPYING.NEWLIB ` 中所述。 +* :component:`Newlib ` 经 BSD 许可证许可,版权归各方所有,如 :component_file:`COPYING.NEWLIB ` 中所述。如果启用了 :ref:`CONFIG_LIBC_PICOLIBC`,另请参阅 :component_file:`COPYING.picolibc `。 + +* :component:`Picolibc ` 经 BSD 许可证许可,版权归各方所有,如 :component_file:`COPYING.picolibc ` 中所述。 * :component:`Xtensa 头文件 ` 版权归 2013 Tensilica 公司所有,并根据各头文件中复制的 MIT 许可证进行许可。 @@ -141,6 +143,7 @@ TJpgDec - Tiny JPEG 解压器 R0.01 (C) 2011 ChaN,是一个用于小型嵌入 .. _Newlib: https://sourceware.org/newlib/ +.. _Picolibc: https://keithp.com/picolibc/ .. _FreeRTOS: https://freertos.org/ .. _esptool.py: https://github.com/espressif/esptool .. _LWIP: https://savannah.nongnu.org/projects/lwip/ diff --git a/docs/zh_CN/api-guides/c.rst b/docs/zh_CN/api-guides/c.rst index f22d530bbb76..76ee9f24668f 100644 --- a/docs/zh_CN/api-guides/c.rst +++ b/docs/zh_CN/api-guides/c.rst @@ -3,7 +3,14 @@ C 支持 :link_to_translation:`en:[English]` -ESP-IDF 主要使用 C 语言编写,并提供 C 语言 API。ESP-IDF 使用 `Newlib `_ 作为 C 标准函数库对实现(Newlib 版本可以在 :component_file:`newlib/sbom.yml` 指定)。一般来说,除非在下面的 :ref:`unsupported_c_features` 中特别说明,当前使用的编译器(目前是 GCC)支持的所有 C 语言功能在 ESP-IDF 中均可使用。 +ESP-IDF 主要使用 C 语言编写,并提供 C API。ESP-IDF 可以使用以下 C 标准库实现之一: + +- `Newlib `_ (默认) +- `Picolibc `_ (通过 :ref:`CONFIG_LIBC_PICOLIBC` Kconfig 选项启用) + +Newlib 的版本号记录在 :component_file:`newlib/sbom.yml` 文件中。 + +一般来说,除非在下面的 :ref:`unsupported_c_features` 中特别说明,当前使用的编译器(目前是 GCC)支持的所有 C 语言功能在 ESP-IDF 中均可使用。 .. _c_version: diff --git a/docs/zh_CN/api-guides/lwip.rst b/docs/zh_CN/api-guides/lwip.rst index 1a659dcd2467..9a02f9fbb917 100644 --- a/docs/zh_CN/api-guides/lwip.rst +++ b/docs/zh_CN/api-guides/lwip.rst @@ -173,7 +173,7 @@ BSD 套接字的相关参考资料十分丰富,包括但不限于: 套接字错误原因代码 ++++++++++++++++++++++++ -以下是常见错误代码列表。有关标准 POSIX/C 错误代码的详细列表,请参阅 `newlib errno.h `_ 和特定平台扩展 :component_file:`newlib/platform_include/errno.h`。 +以下是常见错误代码列表。有关标准 POSIX/C 错误代码的详细列表,请参阅 `newlib errno.h `_ 和特定平台扩展 :component_file:`newlib/platform_include/sys/errno.h`。 .. list-table:: :header-rows: 1 diff --git a/docs/zh_CN/api-guides/performance/ram-usage.rst b/docs/zh_CN/api-guides/performance/ram-usage.rst index 2e8295c49c03..dff7f3285d1e 100644 --- a/docs/zh_CN/api-guides/performance/ram-usage.rst +++ b/docs/zh_CN/api-guides/performance/ram-usage.rst @@ -96,6 +96,7 @@ ESP-IDF 包含一系列堆 API,可以在运行时测量空闲堆内存,请 - 避免占用过多栈内存的函数。字符串格式化函数(如 ``printf()``)会使用大量栈内存,如果任务不调用这类函数,通常可以减小其占用的栈内存。 + - :ref:`picolibc-instead-of-newlib` 可以显著减少 ``printf()`` 调用的堆栈使用量。 - 启用 :ref:`newlib-nano-formatting`,可以在任务调用 ``printf()`` 或其他 C 语言字符串格式化函数时,减少这类任务的栈内存使用量。 - 避免在栈上分配大型变量。在 C 语言声明的默认作用域中,任何分配为自动变量的大型结构体或数组都会占用栈内存。要优化这些变量占用的栈内存大小,可以使用静态分配,或仅在需要时从堆中动态分配。 diff --git a/docs/zh_CN/api-guides/performance/size.rst b/docs/zh_CN/api-guides/performance/size.rst index 3d52af653e57..46b4521831e2 100644 --- a/docs/zh_CN/api-guides/performance/size.rst +++ b/docs/zh_CN/api-guides/performance/size.rst @@ -151,6 +151,17 @@ lwIP IPv4 在禁用 IPv4 支持之前,请注意,仅支持 IPv6 的网络环境尚未普及,必须在本地网络中提供支持,例如,由互联网服务供应商提供支持,或使用受限制的本地网络设置。 +.. _picolibc-instead-of-newlib: + +使用 Picolibc 替代 Newlib +@@@@@@@@@@@@@@@@@@@@@@@@@ + +默认情况下,ESP-IDF 使用 Newlib C 库,同时也对 Picolibc C 库提供实验性支持。 + +Picolibc C 库提供了更小的 ``printf`` 系列函数,并且根据您的应用程序,可以将二进制文件大小最多减少 30 KB。 + +要切换为链接到 Picolibc C 库,请启用以下配置选项::ref:CONFIG_IDF_EXPERIMENTAL_FEATURES 和 :ref:`CONFIG_LIBC_PICOLIBC`。 + .. _newlib-nano-formatting: Newlib Nano 格式化 @@ -160,13 +171,13 @@ ESP-IDF 的 I/O 函数( ``printf()`` 和 ``scanf()`` 等)默认使用 Newlib .. only:: CONFIG_ESP_ROM_HAS_NEWLIB_NANO_FORMAT - 启用配置选项 :ref:`CONFIG_NEWLIB_NANO_FORMAT` 将使 Newlib 切换到 Nano 格式化模式。这种模式的代码量更小,并且大部分内容被编译到了 {IDF_TARGET_NAME} 的 ROM 中,因此不需要将其添加至二进制文件中。 + 启用配置选项 :ref:`CONFIG_LIBC_NEWLIB_NANO_FORMAT` 将使 Newlib 切换到 Nano 格式化模式。这种模式的代码量更小,并且大部分内容被编译到了 {IDF_TARGET_NAME} 的 ROM 中,因此不需要将其添加至二进制文件中。 具体的二进制文件大小差异取决于固件使用的功能,但通常为 25 KB 到 50 KB。 .. only:: CONFIG_ESP_ROM_HAS_NEWLIB_NORMAL_FORMAT - 禁用配置选项 :ref:`CONFIG_NEWLIB_NANO_FORMAT` 将切换 Newlib 到“完整”格式化模式。这将减小二进制文件的大小,因为 {IDF_TARGET_NAME} 的 ROM 中已存有完整格式化版本的函数,因此不需要将其添加至二进制文件中。 + 禁用配置选项 :ref:`CONFIG_LIBC_NEWLIB_NANO_FORMAT` 将切换 Newlib 到“完整”格式化模式。这将减小二进制文件的大小,因为 {IDF_TARGET_NAME} 的 ROM 中已存有完整格式化版本的函数,因此不需要将其添加至二进制文件中。 启用 Nano 格式化会减少调用 ``printf()`` 或其他字符串格式化函数的堆栈使用量,参阅 :ref:`optimize-stack-sizes`。 @@ -177,7 +188,7 @@ ESP-IDF 的 I/O 函数( ``printf()`` 和 ``scanf()`` 等)默认使用 Newlib .. note:: - {IDF_TARGET_NAME} 会默认启用 :ref:`CONFIG_NEWLIB_NANO_FORMAT`。 + {IDF_TARGET_NAME} 会默认启用 :ref:`CONFIG_LIBC_NEWLIB_NANO_FORMAT`。 .. _Newlib README 文件: https://sourceware.org/newlib/README diff --git a/docs/zh_CN/api-reference/system/system_time.rst b/docs/zh_CN/api-reference/system/system_time.rst index 1860a0fa7a26..9abf7a8040dc 100644 --- a/docs/zh_CN/api-reference/system/system_time.rst +++ b/docs/zh_CN/api-reference/system/system_time.rst @@ -26,7 +26,7 @@ - 高分辨率定时器 - 无 -默认时钟源的时间精度最高,建议使用该配置。此外,用户也可以通过配置选项 :ref:`CONFIG_NEWLIB_TIME_SYSCALL` 来选择其他时钟源。 +默认时钟源的时间精度最高,建议使用该配置。此外,用户也可以通过配置选项 :ref:`CONFIG_LIBC_TIME_SYSCALL` 来选择其他时钟源。 .. _rtc-clock-source-choice: diff --git a/examples/bluetooth/hci/hci_common_component/include/bt_hci_common.h b/examples/bluetooth/hci/hci_common_component/include/bt_hci_common.h index e5e2f8ed5b61..f038588a863a 100644 --- a/examples/bluetooth/hci/hci_common_component/include/bt_hci_common.h +++ b/examples/bluetooth/hci/hci_common_component/include/bt_hci_common.h @@ -1,5 +1,5 @@ /* - * Baisc macros and functions for Bluetooth Host Controller Interface Layer. + * Basic macros and functions for Bluetooth Host Controller Interface Layer. * * SPDX-FileCopyrightText: 2021 Espressif Systems (Shanghai) CO LTD * @@ -12,6 +12,7 @@ extern "C" { #endif +#include "stdint.h" #include "stdio.h" #include "string.h" diff --git a/examples/build_system/cmake/import_lib/main/import_lib_example_main.cpp b/examples/build_system/cmake/import_lib/main/import_lib_example_main.cpp index 069296cb03f8..0e9ecb3ba468 100644 --- a/examples/build_system/cmake/import_lib/main/import_lib_example_main.cpp +++ b/examples/build_system/cmake/import_lib/main/import_lib_example_main.cpp @@ -7,6 +7,7 @@ #include "esp_log.h" #include "esp_vfs_fat.h" #include "tinyxml2.h" +#include "sdkconfig.h" // TODO IDF-11323: remove static const char *TAG = "example"; @@ -29,11 +30,12 @@ extern "C" void app_main(void) tinyxml2::XMLDocument data; data.LoadFile("/spiflash/sample.xml"); +#if !CONFIG_LIBC_PICOLIBC // TODO IDF-11323: subproject builds with default toolchain-esp*.cmake. No additional -specs=picolibc.specs applied tinyxml2::XMLPrinter printer; data.Print(&printer); ESP_LOGI(TAG, "Read XML data:\n%s", printer.CStr()); - +#endif const char* to_data = data.FirstChildElement("note")->FirstChildElement("to")->GetText(); const char* from_data = data.FirstChildElement("note")->FirstChildElement("from")->GetText(); const char* heading_data = data.FirstChildElement("note")->FirstChildElement("heading")->GetText(); diff --git a/examples/build_system/cmake/plugins/components/plugins/plugins.c b/examples/build_system/cmake/plugins/components/plugins/plugins.c index 03baee486980..2bcead441a23 100644 --- a/examples/build_system/cmake/plugins/components/plugins/plugins.c +++ b/examples/build_system/cmake/plugins/components/plugins/plugins.c @@ -4,6 +4,7 @@ * SPDX-License-Identifier: Unlicense OR CC0-1.0 */ #include +#include #include #include #include "plugins_api.h" diff --git a/examples/custom_bootloader/bootloader_override/bootloader_components/main/bootloader_start.c b/examples/custom_bootloader/bootloader_override/bootloader_components/main/bootloader_start.c index 74d97a14f669..e260dd7c5e34 100644 --- a/examples/custom_bootloader/bootloader_override/bootloader_components/main/bootloader_start.c +++ b/examples/custom_bootloader/bootloader_override/bootloader_components/main/bootloader_start.c @@ -4,6 +4,7 @@ * SPDX-License-Identifier: Apache-2.0 */ #include +#include #include "sdkconfig.h" #include "esp_log.h" #include "bootloader_init.h" @@ -61,8 +62,10 @@ static int select_partition_number(bootloader_state_t *bs) return bootloader_utility_get_selected_boot_partition(bs); } +#if CONFIG_LIBC_NEWLIB // Return global reent struct if any newlib functions are linked to bootloader struct _reent *__getreent(void) { return _GLOBAL_REENT; } +#endif diff --git a/examples/openthread/ot_sleepy_device/deep_sleep/sdkconfig.defaults b/examples/openthread/ot_sleepy_device/deep_sleep/sdkconfig.defaults index b76a1dcd330b..72d3f81921df 100644 --- a/examples/openthread/ot_sleepy_device/deep_sleep/sdkconfig.defaults +++ b/examples/openthread/ot_sleepy_device/deep_sleep/sdkconfig.defaults @@ -43,6 +43,6 @@ CONFIG_IEEE802154_ENABLED=y # CONFIG_ULP_COPROC_ENABLED=y CONFIG_ULP_COPROC_RESERVE_MEM=512 -CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC_HRT=y +CONFIG_LIBC_TIME_SYSCALL_USE_RTC_HRT=y CONFIG_RTC_CLK_SRC_INT_RC=y CONFIG_BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP=y diff --git a/examples/system/deep_sleep/sdkconfig.ci.basic b/examples/system/deep_sleep/sdkconfig.ci.basic index 87020672f4c0..219bd242c365 100644 --- a/examples/system/deep_sleep/sdkconfig.ci.basic +++ b/examples/system/deep_sleep/sdkconfig.ci.basic @@ -6,6 +6,6 @@ CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_80=y CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ=80 CONFIG_ULP_COPROC_ENABLED=y CONFIG_ULP_COPROC_RESERVE_MEM=512 -CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC_HRT=y +CONFIG_LIBC_TIME_SYSCALL_USE_RTC_HRT=y CONFIG_RTC_CLK_SRC_INT_RC=y CONFIG_PARTITION_TABLE_CUSTOM=y diff --git a/examples/system/deep_sleep/sdkconfig.ci.esp32_singlecore b/examples/system/deep_sleep/sdkconfig.ci.esp32_singlecore index 0cabcb5f0277..bc9053c45f3c 100644 --- a/examples/system/deep_sleep/sdkconfig.ci.esp32_singlecore +++ b/examples/system/deep_sleep/sdkconfig.ci.esp32_singlecore @@ -11,6 +11,6 @@ CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_80=y CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ=80 CONFIG_ULP_COPROC_ENABLED=y CONFIG_ULP_COPROC_RESERVE_MEM=512 -CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC_HRT=y +CONFIG_LIBC_TIME_SYSCALL_USE_RTC_HRT=y CONFIG_RTC_CLK_SRC_INT_RC=y CONFIG_PARTITION_TABLE_CUSTOM=y diff --git a/examples/system/deep_sleep/sdkconfig.defaults b/examples/system/deep_sleep/sdkconfig.defaults index 0fc182032c88..d467ab7b5378 100644 --- a/examples/system/deep_sleep/sdkconfig.defaults +++ b/examples/system/deep_sleep/sdkconfig.defaults @@ -2,7 +2,7 @@ CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_80=y CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ=80 CONFIG_ULP_COPROC_ENABLED=y CONFIG_ULP_COPROC_RESERVE_MEM=512 -CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC_HRT=y +CONFIG_LIBC_TIME_SYSCALL_USE_RTC_HRT=y CONFIG_RTC_CLK_SRC_INT_RC=y CONFIG_BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP=y CONFIG_PARTITION_TABLE_CUSTOM=y diff --git a/examples/system/esp_timer/sdkconfig.ci.rtc b/examples/system/esp_timer/sdkconfig.ci.rtc index 5ccfc533e467..e6cf23d9a62a 100644 --- a/examples/system/esp_timer/sdkconfig.ci.rtc +++ b/examples/system/esp_timer/sdkconfig.ci.rtc @@ -2,4 +2,4 @@ # This is to avoid any timing impact on test behavior CONFIG_ESP_CONSOLE_SECONDARY_NONE=y -CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC=y +CONFIG_LIBC_TIME_SYSCALL_USE_RTC=y diff --git a/examples/system/unit_test/main/example_unit_test_main.c b/examples/system/unit_test/main/example_unit_test_main.c index bd0199f7d2c3..785179dc12b4 100644 --- a/examples/system/unit_test/main/example_unit_test_main.c +++ b/examples/system/unit_test/main/example_unit_test_main.c @@ -8,6 +8,7 @@ */ #include +#include #include "esp_random.h" #include "testable.h" diff --git a/tools/ci/check_copyright_ignore.txt b/tools/ci/check_copyright_ignore.txt index 356b6075e594..36842ee5d560 100644 --- a/tools/ci/check_copyright_ignore.txt +++ b/tools/ci/check_copyright_ignore.txt @@ -416,7 +416,6 @@ components/esp_rom/esp32/ld/esp32.rom.eco3.ld components/esp_rom/esp32/ld/esp32.rom.ld components/esp_rom/esp32/ld/esp32.rom.libgcc.ld components/esp_rom/esp32/ld/esp32.rom.newlib-data.ld -components/esp_rom/esp32/ld/esp32.rom.newlib-funcs.ld components/esp_rom/esp32/ld/esp32.rom.newlib-locale.ld components/esp_rom/esp32/ld/esp32.rom.newlib-nano.ld components/esp_rom/esp32/ld/esp32.rom.newlib-time.ld @@ -428,14 +427,12 @@ components/esp_rom/esp32c3/ld/esp32c3.rom.eco3.ld components/esp_rom/esp32c3/ld/esp32c3.rom.ld components/esp_rom/esp32c3/ld/esp32c3.rom.libgcc.ld components/esp_rom/esp32c3/ld/esp32c3.rom.newlib-nano.ld -components/esp_rom/esp32c3/ld/esp32c3.rom.newlib.ld components/esp_rom/esp32c3/ld/esp32c3.rom.version.ld components/esp_rom/esp32s2/include/esp32s2/rom/opi_flash.h components/esp_rom/esp32s2/ld/esp32s2.rom.api.ld components/esp_rom/esp32s2/ld/esp32s2.rom.ld components/esp_rom/esp32s2/ld/esp32s2.rom.libgcc.ld components/esp_rom/esp32s2/ld/esp32s2.rom.newlib-data.ld -components/esp_rom/esp32s2/ld/esp32s2.rom.newlib-funcs.ld components/esp_rom/esp32s2/ld/esp32s2.rom.newlib-nano.ld components/esp_rom/esp32s3/include/esp32s3/rom/opi_flash.h components/esp_rom/esp32s3/include/esp32s3/rom/tjpgd.h @@ -443,7 +440,6 @@ components/esp_rom/esp32s3/ld/esp32s3.rom.api.ld components/esp_rom/esp32s3/ld/esp32s3.rom.ld components/esp_rom/esp32s3/ld/esp32s3.rom.libgcc.ld components/esp_rom/esp32s3/ld/esp32s3.rom.newlib-nano.ld -components/esp_rom/esp32s3/ld/esp32s3.rom.newlib.ld components/esp_rom/esp32s3/ld/esp32s3.rom.version.ld components/esp_rom/include/esp_rom_crc.h components/esp_rom/linux/esp_rom_crc.c diff --git a/tools/cmake/project.cmake b/tools/cmake/project.cmake index be9229c65d67..cfb95b95cec2 100644 --- a/tools/cmake/project.cmake +++ b/tools/cmake/project.cmake @@ -857,6 +857,13 @@ macro(project project_name) unset(idf_target) endif() + + if(CONFIG_LIBC_PICOLIBC) + idf_build_set_property(C_COMPILE_OPTIONS "-specs=picolibc.specs" APPEND) + idf_build_set_property(CXX_COMPILE_OPTIONS "-specs=picolibcpp.specs" APPEND) + idf_build_set_property(LINK_OPTIONS "-specs=picolibc.specs" APPEND) + endif() + set_property(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" APPEND PROPERTY ADDITIONAL_CLEAN_FILES "${mapfile}" "${project_elf_src}") diff --git a/tools/cmake/toolchain-esp32.cmake b/tools/cmake/toolchain-esp32.cmake index 31bb748dc905..5bf1acefaa73 100644 --- a/tools/cmake/toolchain-esp32.cmake +++ b/tools/cmake/toolchain-esp32.cmake @@ -19,3 +19,5 @@ remove_duplicated_flags("-mlongcalls -Wno-frame-address \ set(CMAKE_CXX_FLAGS "${UNIQ_CMAKE_CXX_FLAGS}" CACHE STRING "C++ Compiler Base Flags" FORCE) remove_duplicated_flags("-mlongcalls ${CMAKE_ASM_FLAGS}" UNIQ_CMAKE_ASM_FLAGS) set(CMAKE_ASM_FLAGS "${UNIQ_CMAKE_ASM_FLAGS}" CACHE STRING "ASM Compiler Base Flags" FORCE) +remove_duplicated_flags("-nostartfiles ${CMAKE_EXE_LINKER_FLAGS}" UNIQ_CMAKE_SAFE_EXE_LINKER_FLAGS) +set(CMAKE_EXE_LINKER_FLAGS "${UNIQ_CMAKE_SAFE_EXE_LINKER_FLAGS}" CACHE STRING "Linker Base Flags" FORCE) diff --git a/tools/cmake/toolchain-esp32c2.cmake b/tools/cmake/toolchain-esp32c2.cmake index 2eb3a62d6412..d3a8b43dacb0 100644 --- a/tools/cmake/toolchain-esp32c2.cmake +++ b/tools/cmake/toolchain-esp32c2.cmake @@ -12,7 +12,6 @@ set(CMAKE_C_FLAGS "${UNIQ_CMAKE_C_FLAGS}" CACHE STRING "C Compiler Base Flags" F remove_duplicated_flags("-march=rv32imc_zicsr_zifencei ${CMAKE_CXX_FLAGS}" UNIQ_CMAKE_CXX_FLAGS) set(CMAKE_CXX_FLAGS "${UNIQ_CMAKE_CXX_FLAGS}" CACHE STRING "C++ Compiler Base Flags" FORCE) -remove_duplicated_flags("-nostartfiles -march=rv32imc_zicsr_zifencei --specs=nosys.specs \ - ${CMAKE_EXE_LINKER_FLAGS}" +remove_duplicated_flags("-nostartfiles -march=rv32imc_zicsr_zifencei ${CMAKE_EXE_LINKER_FLAGS}" UNIQ_CMAKE_SAFE_EXE_LINKER_FLAGS) set(CMAKE_EXE_LINKER_FLAGS "${UNIQ_CMAKE_SAFE_EXE_LINKER_FLAGS}" CACHE STRING "Linker Base Flags" FORCE) diff --git a/tools/cmake/toolchain-esp32c3.cmake b/tools/cmake/toolchain-esp32c3.cmake index d6c5745e927f..e263a82e4750 100644 --- a/tools/cmake/toolchain-esp32c3.cmake +++ b/tools/cmake/toolchain-esp32c3.cmake @@ -14,7 +14,6 @@ remove_duplicated_flags("-march=rv32imc_zicsr_zifencei ${CMAKE_CXX_FLAGS}" UNIQ_CMAKE_CXX_FLAGS) set(CMAKE_CXX_FLAGS "${UNIQ_CMAKE_CXX_FLAGS}" CACHE STRING "C++ Compiler Base Flags" FORCE) -remove_duplicated_flags("-nostartfiles -march=rv32imc_zicsr_zifencei --specs=nosys.specs \ - ${CMAKE_EXE_LINKER_FLAGS}" +remove_duplicated_flags("-nostartfiles -march=rv32imc_zicsr_zifencei ${CMAKE_EXE_LINKER_FLAGS}" UNIQ_CMAKE_SAFE_EXE_LINKER_FLAGS) set(CMAKE_EXE_LINKER_FLAGS "${UNIQ_CMAKE_SAFE_EXE_LINKER_FLAGS}" CACHE STRING "Linker Base Flags" FORCE) diff --git a/tools/cmake/toolchain-esp32c5.cmake b/tools/cmake/toolchain-esp32c5.cmake index 6415daa59b74..d0622555a5d8 100644 --- a/tools/cmake/toolchain-esp32c5.cmake +++ b/tools/cmake/toolchain-esp32c5.cmake @@ -12,7 +12,6 @@ set(CMAKE_C_FLAGS "${UNIQ_CMAKE_C_FLAGS}" CACHE STRING "C Compiler Base Flags" F remove_duplicated_flags("-march=rv32imac_zicsr_zifencei ${CMAKE_CXX_FLAGS}" UNIQ_CMAKE_CXX_FLAGS) set(CMAKE_CXX_FLAGS "${UNIQ_CMAKE_CXX_FLAGS}" CACHE STRING "C++ Compiler Base Flags" FORCE) -remove_duplicated_flags("-nostartfiles -march=rv32imac_zicsr_zifencei --specs=nosys.specs \ - ${CMAKE_EXE_LINKER_FLAGS}" +remove_duplicated_flags("-nostartfiles -march=rv32imac_zicsr_zifencei ${CMAKE_EXE_LINKER_FLAGS}" UNIQ_CMAKE_SAFE_EXE_LINKER_FLAGS) set(CMAKE_EXE_LINKER_FLAGS "${UNIQ_CMAKE_SAFE_EXE_LINKER_FLAGS}" CACHE STRING "Linker Base Flags" FORCE) diff --git a/tools/cmake/toolchain-esp32c6.cmake b/tools/cmake/toolchain-esp32c6.cmake index 6415daa59b74..d0622555a5d8 100644 --- a/tools/cmake/toolchain-esp32c6.cmake +++ b/tools/cmake/toolchain-esp32c6.cmake @@ -12,7 +12,6 @@ set(CMAKE_C_FLAGS "${UNIQ_CMAKE_C_FLAGS}" CACHE STRING "C Compiler Base Flags" F remove_duplicated_flags("-march=rv32imac_zicsr_zifencei ${CMAKE_CXX_FLAGS}" UNIQ_CMAKE_CXX_FLAGS) set(CMAKE_CXX_FLAGS "${UNIQ_CMAKE_CXX_FLAGS}" CACHE STRING "C++ Compiler Base Flags" FORCE) -remove_duplicated_flags("-nostartfiles -march=rv32imac_zicsr_zifencei --specs=nosys.specs \ - ${CMAKE_EXE_LINKER_FLAGS}" +remove_duplicated_flags("-nostartfiles -march=rv32imac_zicsr_zifencei ${CMAKE_EXE_LINKER_FLAGS}" UNIQ_CMAKE_SAFE_EXE_LINKER_FLAGS) set(CMAKE_EXE_LINKER_FLAGS "${UNIQ_CMAKE_SAFE_EXE_LINKER_FLAGS}" CACHE STRING "Linker Base Flags" FORCE) diff --git a/tools/cmake/toolchain-esp32c61.cmake b/tools/cmake/toolchain-esp32c61.cmake index 6415daa59b74..d0622555a5d8 100644 --- a/tools/cmake/toolchain-esp32c61.cmake +++ b/tools/cmake/toolchain-esp32c61.cmake @@ -12,7 +12,6 @@ set(CMAKE_C_FLAGS "${UNIQ_CMAKE_C_FLAGS}" CACHE STRING "C Compiler Base Flags" F remove_duplicated_flags("-march=rv32imac_zicsr_zifencei ${CMAKE_CXX_FLAGS}" UNIQ_CMAKE_CXX_FLAGS) set(CMAKE_CXX_FLAGS "${UNIQ_CMAKE_CXX_FLAGS}" CACHE STRING "C++ Compiler Base Flags" FORCE) -remove_duplicated_flags("-nostartfiles -march=rv32imac_zicsr_zifencei --specs=nosys.specs \ - ${CMAKE_EXE_LINKER_FLAGS}" +remove_duplicated_flags("-nostartfiles -march=rv32imac_zicsr_zifencei ${CMAKE_EXE_LINKER_FLAGS}" UNIQ_CMAKE_SAFE_EXE_LINKER_FLAGS) set(CMAKE_EXE_LINKER_FLAGS "${UNIQ_CMAKE_SAFE_EXE_LINKER_FLAGS}" CACHE STRING "Linker Base Flags" FORCE) diff --git a/tools/cmake/toolchain-esp32h2.cmake b/tools/cmake/toolchain-esp32h2.cmake index 6415daa59b74..d0622555a5d8 100644 --- a/tools/cmake/toolchain-esp32h2.cmake +++ b/tools/cmake/toolchain-esp32h2.cmake @@ -12,7 +12,6 @@ set(CMAKE_C_FLAGS "${UNIQ_CMAKE_C_FLAGS}" CACHE STRING "C Compiler Base Flags" F remove_duplicated_flags("-march=rv32imac_zicsr_zifencei ${CMAKE_CXX_FLAGS}" UNIQ_CMAKE_CXX_FLAGS) set(CMAKE_CXX_FLAGS "${UNIQ_CMAKE_CXX_FLAGS}" CACHE STRING "C++ Compiler Base Flags" FORCE) -remove_duplicated_flags("-nostartfiles -march=rv32imac_zicsr_zifencei --specs=nosys.specs \ - ${CMAKE_EXE_LINKER_FLAGS}" +remove_duplicated_flags("-nostartfiles -march=rv32imac_zicsr_zifencei ${CMAKE_EXE_LINKER_FLAGS}" UNIQ_CMAKE_SAFE_EXE_LINKER_FLAGS) set(CMAKE_EXE_LINKER_FLAGS "${UNIQ_CMAKE_SAFE_EXE_LINKER_FLAGS}" CACHE STRING "Linker Base Flags" FORCE) diff --git a/tools/cmake/toolchain-esp32p4.cmake b/tools/cmake/toolchain-esp32p4.cmake index d4b32308f278..631cacff54b1 100644 --- a/tools/cmake/toolchain-esp32p4.cmake +++ b/tools/cmake/toolchain-esp32p4.cmake @@ -14,7 +14,6 @@ set(CMAKE_CXX_FLAGS "${UNIQ_CMAKE_CXX_FLAGS}" CACHE STRING "C++ Compiler Base Fl remove_duplicated_flags("-march=rv32imafc_zicsr_zifencei_xesppie -mabi=ilp32f ${CMAKE_ASM_FLAGS}" UNIQ_CMAKE_ASM_FLAGS) set(CMAKE_ASM_FLAGS "${UNIQ_CMAKE_CXX_FLAGS}" CACHE STRING "Asm Compiler Base Flags" FORCE) -remove_duplicated_flags("-nostartfiles -march=rv32imafc_zicsr_zifencei_xesppie -mabi=ilp32f --specs=nosys.specs \ - ${CMAKE_EXE_LINKER_FLAGS}" +remove_duplicated_flags("-nostartfiles -march=rv32imafc_zicsr_zifencei_xesppie -mabi=ilp32f ${CMAKE_EXE_LINKER_FLAGS}" UNIQ_CMAKE_SAFE_EXE_LINKER_FLAGS) set(CMAKE_EXE_LINKER_FLAGS "${UNIQ_CMAKE_SAFE_EXE_LINKER_FLAGS}" CACHE STRING "Linker Base Flags" FORCE) diff --git a/tools/cmake/toolchain-esp32s2.cmake b/tools/cmake/toolchain-esp32s2.cmake index 358b2e4100c0..77b71113d97b 100644 --- a/tools/cmake/toolchain-esp32s2.cmake +++ b/tools/cmake/toolchain-esp32s2.cmake @@ -19,3 +19,5 @@ remove_duplicated_flags("-mlongcalls \ set(CMAKE_CXX_FLAGS "${UNIQ_CMAKE_CXX_FLAGS}" CACHE STRING "C++ Compiler Base Flags" FORCE) remove_duplicated_flags("-mlongcalls ${CMAKE_ASM_FLAGS}" UNIQ_CMAKE_ASM_FLAGS) set(CMAKE_ASM_FLAGS "${UNIQ_CMAKE_ASM_FLAGS}" CACHE STRING "ASM Compiler Base Flags" FORCE) +remove_duplicated_flags("-nostartfiles ${CMAKE_EXE_LINKER_FLAGS}" UNIQ_CMAKE_SAFE_EXE_LINKER_FLAGS) +set(CMAKE_EXE_LINKER_FLAGS "${UNIQ_CMAKE_SAFE_EXE_LINKER_FLAGS}" CACHE STRING "Linker Base Flags" FORCE) diff --git a/tools/cmake/toolchain-esp32s3.cmake b/tools/cmake/toolchain-esp32s3.cmake index e504150e5d84..f3ba9f798be2 100644 --- a/tools/cmake/toolchain-esp32s3.cmake +++ b/tools/cmake/toolchain-esp32s3.cmake @@ -19,3 +19,5 @@ remove_duplicated_flags("-mlongcalls \ set(CMAKE_CXX_FLAGS "${UNIQ_CMAKE_CXX_FLAGS}" CACHE STRING "C++ Compiler Base Flags" FORCE) remove_duplicated_flags("-mlongcalls ${CMAKE_ASM_FLAGS}" UNIQ_CMAKE_ASM_FLAGS) set(CMAKE_ASM_FLAGS "${UNIQ_CMAKE_ASM_FLAGS}" CACHE STRING "ASM Compiler Base Flags" FORCE) +remove_duplicated_flags("-nostartfiles ${CMAKE_EXE_LINKER_FLAGS}" UNIQ_CMAKE_SAFE_EXE_LINKER_FLAGS) +set(CMAKE_EXE_LINKER_FLAGS "${UNIQ_CMAKE_SAFE_EXE_LINKER_FLAGS}" CACHE STRING "Linker Base Flags" FORCE) diff --git a/tools/ldgen/samples/sdkconfig b/tools/ldgen/samples/sdkconfig index 2509ec3ad4da..1ef158ba8c04 100644 --- a/tools/ldgen/samples/sdkconfig +++ b/tools/ldgen/samples/sdkconfig @@ -140,12 +140,12 @@ CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=2048 CONFIG_ESP_MAIN_TASK_STACK_SIZE=4096 CONFIG_ESP_IPC_TASK_STACK_SIZE=1024 CONFIG_ESP_TIMER_TASK_STACK_SIZE=3584 -CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y -CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF= -CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR= -CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF= -CONFIG_NEWLIB_STDIN_LINE_ENDING_LF= -CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y +CONFIG_LIBC_STDOUT_LINE_ENDING_CRLF=y +CONFIG_LIBC_STDOUT_LINE_ENDING_LF= +CONFIG_LIBC_STDOUT_LINE_ENDING_CR= +CONFIG_LIBC_STDIN_LINE_ENDING_CRLF= +CONFIG_LIBC_STDIN_LINE_ENDING_LF= +CONFIG_LIBC_STDIN_LINE_ENDING_CR=y CONFIG_NEWLIB_NANO_FORMAT= CONFIG_ESP_CONSOLE_UART_DEFAULT=y CONFIG_ESP_CONSOLE_UART_CUSTOM= @@ -176,10 +176,10 @@ CONFIG_ESP_BROWNOUT_DET_LVL_SEL_5= CONFIG_ESP_BROWNOUT_DET_LVL_SEL_6= CONFIG_ESP_BROWNOUT_DET_LVL_SEL_7= CONFIG_ESP_BROWNOUT_DET_LVL=0 -CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC_HRT=y -CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC= -CONFIG_NEWLIB_TIME_SYSCALL_USE_HRT= -CONFIG_NEWLIB_TIME_SYSCALL_USE_NONE= +CONFIG_LIBC_TIME_SYSCALL_USE_RTC_HRT=y +CONFIG_LIBC_TIME_SYSCALL_USE_RTC= +CONFIG_LIBC_TIME_SYSCALL_USE_HRT= +CONFIG_LIBC_TIME_SYSCALL_USE_NONE= CONFIG_RTC_CLK_SRC_INT_RC=y CONFIG_RTC_CLK_SRC_EXT_CRYS= CONFIG_RTC_CLK_CAL_CYCLES=1024 diff --git a/tools/test_apps/storage/partition_table_readonly/main/main.c b/tools/test_apps/storage/partition_table_readonly/main/main.c index 394857a7fa0d..6b4f4b7b5d14 100644 --- a/tools/test_apps/storage/partition_table_readonly/main/main.c +++ b/tools/test_apps/storage/partition_table_readonly/main/main.c @@ -250,7 +250,11 @@ void test_c_api_common(const char* base_path) fseek(f, 0, SEEK_SET); status = fwrite(str, 1, sizeof(str), f); // Writing should do nothing TEST_ASSERT_EQUAL(0, status); +#if CONFIG_LIBC_NEWLIB TEST_ASSERT_EQUAL(EBADF, errno); +#else + TEST_ASSERT_EQUAL(EROFS, errno); +#endif fread(buf, 1, sizeof(buf) - 1, f); ESP_LOGD(TAG, "Read from file: %s", buf);