[PATCH 0/2] fix undefined reference to `__ssputws_r'
Corinna Vinschen
vinschen@redhat.com
Tue Jul 9 10:48:00 GMT 2024
@Torbjörn,
would you mind to take a look? Any input on this?
FWIW< this looks right to me.
Thanks,
Corinna
On Jul 8 12:01, Hau Hsu wrote:
> *Issue*
> When compile a simple C++ hello world, we got undefined reference to
> `__ssputws_r' error with NEWLIB_NANO_FORMATTED_IO after upgrading to
> newlib-4.4 in risc-v toolchain:
>
> svfwprintf.c:(.text._svfwprintf_r+0x8e): undefined reference to
> `__ssputws_r'
>
> *Cause*
> This is because commit
> "v{fs}printf/v{fs}wprintf: create external output helpers"
> <https://cygwin.com/git/?p=newlib-cygwin.git;a=commit;h=61ccd3f94f92bcfc0940f0595ea5b3b72bce3c6d>
> introduces a new file ssputws_r.c for a wide-char-oriented helper function.
> But this file will not be built when newlib_nano_formated_io is enabled.
>
> The problem is that the function __ssputws_r() is used by svfwprintf(),
> which is compiled no matter whether newlib_nano_formated_io is enabled.
>
> *Fix*
> This patch fix the issue by building ssputws_r.c regardless of whether
> newlib_nano_formated_io is enabled.
>
> *Problem of the previous fix*
> Note that we also reverts a previouls patch that tries to fix the same
> link error:
> <https://cygwin.com/git/?p=newlib-cygwin.git;a=commitdiff;h=3b97a5ec67a5a52c130158bb143949cd842de305>
> Because we got other errors after applying this patch:
>
> undefined reference to `putwc'
> ...
> undefined reference to `getwc'
> ...
> undefined reference to `swprintf'
>
> The previous patch removes wchar_t functions from
> NEWLIB_NANO_FORMATTED_IO, but in the newlib/README says:
>
> > --enable-newlib-nano-formatted-io
> > This option does not affect wide-char formatted I/O functions
>
> Thus I think we shouldn't remove wchar_t functions from
> newlib_nano_formated_io.
>
> Similar bug report:
> * https://inbox.sourceware.org/newlib/ed0b48da6c6c4beaacd9fad63efaddc0@syntacore.com/t/
>
>
>
> Hau Hsu (2):
> Revert "libc/stdio: Remove wchar_t functions from
> NEWLIB_NANO_FORMATTED_IO"
> libc/stdio: fix undefined reference to `__ssputws_r'
>
> newlib/Makefile.in | 1004 ++++++++++++++++----------------
> newlib/libc/stdio/Makefile.inc | 54 +-
> 2 files changed, 528 insertions(+), 530 deletions(-)
>
> --
> 2.31.1
More information about the Newlib
mailing list