undefined reference to __ssputws_r with --specs=nano.specs
Richard Earnshaw (lists)
Richard.Earnshaw@arm.com
Mon Feb 19 16:20:03 GMT 2024
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.
More information about the Newlib
mailing list