Re: [PATCH 2/2 v2] libc/stdio: fix undefined reference to __ssputws_r/__sswprint_r

Alexey Lapshin <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <TYZPR04MB5736BB796CAC51725C47FE8B8864A@TYZPR04MB5736.apcprd04.prod.outlook.com>
I guess there also will be issues for linking against libstdc++.
In case the "main" libc.a supports wide characters, but libc_nano.a does not.
________________________________
From: Alexey Lapshin <[email protected]>
Sent: Tuesday, May 27, 2025 1:25 PM
To: [email protected] <[email protected]>; [email protected] <[email protected]>
Subject: Re: [PATCH 2/2 v2] libc/stdio: fix undefined reference to __ssputws_r/__sswprint_r

Hi Jeff,

Sorry for the long delay. I just copied commit description from prior
patch series.

I found the issue when built some tests:


  libc_nano.a(libc_a-wcsftime.o): in function `__strftime':
  /builds/idf/crosstool-NG/.build/riscv32-esp-elf/src/newlib/newlib/libc/time/../time/strftime.c:879:(.text.__strftime.isra.0+0x2ac): undefined reference to `swprintf'


I can't remember, maybe something else was relying on "swprintf"

On Tue, 2025-05-06 at 21:42 -0400, Jeff Johnston wrote:
>
> [External: This email originated outside Espressif]
>
>
>
>
> Hi Alexey,
>
> I don't understand why you are seeing svfwprintf.c compiled in your case no matter what the nano setting is.  The file
> is listed under the else section of the check: if NEWLIB_NANO_FORMATTED_IO so when
> this flag is set to true, it shouldn't be included.  I did an aarch64-none-elf build configured with --enable-nano-formatted-io
> and there is no svfwprintf object file in the libc/stdio directory nor in the final libc.a.
>
> Is there any chance there is something broken with your build or link?
>
> -- Jeff J.
>
>
>
>
> On Tue, May 6, 2025 at 2:46 AM Alexey Lapshin <[email protected]> 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/sswprint_r.c for a wide-char-oriented
> > helper function. But these files were not included to build when
> > newlib_nano_formatted_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.
> > And the same thing for __sswprint_r()
> >
> > *Fix*
> > This patch fix the issue by building ssputws_r.c and sswprint_r.c regardless
> > of whether newlib_nano_formatted_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/[email protected]/t
> >
> > Signed-off-by: Hau Hsu <[email protected]>
> > ---
> >  newlib/Makefile.in             | 77 +++++++++++++++++-----------------
> >  newlib/libc/stdio/Makefile.inc |  6 +--
> >  2 files changed, 41 insertions(+), 42 deletions(-)
> >
> > diff --git a/newlib/Makefile.in b/newlib/Makefile.in
> > index 53b0f0920..629d80773 100644
> > --- a/newlib/Makefile.in
> > +++ b/newlib/Makefile.in
> > @@ -243,9 +243,7 @@ check_PROGRAMS =
> >  @HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@  libc/stdio/sprint_r.c \
> >  @HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@  libc/stdio/swprint_r.c \
> >  @HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@  libc/stdio/ssputs_r.c \
> > -@HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@  libc/stdio/ssputws_r.c \
> > -@HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@  libc/stdio/ssprint_r.c \
> > -@HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@  libc/stdio/sswprint_r.c
> > +@HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@  libc/stdio/ssprint_r.c
> >
> >  @HAVE_STDIO_DIR_TRUE@am__append_12 = libc/stdio/clearerr.c \
> >  @HAVE_STDIO_DIR_TRUE@  libc/stdio/fclose.c libc/stdio/fdopen.c \
> > @@ -278,6 +276,8 @@ check_PROGRAMS =
> >  @HAVE_STDIO_DIR_TRUE@  libc/stdio/setvbuf.c \
> >  @HAVE_STDIO_DIR_TRUE@  libc/stdio/snprintf.c \
> >  @HAVE_STDIO_DIR_TRUE@  libc/stdio/sprintf.c libc/stdio/sscanf.c \
> > +@HAVE_STDIO_DIR_TRUE@  libc/stdio/ssputws_r.c \
> > +@HAVE_STDIO_DIR_TRUE@  libc/stdio/sswprint_r.c \
> >  @HAVE_STDIO_DIR_TRUE@  libc/stdio/stdio.c \
> >  @HAVE_STDIO_DIR_TRUE@  libc/stdio/svfiwprintf.c \
> >  @HAVE_STDIO_DIR_TRUE@  libc/stdio/svfiwscanf.c \
> > @@ -1203,9 +1203,7 @@ am__objects_5 = libc/stdlib/libc_a-rpmatch.$(OBJEXT) \
> >  @HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@  libc/stdio/libc_a-sprint_r.$(OBJEXT) \
> >  @HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@  libc/stdio/libc_a-swprint_r.$(OBJEXT) \
> >  @HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@  libc/stdio/libc_a-ssputs_r.$(OBJEXT) \
> > -@HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@  libc/stdio/libc_a-ssputws_r.$(OBJEXT) \
> > -@HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@  libc/stdio/libc_a-ssprint_r.$(OBJEXT) \
> > -@HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@  libc/stdio/libc_a-sswprint_r.$(OBJEXT)
> > +@HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@  libc/stdio/libc_a-ssprint_r.$(OBJEXT)
> >  @ELIX_LEVEL_1_FALSE@@HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@am__objects_12 = libc/stdio/libc_a-asiprintf.$(OBJEXT) \
> >  @ELIX_LEVEL_1_FALSE@@HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@      libc/stdio/libc_a-vasiprintf.$(OBJEXT)
> >  @ELIX_LEVEL_1_FALSE@@HAVE_STDIO_DIR_TRUE@am__objects_13 = libc/stdio/libc_a-asprintf.$(OBJEXT) \
> > @@ -1329,6 +1327,8 @@ am__objects_5 = libc/stdlib/libc_a-rpmatch.$(OBJEXT) \
> >  @HAVE_STDIO_DIR_TRUE@  libc/stdio/libc_a-snprintf.$(OBJEXT) \
> >  @HAVE_STDIO_DIR_TRUE@  libc/stdio/libc_a-sprintf.$(OBJEXT) \
> >  @HAVE_STDIO_DIR_TRUE@  libc/stdio/libc_a-sscanf.$(OBJEXT) \
> > +@HAVE_STDIO_DIR_TRUE@  libc/stdio/libc_a-ssputws_r.$(OBJEXT) \
> > +@HAVE_STDIO_DIR_TRUE@  libc/stdio/libc_a-sswprint_r.$(OBJEXT) \
> >  @HAVE_STDIO_DIR_TRUE@  libc/stdio/libc_a-stdio.$(OBJEXT) \
> >  @HAVE_STDIO_DIR_TRUE@  libc/stdio/libc_a-svfiwprintf.$(OBJEXT) \
> >  @HAVE_STDIO_DIR_TRUE@  libc/stdio/libc_a-svfiwscanf.$(OBJEXT) \
> > @@ -3972,7 +3972,6 @@ pdfdir = @pdfdir@
> >  prefix = @prefix@
> >  program_transform_name = @program_transform_name@
> >  psdir = @psdir@
> > -runstatedir = @runstatedir@
> >  sbindir = @sbindir@
> >  shared_machine_dir = @shared_machine_dir@
> >  sharedstatedir = @sharedstatedir@
> > @@ -6036,12 +6035,8 @@ libc/stdio/libc_a-swprint_r.$(OBJEXT): libc/stdio/$(am__dirstamp) \
> >         libc/stdio/$(DEPDIR)/$(am__dirstamp)
> >  libc/stdio/libc_a-ssputs_r.$(OBJEXT): libc/stdio/$(am__dirstamp) \
> >         libc/stdio/$(DEPDIR)/$(am__dirstamp)
> > -libc/stdio/libc_a-ssputws_r.$(OBJEXT): libc/stdio/$(am__dirstamp) \
> > -       libc/stdio/$(DEPDIR)/$(am__dirstamp)
> >  libc/stdio/libc_a-ssprint_r.$(OBJEXT): libc/stdio/$(am__dirstamp) \
> >         libc/stdio/$(DEPDIR)/$(am__dirstamp)
> > -libc/stdio/libc_a-sswprint_r.$(OBJEXT): libc/stdio/$(am__dirstamp) \
> > -       libc/stdio/$(DEPDIR)/$(am__dirstamp)
> >  libc/stdio/libc_a-clearerr.$(OBJEXT): libc/stdio/$(am__dirstamp) \
> >         libc/stdio/$(DEPDIR)/$(am__dirstamp)
> >  libc/stdio/libc_a-fclose.$(OBJEXT): libc/stdio/$(am__dirstamp) \
> > @@ -6150,6 +6145,10 @@ libc/stdio/libc_a-sprintf.$(OBJEXT): libc/stdio/$(am__dirstamp) \
> >         libc/stdio/$(DEPDIR)/$(am__dirstamp)
> >  libc/stdio/libc_a-sscanf.$(OBJEXT): libc/stdio/$(am__dirstamp) \
> >         libc/stdio/$(DEPDIR)/$(am__dirstamp)
> > +libc/stdio/libc_a-ssputws_r.$(OBJEXT): libc/stdio/$(am__dirstamp) \
> > +       libc/stdio/$(DEPDIR)/$(am__dirstamp)
> > +libc/stdio/libc_a-sswprint_r.$(OBJEXT): libc/stdio/$(am__dirstamp) \
> > +       libc/stdio/$(DEPDIR)/$(am__dirstamp)
> >  libc/stdio/libc_a-stdio.$(OBJEXT): libc/stdio/$(am__dirstamp) \
> >         libc/stdio/$(DEPDIR)/$(am__dirstamp)
> >  libc/stdio/libc_a-svfiwprintf.$(OBJEXT): libc/stdio/$(am__dirstamp) \
> > @@ -24305,20 +24304,6 @@ libc/stdio/libc_a-ssputs_r.obj: libc/stdio/ssputs_r.c
> >  @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
> >  @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/stdio/libc_a-ssputs_r.obj `if test -f 'libc/stdio/ssputs_r.c'; then $(CYGPATH_W) 'libc/stdio/ssputs_r.c'; else $(CYGPATH_W) '$(srcdir)/libc/stdio/ssputs_r.c'; fi`
> >
> > -libc/stdio/libc_a-ssputws_r.o: libc/stdio/ssputws_r.c
> > -@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/stdio/libc_a-ssputws_r.o -MD -MP -MF libc/stdio/$(DEPDIR)/libc_a-ssputws_r.Tpo -c -o libc/stdio/libc_a-ssputws_r.o `test -f 'libc/stdio/ssputws_r.c' || echo '$(srcdir)/'`libc/stdio/ssputws_r.c
> > -@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libc/stdio/$(DEPDIR)/libc_a-ssputws_r.Tpo libc/stdio/$(DEPDIR)/libc_a-ssputws_r.Po
> > -@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libc/stdio/ssputws_r.c' object='libc/stdio/libc_a-ssputws_r.o' libtool=no @AMDEPBACKSLASH@
> > -@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
> > -@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/stdio/libc_a-ssputws_r.o `test -f 'libc/stdio/ssputws_r.c' || echo '$(srcdir)/'`libc/stdio/ssputws_r.c
> > -
> > -libc/stdio/libc_a-ssputws_r.obj: libc/stdio/ssputws_r.c
> > -@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/stdio/libc_a-ssputws_r.obj -MD -MP -MF libc/stdio/$(DEPDIR)/libc_a-ssputws_r.Tpo -c -o libc/stdio/libc_a-ssputws_r.obj `if test -f 'libc/stdio/ssputws_r.c'; then $(CYGPATH_W) 'libc/stdio/ssputws_r.c'; else $(CYGPATH_W) '$(srcdir)/libc/stdio/ssputws_r.c'; fi`
> > -@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libc/stdio/$(DEPDIR)/libc_a-ssputws_r.Tpo libc/stdio/$(DEPDIR)/libc_a-ssputws_r.Po
> > -@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libc/stdio/ssputws_r.c' object='libc/stdio/libc_a-ssputws_r.obj' libtool=no @AMDEPBACKSLASH@
> > -@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
> > -@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/stdio/libc_a-ssputws_r.obj `if test -f 'libc/stdio/ssputws_r.c'; then $(CYGPATH_W) 'libc/stdio/ssputws_r.c'; else $(CYGPATH_W) '$(srcdir)/libc/stdio/ssputws_r.c'; fi`
> > -
> >  libc/stdio/libc_a-ssprint_r.o: libc/stdio/ssprint_r.c
> >  @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/stdio/libc_a-ssprint_r.o -MD -MP -MF libc/stdio/$(DEPDIR)/libc_a-ssprint_r.Tpo -c -o libc/stdio/libc_a-ssprint_r.o `test -f 'libc/stdio/ssprint_r.c' || echo '$(srcdir)/'`libc/stdio/ssprint_r.c
> >  @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libc/stdio/$(DEPDIR)/libc_a-ssprint_r.Tpo libc/stdio/$(DEPDIR)/libc_a-ssprint_r.Po
> > @@ -24333,20 +24318,6 @@ libc/stdio/libc_a-ssprint_r.obj: libc/stdio/ssprint_r.c
> >  @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
> >  @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/stdio/libc_a-ssprint_r.obj `if test -f 'libc/stdio/ssprint_r.c'; then $(CYGPATH_W) 'libc/stdio/ssprint_r.c'; else $(CYGPATH_W) '$(srcdir)/libc/stdio/ssprint_r.c'; fi`
> >
> > -libc/stdio/libc_a-sswprint_r.o: libc/stdio/sswprint_r.c
> > -@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/stdio/libc_a-sswprint_r.o -MD -MP -MF libc/stdio/$(DEPDIR)/libc_a-sswprint_r.Tpo -c -o libc/stdio/libc_a-sswprint_r.o `test -f 'libc/stdio/sswprint_r.c' || echo '$(srcdir)/'`libc/stdio/sswprint_r.c
> > -@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libc/stdio/$(DEPDIR)/libc_a-sswprint_r.Tpo libc/stdio/$(DEPDIR)/libc_a-sswprint_r.Po
> > -@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libc/stdio/sswprint_r.c' object='libc/stdio/libc_a-sswprint_r.o' libtool=no @AMDEPBACKSLASH@
> > -@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
> > -@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/stdio/libc_a-sswprint_r.o `test -f 'libc/stdio/sswprint_r.c' || echo '$(srcdir)/'`libc/stdio/sswprint_r.c
> > -
> > -libc/stdio/libc_a-sswprint_r.obj: libc/stdio/sswprint_r.c
> > -@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/stdio/libc_a-sswprint_r.obj -MD -MP -MF libc/stdio/$(DEPDIR)/libc_a-sswprint_r.Tpo -c -o libc/stdio/libc_a-sswprint_r.obj `if test -f 'libc/stdio/sswprint_r.c'; then $(CYGPATH_W) 'libc/stdio/sswprint_r.c'; else $(CYGPATH_W) '$(srcdir)/libc/stdio/sswprint_r.c'; fi`
> > -@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libc/stdio/$(DEPDIR)/libc_a-sswprint_r.Tpo libc/stdio/$(DEPDIR)/libc_a-sswprint_r.Po
> > -@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libc/stdio/sswprint_r.c' object='libc/stdio/libc_a-sswprint_r.obj' libtool=no @AMDEPBACKSLASH@
> > -@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
> > -@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/stdio/libc_a-sswprint_r.obj `if test -f 'libc/stdio/sswprint_r.c'; then $(CYGPATH_W) 'libc/stdio/sswprint_r.c'; else $(CYGPATH_W) '$(srcdir)/libc/stdio/sswprint_r.c'; fi`
> > -
> >  libc/stdio/libc_a-clearerr.o: libc/stdio/clearerr.c
> >  @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/stdio/libc_a-clearerr.o -MD -MP -MF libc/stdio/$(DEPDIR)/libc_a-clearerr.Tpo -c -o libc/stdio/libc_a-clearerr.o `test -f 'libc/stdio/clearerr.c' || echo '$(srcdir)/'`libc/stdio/clearerr.c
> >  @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libc/stdio/$(DEPDIR)/libc_a-clearerr.Tpo libc/stdio/$(DEPDIR)/libc_a-clearerr.Po
> > @@ -25103,6 +25074,34 @@ libc/stdio/libc_a-sscanf.obj: libc/stdio/sscanf.c
> >  @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
> >  @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/stdio/libc_a-sscanf.obj `if test -f 'libc/stdio/sscanf.c'; then $(CYGPATH_W) 'libc/stdio/sscanf.c'; else $(CYGPATH_W) '$(srcdir)/libc/stdio/sscanf.c'; fi`
> >
> > +libc/stdio/libc_a-ssputws_r.o: libc/stdio/ssputws_r.c
> > +@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/stdio/libc_a-ssputws_r.o -MD -MP -MF libc/stdio/$(DEPDIR)/libc_a-ssputws_r.Tpo -c -o libc/stdio/libc_a-ssputws_r.o `test -f 'libc/stdio/ssputws_r.c' || echo '$(srcdir)/'`libc/stdio/ssputws_r.c
> > +@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libc/stdio/$(DEPDIR)/libc_a-ssputws_r.Tpo libc/stdio/$(DEPDIR)/libc_a-ssputws_r.Po
> > +@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libc/stdio/ssputws_r.c' object='libc/stdio/libc_a-ssputws_r.o' libtool=no @AMDEPBACKSLASH@
> > +@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
> > +@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/stdio/libc_a-ssputws_r.o `test -f 'libc/stdio/ssputws_r.c' || echo '$(srcdir)/'`libc/stdio/ssputws_r.c
> > +
> > +libc/stdio/libc_a-ssputws_r.obj: libc/stdio/ssputws_r.c
> > +@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/stdio/libc_a-ssputws_r.obj -MD -MP -MF libc/stdio/$(DEPDIR)/libc_a-ssputws_r.Tpo -c -o libc/stdio/libc_a-ssputws_r.obj `if test -f 'libc/stdio/ssputws_r.c'; then $(CYGPATH_W) 'libc/stdio/ssputws_r.c'; else $(CYGPATH_W) '$(srcdir)/libc/stdio/ssputws_r.c'; fi`
> > +@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libc/stdio/$(DEPDIR)/libc_a-ssputws_r.Tpo libc/stdio/$(DEPDIR)/libc_a-ssputws_r.Po
> > +@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libc/stdio/ssputws_r.c' object='libc/stdio/libc_a-ssputws_r.obj' libtool=no @AMDEPBACKSLASH@
> > +@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
> > +@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/stdio/libc_a-ssputws_r.obj `if test -f 'libc/stdio/ssputws_r.c'; then $(CYGPATH_W) 'libc/stdio/ssputws_r.c'; else $(CYGPATH_W) '$(srcdir)/libc/stdio/ssputws_r.c'; fi`
> > +
> > +libc/stdio/libc_a-sswprint_r.o: libc/stdio/sswprint_r.c
> > +@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/stdio/libc_a-sswprint_r.o -MD -MP -MF libc/stdio/$(DEPDIR)/libc_a-sswprint_r.Tpo -c -o libc/stdio/libc_a-sswprint_r.o `test -f 'libc/stdio/sswprint_r.c' || echo '$(srcdir)/'`libc/stdio/sswprint_r.c
> > +@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libc/stdio/$(DEPDIR)/libc_a-sswprint_r.Tpo libc/stdio/$(DEPDIR)/libc_a-sswprint_r.Po
> > +@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libc/stdio/sswprint_r.c' object='libc/stdio/libc_a-sswprint_r.o' libtool=no @AMDEPBACKSLASH@
> > +@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
> > +@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/stdio/libc_a-sswprint_r.o `test -f 'libc/stdio/sswprint_r.c' || echo '$(srcdir)/'`libc/stdio/sswprint_r.c
> > +
> > +libc/stdio/libc_a-sswprint_r.obj: libc/stdio/sswprint_r.c
> > +@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/stdio/libc_a-sswprint_r.obj -MD -MP -MF libc/stdio/$(DEPDIR)/libc_a-sswprint_r.Tpo -c -o libc/stdio/libc_a-sswprint_r.obj `if test -f 'libc/stdio/sswprint_r.c'; then $(CYGPATH_W) 'libc/stdio/sswprint_r.c'; else $(CYGPATH_W) '$(srcdir)/libc/stdio/sswprint_r.c'; fi`
> > +@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libc/stdio/$(DEPDIR)/libc_a-sswprint_r.Tpo libc/stdio/$(DEPDIR)/libc_a-sswprint_r.Po
> > +@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libc/stdio/sswprint_r.c' object='libc/stdio/libc_a-sswprint_r.obj' libtool=no @AMDEPBACKSLASH@
> > +@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
> > +@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/stdio/libc_a-sswprint_r.obj `if test -f 'libc/stdio/sswprint_r.c'; then $(CYGPATH_W) 'libc/stdio/sswprint_r.c'; else $(CYGPATH_W) '$(srcdir)/libc/stdio/sswprint_r.c'; fi`
> > +
> >  libc/stdio/libc_a-stdio.o: libc/stdio/stdio.c
> >  @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/stdio/libc_a-stdio.o -MD -MP -MF libc/stdio/$(DEPDIR)/libc_a-stdio.Tpo -c -o libc/stdio/libc_a-stdio.o `test -f 'libc/stdio/stdio.c' || echo '$(srcdir)/'`libc/stdio/stdio.c
> >  @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libc/stdio/$(DEPDIR)/libc_a-stdio.Tpo libc/stdio/$(DEPDIR)/libc_a-stdio.Po
> > diff --git a/newlib/libc/stdio/Makefile.inc b/newlib/libc/stdio/Makefile.inc
> > index e25680212..09a508928 100644
> > --- a/newlib/libc/stdio/Makefile.inc
> > +++ b/newlib/libc/stdio/Makefile.inc
> > @@ -39,9 +39,7 @@ libc_a_SOURCES += \
> >         %D%/sprint_r.c \
> >         %D%/swprint_r.c \
> >         %D%/ssputs_r.c \
> > -       %D%/ssputws_r.c \
> > -       %D%/ssprint_r.c \
> > -       %D%/sswprint_r.c
> > +       %D%/ssprint_r.c
> >  endif
> >
> >  libc_a_SOURCES += \
> > @@ -99,6 +97,8 @@ libc_a_SOURCES += \
> >         %D%/snprintf.c \
> >         %D%/sprintf.c \
> >         %D%/sscanf.c \
> > +       %D%/ssputws_r.c \
> > +       %D%/sswprint_r.c \
> >         %D%/stdio.c \
> >         %D%/svfiwprintf.c \
> >         %D%/svfiwscanf.c \
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.