*ping* [Patch] (2/n) newlib: Move vasniprintf.c to ELIX 1 (was: Build-dependency issues with ELIX_LEVEL)

Jeff Johnston jjohnstn@redhat.com
Wed Apr 6 16:25:59 GMT 2022


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
>
>


More information about the Newlib mailing list