public inbox for newlib@sourceware.org
 help / color / mirror / Atom feed
* Build-dependency issues with ELIX_LEVEL
@ 2022-03-29  9:14 Tobias Burnus
  2022-03-30  9:43 ` [Patch] (1/n) newlib: Only call _fputwc_r if ELIX_LEVEL >= 4 (was: Build-dependency issues with ELIX_LEVEL) Tobias Burnus
  2022-03-30 10:56 ` [Patch] (2/n) newlib: Move vasniprintf.c to ELIX 1 " Tobias Burnus
  0 siblings, 2 replies; 6+ messages in thread
From: Tobias Burnus @ 2022-03-29  9:14 UTC (permalink / raw)
  To: newlib

Hello,

there is an issue with ELIX_LEVEL and dependencies.

Namely, files compiled for a given ELIX_LEVEL (here: 1)
still call functions which are only available in a higher
ELIX_LEVEL.

Expected: Either those files are also build - or the function
is not called (#ifdef or also removing the other file from
the ELIX_LEVEL).

The issue seems to be old - but popped up for nvptx (link
error when using 'fprintf), but I think it should be addressed
in general.

  * * *

The original issue (missing '_fputwc_r' symbol) did show up with nvptx, which uses
   #define _ELIX_LEVEL 1
   #define _WIDE_ORIENT 1
   #undef _NANO_FORMATTED_IO

The problem is:
    newlib/libc/stdio/vfprintf.c (and newlib/libc/stdio/nano-vfprintf.c )

that are compiled via newlib/Makefile.in as
   @HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_TRUE@    libc/stdio/nano-vfprintf_float.c \
   @HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@   libc/stdio/vfprintf.c \

both files have
  #ifdef _WIDE_ORIENT
  ...
                 if (_fputwc_r (ptr, p[i], fp) == WEOF)

But _fputwc_r is only available via:
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@@HAVE_STDIO_DIR_TRUE@       libc/stdio/fputwc.c \


I have not studied the ELIX_LEVEL documentation in depth, but I think the following
is the proper solution (tested with nvptx, i.e. only the non-nano version):

--------------------------------------
newlib: Only call _fputwc_r if ELIX_LEVEL >= 3

--- a/newlib/libc/stdio/nano-vfprintf.c
+++ b/newlib/libc/stdio/nano-vfprintf.c
@@ -359 +359 @@ __sprint_r (struct _reent *ptr,
-#ifdef _WIDE_ORIENT
+#if defined _WIDE_ORIENT && (!defined _ELIX_LEVEL || _ELIX_LEVEL >= 3)
@@ -410 +410 @@ __sfputs_r (struct _reent *ptr,
-#ifdef _WIDE_ORIENT
+#if defined _WIDE_ORIENT && (!defined _ELIX_LEVEL || _ELIX_LEVEL >= 3)

--- a/newlib/libc/stdio/vfprintf.c
+++ b/newlib/libc/stdio/vfprintf.c
@@ -373 +373 @@ __sfputs_r (struct _reent *ptr,
-#ifdef _WIDE_ORIENT
+#if defined _WIDE_ORIENT && (!defined _ELIX_LEVEL || _ELIX_LEVEL >= 3)
@@ -409 +409 @@ __sprint_r (struct _reent *ptr,
-#ifdef _WIDE_ORIENT
+#if defined _WIDE_ORIENT && (!defined _ELIX_LEVEL || _ELIX_LEVEL >= 3)
--------------------------------------

  * * *

Looking closer at the generated files, there are also more issues
(see bottom for a list). Analyzing another one:

./newlib/libc/stdio/vdiprintf.c
   calls newlib/libc/stdio/vfiprintf.c's
      _vfiprintf_r
   which calls libc/stdio/vasniprintf.c's (or, '#ifdef _NANO_FORMATTED_IO', libc/stdio/vasnprintf.c's)
      _vasniprintf_r
which then calls libc/stdio/nano-vfprintf.c's
      _svfiprintf_r

However, while
   @HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@   libc/stdio/vdiprintf.c \
and likewise _svfiprintf_r, the vasniprintf.c is missing for NANO and for
non-NANO it is only enabled for ELIX_LEVEL 4. Untested fix:

------------------------------------------
--- a/newlib/libc/stdio/Makefile.inc
+++ b/newlib/libc/stdio/Makefile.inc
@@ -9,2 +9,3 @@ libc_a_SOURCES += \
        %D%/nano-vfprintf_i.c \
+       %D%/nano-vasniprintf.c \
        %D%/nano-vfscanf.c \
@@ -26,2 +27,3 @@ libc_a_SOURCES += \
        %D%/vdiprintf.c \
+       %D%/vasnprintf.c \
        %D%/vfprintf.c \
@@ -184,3 +186,2 @@ else
        %D%/ungetwc.c \
-       %D%/vasnprintf.c \
        %D%/vswprintf.c \
------------------------------------------

Thoughts?

Tobias

PS: The full list of symbols called - but not provided in libc
(compiled for nvptx) is the following. Note: I might have misgreped
and I have only had a closer look at _fputwc_r and _vasniprintf_r.

=== __ffsdi2 ==
string/libc_a-ffsl.o
string/libc_a-ffsll.o
=== __hash_open ==
search/libc_a-ndbm.o
=== _fgetwc_r ==
stdio/libc_a-vfiwscanf.o
stdio/libc_a-vfwscanf.o
=== _fputwc_r ==
stdio/libc_a-vfiprintf.o
=== _fseeko_r ==
stdio/libc_a-fseek.o
=== _ftello_r ==
stdio/libc_a-ftell.o
=== _memalign_r ==
stdlib/libc_a-aligned_alloc.o
=== _ungetwc_r ==
stdio/libc_a-vfiwscanf.o
stdio/libc_a-vfwscanf.o
=== _vasniprintf_r ==
stdio/libc_a-vdiprintf.o
=== _vasnprintf_r ==
stdio/libc_a-vdprintf.o
=== _wcrtomb_r ==
stdio/libc_a-svfiwscanf.o
stdio/libc_a-svfwscanf.o
stdio/libc_a-vfiwscanf.o
stdio/libc_a-vfwscanf.o
=== _wcsnrtombs_l ==
stdlib/libc_a-wcstod.o
=== btowc ==
locale/libc_a-locale.o
stdio/libc_a-vfiwprintf.o
stdio/libc_a-svfwprintf.o
stdio/libc_a-vfwprintf.o
stdio/libc_a-svfiwprintf.o
=== fcntl ==
reent/libc_a-fcntlr.o
=== getentropy ==
stdlib/libc_a-arc4random.o
=== getpid; ==
reent/libc_a-signalr.o
=== gettimeofday ==
reent/libc_a-gettimeofdayr.o
time/libc_a-time.o
=== iswcntrl ==
string/libc_a-wcwidth.o
=== iswprint ==
string/libc_a-wcwidth.o
=== iswspace ==
stdio/libc_a-svfiwscanf.o
stdio/libc_a-svfwscanf.o
stdio/libc_a-vfiwscanf.o
stdio/libc_a-vfwscanf.o
stdlib/libc_a-wcstod.o
stdlib/libc_a-wcstoul.o
stdlib/libc_a-wcstoll.o
stdlib/libc_a-wcstoimax.o
stdlib/libc_a-wcstol.o
stdlib/libc_a-wcstoumax.o
stdlib/libc_a-wcstoull.o
=== iswspace_l ==
stdlib/libc_a-wcstod.o
stdlib/libc_a-wcstoul.o
stdlib/libc_a-wcstoll.o
stdlib/libc_a-wcstoimax.o
stdlib/libc_a-wcstol.o
stdlib/libc_a-wcstoumax.o
stdlib/libc_a-wcstoull.o
=== kill ==
reent/libc_a-signalr.o
signal/libc_a-signal.o
=== link ==
reent/libc_a-linkr.o
reent/libc_a-unlinkr.o
reent/libc_a-renamer.o
reent/libc_a-renamer.o
stdio/libc_a-remove.o
=== malloc ==
machine/nvptx/libc_a-mallocr.o
machine/nvptx/libc_a-realloc.o
machine/nvptx/libc_a-calloc.o
machine/nvptx/libc_a-malloc.o
signal/libc_a-signal.o
stdio/libc_a-svfiprintf.o
stdio/libc_a-setvbuf.o
stdio/libc_a-tmpnam.o
stdio/libc_a-vfiwprintf.o
stdio/libc_a-svfwprintf.o
stdio/libc_a-makebuf.o
stdio/libc_a-svfprintf.o
stdio/libc_a-findfp.o
stdio/libc_a-vfwprintf.o
stdio/libc_a-ungetc.o
stdio/libc_a-svfiwprintf.o
stdio/libc_a-fvwrite.o
stdlib/libc_a-quick_exit.o
stdlib/libc_a-__atexit.o
stdlib/libc_a-wcstod.o
string/libc_a-strdup_r.o
time/libc_a-tzset_r.o
=== memmem ==
string/libc_a-strnstr.o
=== mkdir ==
reent/libc_a-mkdirr.o
=== sbrk ==
reent/libc_a-sbrkr.o
=== stat ==
reent/libc_a-statr.o
reent/libc_a-fstatr.o
stdio/libc_a-makebuf.o
=== strncasecmp_l ==
time/libc_a-strptime.o
=== swprintf ==
stdio/libc_a-svfwscanf.o
stdio/libc_a-vfwscanf.o
time/libc_a-wcsftime.o
=== times ==
reent/libc_a-timesr.o
=== towlower ==
time/libc_a-wcsftime.o
=== wcrtomb ==
stdio/libc_a-svfiwscanf.o
stdio/libc_a-svfiwscanf.o
stdio/libc_a-svfwscanf.o
stdio/libc_a-svfwscanf.o
stdio/libc_a-vfiwscanf.o
stdio/libc_a-vfiwscanf.o
stdio/libc_a-vfwscanf.o
stdio/libc_a-vfwscanf.o

-----------------
Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Patch] (1/n) newlib: Only call _fputwc_r if ELIX_LEVEL >= 4 (was: Build-dependency issues with ELIX_LEVEL)
  2022-03-29  9:14 Build-dependency issues with ELIX_LEVEL Tobias Burnus
@ 2022-03-30  9:43 ` Tobias Burnus
  2022-03-30 20:02   ` Jeff Johnston
  2022-03-30 10:56 ` [Patch] (2/n) newlib: Move vasniprintf.c to ELIX 1 " Tobias Burnus
  1 sibling, 1 reply; 6+ messages in thread
From: Tobias Burnus @ 2022-03-30  9:43 UTC (permalink / raw)
  To: newlib

[-- Attachment #1: Type: text/plain, Size: 1030 bytes --]

Hello,

this packages the the first patch of last/first email in this thread.

As described in the commit log (and previous email),
__sprint_r and __sfputs_r of (nano-)vfprintf.c
call fputwc.c's _fputwc_r.

While the vfprintf.c file is compiled for ELIX_LEVEL >= 1,
the fputwc.c file is only compiled with ELIX_LEVEL >= 4.

Solution: This patch ignores the _WIDE_ORIENT support in
__sprint_r / __sfputs_r unless ELIX_LEVEL >= 4.

It feels like the right solution but the ELIX description is
vague enough to be not sure.

Without that patch I get for ELIX_LEVEL == 1 (with nvptx)
a link error (missing symbol) for a code calling 'fprintf'
(with no wide char used).

OK? – If so, please commit. Otherwise, comments are welcome.

Tobias
-----------------
Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955

[-- Attachment #2: 0001-newlib-Only-call-_fputwc_r-if-ELIX_LEVEL-4.patch --]
[-- Type: text/x-patch, Size: 2688 bytes --]

[PATCH] newlib: Only call _fputwc_r if ELIX_LEVEL >= 4

(nano-)vfprintf.c is enabled for ELIX_LEVEL >= 1. When _WIDE_ORIENT
is set, its __sprint_r / __sfputs_r functions unconditionally called
_fputwc_r which is only in ELEX_LEVEL >= 4. With this commit,
the _WIDE support in (nano-)vfprintf.c is disabled for ELEX_LEVEL < 4.

---
 newlib/libc/stdio/nano-vfprintf.c | 4 ++--
 newlib/libc/stdio/vfprintf.c      | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/newlib/libc/stdio/nano-vfprintf.c b/newlib/libc/stdio/nano-vfprintf.c
index bc7ed0743..24472195f 100644
--- a/newlib/libc/stdio/nano-vfprintf.c
+++ b/newlib/libc/stdio/nano-vfprintf.c
@@ -351,17 +351,17 @@ __sprint_r (struct _reent *ptr,
 {
   register int err = 0;
 
   if (uio->uio_resid == 0)
     {
       uio->uio_iovcnt = 0;
       return 0;
     }
-#ifdef _WIDE_ORIENT
+#if defined _WIDE_ORIENT && (!defined _ELIX_LEVEL || _ELIX_LEVEL >= 4)
     if (fp->_flags2 & __SWID)
       {
 	struct __siov *iov;
 	wchar_t *p;
 	int i, len;
 
 	iov = uio->uio_iov;
 	for (; uio->uio_resid != 0;
@@ -402,17 +402,17 @@ __sfputc_r (struct _reent *ptr,
 int
 __sfputs_r (struct _reent *ptr,
        FILE *fp,
        const char *buf,
        size_t len)
 {
   register int i;
 
-#ifdef _WIDE_ORIENT
+#if defined _WIDE_ORIENT && (!defined _ELIX_LEVEL || _ELIX_LEVEL >= 4)
   if (fp->_flags2 & __SWID)
     {
       wchar_t *p;
 
       p = (wchar_t *) buf;
       for (i = 0; i < (len / sizeof (wchar_t)); i++)
 	{
 	  if (_fputwc_r (ptr, p[i], fp) == WEOF)
diff --git a/newlib/libc/stdio/vfprintf.c b/newlib/libc/stdio/vfprintf.c
index c1483c0ac..6ff5b5686 100644
--- a/newlib/libc/stdio/vfprintf.c
+++ b/newlib/libc/stdio/vfprintf.c
@@ -365,17 +365,17 @@ int __ssprint_r (struct _reent *, FILE *, register struct __suio *);
 int
 __sfputs_r (struct _reent *ptr,
        FILE *fp,
        const char *buf,
        size_t len)
 {
 	register int i;
 
-#ifdef _WIDE_ORIENT
+#if defined _WIDE_ORIENT && (!defined _ELIX_LEVEL || _ELIX_LEVEL >= 4)
 	if (fp->_flags2 & __SWID) {
 		wchar_t *p;
 
 		p = (wchar_t *) buf;
 		for (i = 0; i < (len / sizeof (wchar_t)); i++) {
 			if (_fputwc_r (ptr, p[i], fp) == WEOF)
 				return -1;
 		}
@@ -401,17 +401,17 @@ __sprint_r (struct _reent *ptr,
        register struct __suio *uio)
 {
 	register int err = 0;
 
 	if (uio->uio_resid == 0) {
 		uio->uio_iovcnt = 0;
 		return (0);
 	}
-#ifdef _WIDE_ORIENT
+#if defined _WIDE_ORIENT && (!defined _ELIX_LEVEL || _ELIX_LEVEL >= 4)
 	if (fp->_flags2 & __SWID) {
 		struct __siov *iov;
 		wchar_t *p;
 		int i, len;
 
 		iov = uio->uio_iov;
 		for (; uio->uio_resid != 0;
 		     uio->uio_resid -= len * sizeof (wchar_t), iov++) {

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Patch] (2/n) newlib: Move vasniprintf.c to ELIX 1 (was: Build-dependency issues with ELIX_LEVEL)
  2022-03-29  9:14 Build-dependency issues with ELIX_LEVEL Tobias Burnus
  2022-03-30  9:43 ` [Patch] (1/n) newlib: Only call _fputwc_r if ELIX_LEVEL >= 4 (was: Build-dependency issues with ELIX_LEVEL) Tobias Burnus
@ 2022-03-30 10:56 ` Tobias Burnus
  2022-04-06  5:11   ` *ping* " Tobias Burnus
  1 sibling, 1 reply; 6+ messages in thread
From: Tobias Burnus @ 2022-03-30 10:56 UTC (permalink / raw)
  To: newlib

[-- Attachment #1: Type: text/plain, Size: 1453 bytes --]

Attached is a revised version of the patch in the first email in the thread.
Found when looking for referenced but not provided functions
with nvptx, which sets ELIX Level to 1.


libc/stdio/vdiprintf.c's _vdiprintf_r calls _vasniprintf_r
The file is compiled with ELIX Level 1.

The function _vasniprintf_r is provided either via
* libc/stdio/vasniprintf.c which calls _svfiprintf_r
* libc/stdio/vasnprintf.c (only '#ifdef _NANO_FORMATTED_IO')
   which calls _svfprintf_r

We can ignore the second file as no NANO function calls
it. Thus, only the first file (vasniprintf.c) remains.

The _svfiprintf_r / _svfiprintf_r are provided by
libc/stdio/(nano-)vfprintf.c
Those files are also available with ELIX Level 1.


Solution: Also build vasniprintf.c with ELIX Level 1
instead of building it with ELIX Level 4.

The change should be save as the only library call I see
in that file (vasniprintf.c) is to vfprintf.c. And on the
caller side, the call to _vasniprintf_r is not guarded by
any #if. Thus, no new dependencies should get introduced
by this change.


OK? Comments?

Tobias
(Makefile.inc patch + regenerated Makefile.in as separate patch)
-----------------
Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955

[-- Attachment #2: 0001-newlib-Move-vasniprintf.c-to-ELIX-1.patch --]
[-- Type: text/x-patch, Size: 1265 bytes --]

From 17cf1375e4f0e5ad02fdaccfd0735536629f014c Mon Sep 17 00:00:00 2001
From: Tobias Burnus <tobias@codesourcery.com>
Date: Wed, 30 Mar 2022 12:17:45 +0200
Subject: [PATCH] newlib: Move vasniprintf.c to ELIX 1

vdiprintf.c is ELIX Level 1 and calls _vasniprintf_r, which is in
vasniprintf.c (before ELIX Level 4 now in 1). The latter only calls
_svfiprintf_r which is provided by vfprintf.c (also ELIX Level 1).
---
 newlib/libc/stdio/Makefile.inc | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/newlib/libc/stdio/Makefile.inc b/newlib/libc/stdio/Makefile.inc
index 2126ceaf5..c2b79641e 100644
--- a/newlib/libc/stdio/Makefile.inc
+++ b/newlib/libc/stdio/Makefile.inc
@@ -34,5 +34,6 @@ libc_a_SOURCES += \
 	%D%/vsiprintf.c \
 	%D%/vsiscanf.c \
-	%D%/vsniprintf.c
+	%D%/vsniprintf.c \
+	%D%/vasniprintf.c
 endif
 
@@ -130,5 +131,5 @@ endif !NEWLIB_NANO_FORMATTED_IO
 endif !ELIX_LEVEL_1
 
-## The following are EL/IX level 2 interfaces
+## The following are EL/IX level 4 interfaces
 if ELIX_LEVEL_1
 %C%_ELIX_4_SOURCES =
@@ -193,6 +194,5 @@ if !NEWLIB_NANO_FORMATTED_IO
 %C%_ELIX_4_SOURCES += \
 	%D%/asniprintf.c \
-	%D%/diprintf.c \
-	%D%/vasniprintf.c
+	%D%/diprintf.c
 endif !NEWLIB_NANO_FORMATTED_IO
 endif !ELIX_LEVEL_3
-- 
2.25.1

[-- Attachment #3: re-gen-Makefile.in.diff --]
[-- Type: text/x-patch, Size: 11455 bytes --]

 newlib/Makefile.in | 44 ++++++++++++++++++++++----------------------
 1 file changed, 22 insertions(+), 22 deletions(-)

diff --git a/newlib/Makefile.in b/newlib/Makefile.in
index 41e41412b..719c8c295 100644
--- a/newlib/Makefile.in
+++ b/newlib/Makefile.in
@@ -238,7 +238,8 @@ check_PROGRAMS =
 @HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@	libc/stdio/viscanf.c \
 @HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@	libc/stdio/vsiprintf.c \
 @HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@	libc/stdio/vsiscanf.c \
-@HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@	libc/stdio/vsniprintf.c
+@HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@	libc/stdio/vsniprintf.c \
+@HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@	libc/stdio/vasniprintf.c
 
 @HAVE_STDIO_DIR_TRUE@am__append_13 = libc/stdio/clearerr.c \
 @HAVE_STDIO_DIR_TRUE@	libc/stdio/fclose.c libc/stdio/fdopen.c \
@@ -294,8 +295,7 @@ check_PROGRAMS =
 
 @ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@@HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@am__append_15 = \
 @ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@@HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@	libc/stdio/asniprintf.c \
-@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@@HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@	libc/stdio/diprintf.c \
-@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@@HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@	libc/stdio/vasniprintf.c
+@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@@HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@	libc/stdio/diprintf.c
 
 @ELIX_LEVEL_1_FALSE@@HAVE_STDIO64_DIR_TRUE@am__append_16 = \
 @ELIX_LEVEL_1_FALSE@@HAVE_STDIO64_DIR_TRUE@	libc/stdio64/fdopen64.c \
@@ -1145,7 +1145,8 @@ am__objects_5 = libc/stdlib/libc_a-rpmatch.$(OBJEXT) \
 @HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@	libc/stdio/libc_a-viscanf.$(OBJEXT) \
 @HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@	libc/stdio/libc_a-vsiprintf.$(OBJEXT) \
 @HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@	libc/stdio/libc_a-vsiscanf.$(OBJEXT) \
-@HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@	libc/stdio/libc_a-vsniprintf.$(OBJEXT)
+@HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@	libc/stdio/libc_a-vsniprintf.$(OBJEXT) \
+@HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@	libc/stdio/libc_a-vasniprintf.$(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) \
@@ -1158,8 +1159,7 @@ am__objects_5 = libc/stdlib/libc_a-rpmatch.$(OBJEXT) \
 @ELIX_LEVEL_1_FALSE@@HAVE_STDIO_DIR_TRUE@	libc/stdio/libc_a-vasprintf.$(OBJEXT) \
 @ELIX_LEVEL_1_FALSE@@HAVE_STDIO_DIR_TRUE@	$(am__objects_12)
 @ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@@HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@am__objects_14 = libc/stdio/libc_a-asniprintf.$(OBJEXT) \
-@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@@HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@	libc/stdio/libc_a-diprintf.$(OBJEXT) \
-@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@@HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@	libc/stdio/libc_a-vasniprintf.$(OBJEXT)
+@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@@HAVE_STDIO_DIR_TRUE@@NEWLIB_NANO_FORMATTED_IO_FALSE@	libc/stdio/libc_a-diprintf.$(OBJEXT)
 @ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@@HAVE_STDIO_DIR_TRUE@am__objects_15 = libc/stdio/libc_a-asnprintf.$(OBJEXT) \
 @ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@@HAVE_STDIO_DIR_TRUE@	libc/stdio/libc_a-clearerr_u.$(OBJEXT) \
 @ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@@HAVE_STDIO_DIR_TRUE@	libc/stdio/libc_a-dprintf.$(OBJEXT) \
@@ -5535,6 +5535,8 @@ libc/stdio/libc_a-vsiscanf.$(OBJEXT): libc/stdio/$(am__dirstamp) \
 	libc/stdio/$(DEPDIR)/$(am__dirstamp)
 libc/stdio/libc_a-vsniprintf.$(OBJEXT): libc/stdio/$(am__dirstamp) \
 	libc/stdio/$(DEPDIR)/$(am__dirstamp)
+libc/stdio/libc_a-vasniprintf.$(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) \
@@ -5804,8 +5806,6 @@ libc/stdio/libc_a-asniprintf.$(OBJEXT): libc/stdio/$(am__dirstamp) \
 	libc/stdio/$(DEPDIR)/$(am__dirstamp)
 libc/stdio/libc_a-diprintf.$(OBJEXT): libc/stdio/$(am__dirstamp) \
 	libc/stdio/$(DEPDIR)/$(am__dirstamp)
-libc/stdio/libc_a-vasniprintf.$(OBJEXT): libc/stdio/$(am__dirstamp) \
-	libc/stdio/$(DEPDIR)/$(am__dirstamp)
 libc/stdio64/$(am__dirstamp):
 	@$(MKDIR_P) libc/stdio64
 	@: > libc/stdio64/$(am__dirstamp)
@@ -22741,6 +22741,20 @@ libc/stdio/libc_a-vsniprintf.obj: libc/stdio/vsniprintf.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-vsniprintf.obj `if test -f 'libc/stdio/vsniprintf.c'; then $(CYGPATH_W) 'libc/stdio/vsniprintf.c'; else $(CYGPATH_W) '$(srcdir)/libc/stdio/vsniprintf.c'; fi`
 
+libc/stdio/libc_a-vasniprintf.o: libc/stdio/vasniprintf.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-vasniprintf.o -MD -MP -MF libc/stdio/$(DEPDIR)/libc_a-vasniprintf.Tpo -c -o libc/stdio/libc_a-vasniprintf.o `test -f 'libc/stdio/vasniprintf.c' || echo '$(srcdir)/'`libc/stdio/vasniprintf.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) libc/stdio/$(DEPDIR)/libc_a-vasniprintf.Tpo libc/stdio/$(DEPDIR)/libc_a-vasniprintf.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='libc/stdio/vasniprintf.c' object='libc/stdio/libc_a-vasniprintf.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-vasniprintf.o `test -f 'libc/stdio/vasniprintf.c' || echo '$(srcdir)/'`libc/stdio/vasniprintf.c
+
+libc/stdio/libc_a-vasniprintf.obj: libc/stdio/vasniprintf.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-vasniprintf.obj -MD -MP -MF libc/stdio/$(DEPDIR)/libc_a-vasniprintf.Tpo -c -o libc/stdio/libc_a-vasniprintf.obj `if test -f 'libc/stdio/vasniprintf.c'; then $(CYGPATH_W) 'libc/stdio/vasniprintf.c'; else $(CYGPATH_W) '$(srcdir)/libc/stdio/vasniprintf.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) libc/stdio/$(DEPDIR)/libc_a-vasniprintf.Tpo libc/stdio/$(DEPDIR)/libc_a-vasniprintf.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='libc/stdio/vasniprintf.c' object='libc/stdio/libc_a-vasniprintf.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-vasniprintf.obj `if test -f 'libc/stdio/vasniprintf.c'; then $(CYGPATH_W) 'libc/stdio/vasniprintf.c'; else $(CYGPATH_W) '$(srcdir)/libc/stdio/vasniprintf.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
@@ -24617,20 +24631,6 @@ libc/stdio/libc_a-diprintf.obj: libc/stdio/diprintf.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-diprintf.obj `if test -f 'libc/stdio/diprintf.c'; then $(CYGPATH_W) 'libc/stdio/diprintf.c'; else $(CYGPATH_W) '$(srcdir)/libc/stdio/diprintf.c'; fi`
 
-libc/stdio/libc_a-vasniprintf.o: libc/stdio/vasniprintf.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-vasniprintf.o -MD -MP -MF libc/stdio/$(DEPDIR)/libc_a-vasniprintf.Tpo -c -o libc/stdio/libc_a-vasniprintf.o `test -f 'libc/stdio/vasniprintf.c' || echo '$(srcdir)/'`libc/stdio/vasniprintf.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) libc/stdio/$(DEPDIR)/libc_a-vasniprintf.Tpo libc/stdio/$(DEPDIR)/libc_a-vasniprintf.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='libc/stdio/vasniprintf.c' object='libc/stdio/libc_a-vasniprintf.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-vasniprintf.o `test -f 'libc/stdio/vasniprintf.c' || echo '$(srcdir)/'`libc/stdio/vasniprintf.c
-
-libc/stdio/libc_a-vasniprintf.obj: libc/stdio/vasniprintf.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-vasniprintf.obj -MD -MP -MF libc/stdio/$(DEPDIR)/libc_a-vasniprintf.Tpo -c -o libc/stdio/libc_a-vasniprintf.obj `if test -f 'libc/stdio/vasniprintf.c'; then $(CYGPATH_W) 'libc/stdio/vasniprintf.c'; else $(CYGPATH_W) '$(srcdir)/libc/stdio/vasniprintf.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) libc/stdio/$(DEPDIR)/libc_a-vasniprintf.Tpo libc/stdio/$(DEPDIR)/libc_a-vasniprintf.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='libc/stdio/vasniprintf.c' object='libc/stdio/libc_a-vasniprintf.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-vasniprintf.obj `if test -f 'libc/stdio/vasniprintf.c'; then $(CYGPATH_W) 'libc/stdio/vasniprintf.c'; else $(CYGPATH_W) '$(srcdir)/libc/stdio/vasniprintf.c'; fi`
-
 libc/stdio64/libc_a-fdopen64.o: libc/stdio64/fdopen64.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/stdio64/libc_a-fdopen64.o -MD -MP -MF libc/stdio64/$(DEPDIR)/libc_a-fdopen64.Tpo -c -o libc/stdio64/libc_a-fdopen64.o `test -f 'libc/stdio64/fdopen64.c' || echo '$(srcdir)/'`libc/stdio64/fdopen64.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) libc/stdio64/$(DEPDIR)/libc_a-fdopen64.Tpo libc/stdio64/$(DEPDIR)/libc_a-fdopen64.Po

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Patch] (1/n) newlib: Only call _fputwc_r if ELIX_LEVEL >= 4 (was: Build-dependency issues with ELIX_LEVEL)
  2022-03-30  9:43 ` [Patch] (1/n) newlib: Only call _fputwc_r if ELIX_LEVEL >= 4 (was: Build-dependency issues with ELIX_LEVEL) Tobias Burnus
@ 2022-03-30 20:02   ` Jeff Johnston
  0 siblings, 0 replies; 6+ messages in thread
From: Jeff Johnston @ 2022-03-30 20:02 UTC (permalink / raw)
  To: Tobias Burnus; +Cc: Newlib

Hi Tobias.  This patch was merged to master.

Thanks,

-- Jeff J.

On Wed, Mar 30, 2022 at 5:44 AM Tobias Burnus <tobias@codesourcery.com>
wrote:

> Hello,
>
> this packages the the first patch of last/first email in this thread.
>
> As described in the commit log (and previous email),
> __sprint_r and __sfputs_r of (nano-)vfprintf.c
> call fputwc.c's _fputwc_r.
>
> While the vfprintf.c file is compiled for ELIX_LEVEL >= 1,
> the fputwc.c file is only compiled with ELIX_LEVEL >= 4.
>
> Solution: This patch ignores the _WIDE_ORIENT support in
> __sprint_r / __sfputs_r unless ELIX_LEVEL >= 4.
>
> It feels like the right solution but the ELIX description is
> vague enough to be not sure.
>
> Without that patch I get for ELIX_LEVEL == 1 (with nvptx)
> a link error (missing symbol) for a code calling 'fprintf'
> (with no wide char used).
>
> OK? – If so, please commit. Otherwise, comments are welcome.
>
> Tobias
> -----------------
> Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201,
> 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer:
> Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München;
> Registergericht München, HRB 106955
>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* *ping* [Patch] (2/n) newlib: Move vasniprintf.c to ELIX 1 (was: Build-dependency issues with ELIX_LEVEL)
  2022-03-30 10:56 ` [Patch] (2/n) newlib: Move vasniprintf.c to ELIX 1 " Tobias Burnus
@ 2022-04-06  5:11   ` Tobias Burnus
  2022-04-06 16:25     ` Jeff Johnston
  0 siblings, 1 reply; 6+ messages in thread
From: Tobias Burnus @ 2022-04-06  5:11 UTC (permalink / raw)
  To: newlib

*ping*

On 30.03.22 12:56, Tobias Burnus wrote:
> Attached is a revised version of the patch in the first email in the
> thread.
> Found when looking for referenced but not provided functions
> with nvptx, which sets ELIX Level to 1.
>
>
> libc/stdio/vdiprintf.c's _vdiprintf_r calls _vasniprintf_r
> The file is compiled with ELIX Level 1.
>
> The function _vasniprintf_r is provided either via
> * libc/stdio/vasniprintf.c which calls _svfiprintf_r
> * libc/stdio/vasnprintf.c (only '#ifdef _NANO_FORMATTED_IO')
>   which calls _svfprintf_r
>
> We can ignore the second file as no NANO function calls
> it. Thus, only the first file (vasniprintf.c) remains.
>
> The _svfiprintf_r / _svfiprintf_r are provided by
> libc/stdio/(nano-)vfprintf.c
> Those files are also available with ELIX Level 1.
>
>
> Solution: Also build vasniprintf.c with ELIX Level 1
> instead of building it with ELIX Level 4.
>
> The change should be save as the only library call I see
> in that file (vasniprintf.c) is to vfprintf.c. And on the
> caller side, the call to _vasniprintf_r is not guarded by
> any #if. Thus, no new dependencies should get introduced
> by this change.
>
>
> OK? Comments?
>
> Tobias
> (Makefile.inc patch + regenerated Makefile.in as separate patch)
-----------------
Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: *ping* [Patch] (2/n) newlib: Move vasniprintf.c to ELIX 1 (was: Build-dependency issues with ELIX_LEVEL)
  2022-04-06  5:11   ` *ping* " Tobias Burnus
@ 2022-04-06 16:25     ` Jeff Johnston
  0 siblings, 0 replies; 6+ messages in thread
From: Jeff Johnston @ 2022-04-06 16:25 UTC (permalink / raw)
  To: Tobias Burnus; +Cc: Newlib

Tobias,

Looking at the standard:
https://www.sourceware.org/elix/api/current/api.html

vasnprintf and vasniprintf should not be made lower than vasprintf and
aprintf which are
specifically mentioned in the standard as 2.   Regardless, vdprintf and
vdiprintf should never have been Level 1.
I think that moving vdprintf/vdiprintf to level 4 is the correct solution
as part of the EL/IX level benefit is to reduce unused/unneeded
functionality in the lower levels.  As no one has found this before,
vdprintf or vdiprintf are clearly not basic Level 1 functions and
moving to 4 won't affect current users as it wouldn't work unless the level
is 4 or unspecified.

-- Jeff J.


On Wed, Apr 6, 2022 at 1:12 AM Tobias Burnus <tobias@codesourcery.com>
wrote:

> *ping*
>
> On 30.03.22 12:56, Tobias Burnus wrote:
> > Attached is a revised version of the patch in the first email in the
> > thread.
> > Found when looking for referenced but not provided functions
> > with nvptx, which sets ELIX Level to 1.
> >
> >
> > libc/stdio/vdiprintf.c's _vdiprintf_r calls _vasniprintf_r
> > The file is compiled with ELIX Level 1.
> >
> > The function _vasniprintf_r is provided either via
> > * libc/stdio/vasniprintf.c which calls _svfiprintf_r
> > * libc/stdio/vasnprintf.c (only '#ifdef _NANO_FORMATTED_IO')
> >   which calls _svfprintf_r
> >
> > We can ignore the second file as no NANO function calls
> > it. Thus, only the first file (vasniprintf.c) remains.
> >
> > The _svfiprintf_r / _svfiprintf_r are provided by
> > libc/stdio/(nano-)vfprintf.c
> > Those files are also available with ELIX Level 1.
> >
> >
> > Solution: Also build vasniprintf.c with ELIX Level 1
> > instead of building it with ELIX Level 4.
> >
> > The change should be save as the only library call I see
> > in that file (vasniprintf.c) is to vfprintf.c. And on the
> > caller side, the call to _vasniprintf_r is not guarded by
> > any #if. Thus, no new dependencies should get introduced
> > by this change.
> >
> >
> > OK? Comments?
> >
> > Tobias
> > (Makefile.inc patch + regenerated Makefile.in as separate patch)
> -----------------
> Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201,
> 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer:
> Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München;
> Registergericht München, HRB 106955
>
>

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2022-04-06 16:26 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-29  9:14 Build-dependency issues with ELIX_LEVEL Tobias Burnus
2022-03-30  9:43 ` [Patch] (1/n) newlib: Only call _fputwc_r if ELIX_LEVEL >= 4 (was: Build-dependency issues with ELIX_LEVEL) Tobias Burnus
2022-03-30 20:02   ` Jeff Johnston
2022-03-30 10:56 ` [Patch] (2/n) newlib: Move vasniprintf.c to ELIX 1 " Tobias Burnus
2022-04-06  5:11   ` *ping* " Tobias Burnus
2022-04-06 16:25     ` Jeff Johnston

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).