From 83a3fd9780f1d28cb1f86d66e4b4e5e1756c141d Mon Sep 17 00:00:00 2001 From: chao an Date: Tue, 11 Oct 2022 15:24:02 +0800 Subject: [PATCH] newlib/impure: sync with newlib(4.2.0) reent update arm-none-eabi-ld: nuttx/staging/libc.a(lib_impure.o):(.data.impure_data+0x4): undefined reference to `__sf' arm-none-eabi-ld: nuttx/staging/libc.a(lib_impure.o):(.data.impure_data+0x8): undefined reference to `__sf' arm-none-eabi-ld: nuttx/staging/libc.a(lib_impure.o):(.data.impure_data+0xc): undefined reference to `__sf' Toolchain: Version: GNU Arm Embedded Toolchain to Version 11.3.Rel1(August 8, 2022) Tar: arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-eabi.tar.xz Break change: https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=b0cb9f85ca3626e0e68fd451c3090d253ceb4300 Signed-off-by: chao an --- libs/libc/misc/lib_impure.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/libs/libc/misc/lib_impure.c b/libs/libc/misc/lib_impure.c index eaa75dac9f..4fbdec066d 100644 --- a/libs/libc/misc/lib_impure.c +++ b/libs/libc/misc/lib_impure.c @@ -44,10 +44,14 @@ * Public Functions ****************************************************************************/ -#ifdef _REENT_SMALL +#if defined(_REENT_SMALL) && \ + (defined(__NEWLIB__) || __NEWLIB__ < 4 || \ + __NEWLIB__ == 4 && __NEWLIB_MINOR__ < 2) extern struct __sFILE_fake __sf_fake_stdin _ATTRIBUTE((weak)); extern struct __sFILE_fake __sf_fake_stdout _ATTRIBUTE((weak)); extern struct __sFILE_fake __sf_fake_stderr _ATTRIBUTE((weak)); +#else +extern __FILE __sf[3] _ATTRIBUTE((weak)); #endif static struct _reent __ATTRIBUTE_IMPURE_DATA__