Re: undefined reference to __ssputws_r with --specs=nano.specs
"Richard Earnshaw (lists)" <[email protected]>
| Newsgroups | gmane.comp.lib.newlib |
|---|---|
| Message-ID | <[email protected]> |
On 15/02/2024 15:19, Torbjorn SVENSSON wrote: > Hi again, > > Anyone having some insights on the below question? > > Kind regards, > Torbjörn > > On 2024-02-06 18:40, Torbjorn SVENSSON wrote: >> Hi, >> >> I noticed that a lot of testcases fails when running the GCC testsuite with --specs=nano.specs. >> Below is an example that fails with --specs=nano.specs: >> >> $ /build/13-head-bin/bin/arm-none-eabi-g++ /build/gcc13_src/gcc/testsuite/g++.dg/coroutines/pr100611.C -std=c++20 --specs=nosys.specs -o /dev/null --specs=nano.specs >> /build/13-head-bin/bin/../lib/gcc/arm-none-eabi/13.2.1/../../../../arm-none-eabi/bin/ld: /build/13-head-bin/bin/../lib/gcc/arm-none-eabi/13.2.1/../../../../arm-none-eabi/lib/libc_nano.a(libc_a-svfwprintf.o): in function `_svfwprintf_r': >> (.text._svfwprintf_r+0xd8): undefined reference to `__ssputws_r' >> /build/13-head-bin/bin/../lib/gcc/arm-none-eabi/13.2.1/../../../../arm-none-eabi/bin/ld: (.text._svfwprintf_r+0x834): undefined reference to `__ssputws_r' >> /build/13-head-bin/bin/../lib/gcc/arm-none-eabi/13.2.1/../../../../arm-none-eabi/bin/ld: (.text._svfwprintf_r+0x85c): undefined reference to `__ssputws_r' >> /build/13-head-bin/bin/../lib/gcc/arm-none-eabi/13.2.1/../../../../arm-none-eabi/bin/ld: (.text._svfwprintf_r+0x8a8): undefined reference to `__ssputws_r' >> /build/13-head-bin/bin/../lib/gcc/arm-none-eabi/13.2.1/../../../../arm-none-eabi/bin/ld: (.text._svfwprintf_r+0x8dc): undefined reference to `__ssputws_r' >> /build/13-head-bin/bin/../lib/gcc/arm-none-eabi/13.2.1/../../../../arm-none-eabi/bin/ld: /build/13-head-bin/bin/../lib/gcc/arm-none-eabi/13.2.1/../../../../arm-none-eabi/lib/libc_nano.a(libc_a-svfwprintf.o):(.text._svfwprintf_r+0x900): more undefined references to `__ssputws_r' follow >> collect2: error: ld returned 1 exit status >> >> >> The newlib nano is configured with: >> >> --disable-newlib-supplied-syscalls >> --enable-newlib-reent-check-verify >> --enable-newlib-reent-small >> --enable-newlib-retargetable-locking >> --disable-newlib-fvwrite-in-streamio >> --disable-newlib-fseek-optimization >> --disable-newlib-wide-orient >> --enable-newlib-nano-malloc >> --disable-newlib-unbuf-stream-opt >> --enable-lite-exit >> --enable-newlib-global-atexit >> --enable-newlib-nano-formatted-io >> --disable-nls >> >> >> Is it expected that the symbol __ssputws_r is referenced but not provided when (I presume this is the reason) --enable-newlib-nano-formatted-io and --disable-newlib-wide-orient is used? >> >> Kind regards, >> Torbjörn newlib/Makefile.in contains: @HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@ libc/stdio/ssputws_r.c \ But: @HAVE_STDIO_DIR_TRUE@ libc/stdio/svfwprintf.c \ So I'm guessing the latter should be similarly guarded. There may be other wprint/wscan functions that should be similarly guarded.