Home | History | Annotate | Download | only in libsa
History log of /src/sys/lib/libsa/subr_prf.c
RevisionDateAuthorComments
 1.31  31-Aug-2024  mlelstv Only a leading '0' in a format width marks zero-padding, otherwise
it's a regular digit.
 1.30  29-May-2023  rin libsa/printf: Do not fetch long va_arg as long long.

This does real harm iff all of the following conditions are satisfied:

(1) On ILP32 architectures.
(2) Both LIBSA_PRINTF_LONGLONG_SUPPORT and LIBSA_PRINTF_WIDTH_SUPPORT
compile-time options are enabled.
(3) Width field is used with 'l' modifier.

This is an implicit-fallthrough bug, but unfortunately, GCC 10.4 cannot
find this out somehow...

XXX
Pull up to netbsd-10 and netbsd-9. netbsd-8 is not affected.
 1.29  06-Jun-2020  thorpej branches: 1.29.20;
Make libsa's vsnprintf() work as expected when passed a NULL
destinatino buffer.
 1.28  03-Feb-2019  mrg branches: 1.28.4;
- remove unreachable code
 1.27  30-Aug-2014  tsutsui branches: 1.27.20;
Revert stupid and untested changes. There was no extra copy in the macros.

Christos, you should reread our commit guideline as a Core member.
 1.26  30-Aug-2014  christos remove extra copy of the macro.
 1.25  30-Aug-2014  tsutsui Rename padding macros to reflect and clarify the original intention.

No binary changes on luna68k (which has -DLIBSA_PRINTF_WIDTH_SUPPORT).
 1.24  22-Mar-2014  hkenken for LIBSA_PRINTF_WIDTH_SUPPORT,
Fix right and left-adjusting padding.
 1.23  24-Dec-2013  jakllsch intmax_t might be long long, handle accordingly. from christos
 1.22  24-Dec-2013  jakllsch Add 'j' format modifier for intmax_t.
 1.21  17-Jul-2011  joerg branches: 1.21.2; 1.21.12; 1.21.16;
Retire varargs.h support. Move machine/stdarg.h logic into MI
sys/stdarg.h and expect compiler to provide proper builtins, defaulting
to the GCC interface. lint still has a special fallback.
Reduce abuse of _BSD_VA_LIST_ by defining __va_list by default and
derive va_list as required by standards.
 1.20  20-May-2011  tsutsui KNF a bit.
 1.19  25-Feb-2011  joerg No trailing 0 byte for hexdigits.
 1.18  25-Feb-2011  joerg Move HEXDIGIT to mvme68k's sboot. It seems to be the only user.
Save a byte by explicitly specifying the size.
 1.17  19-Jan-2010  tsutsui branches: 1.17.4; 1.17.6; 1.17.8;
Add long long (%lld etc.) support and width (%02x etc.) support
in libsa printf(3). Disabled by default but enabled by
-DLIBSA_PRINTF_LONGLONG_SUPPORT and -DLIBSA_PRINTF_WIDTH_SUPPORT.
Provided by tnozaki@ for my libsa debugging. Thanks!
 1.16  24-Nov-2007  isaki branches: 1.16.18;
style, indent, and ANSI-fy.
 1.15  27-Jan-2006  uwe branches: 1.15.42; 1.15.44; 1.15.50;
/* fall through */ -> /* FALLTHROUGH */
 1.14  27-Jan-2006  uwe Support 'z' (size_t) and 't' (ptrdiff_t) specifiers.

XXX: ptrdiff_t is only ever defined in <stddef.h> and is defined
unconditionally, without the ifndef dance. Until we have an expert
opinion, abuse intptr_t for the 't' size check.
 1.13  11-Dec-2005  christos branches: 1.13.2;
merge ktrace-lwp.
 1.12  23-May-2005  jmc branches: 1.12.2;
Provide HEXDIGITS as well (needed on mvme68k/stand)
 1.11  17-May-2005  christos Yes, it was a cool trick >20 years ago to use "0123456789abcdef"[a] to
implement, xtoa(), but I think defining the samestring 50 times is a bit
too much. Defined HEXDIGITS and hexdigits in subr_prf.c and use it...
 1.10  07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.9  27-Apr-2003  tron branches: 1.9.2;
Remove two unused variable to fix a build problem.
 1.8  26-Apr-2003  bjh21 Remove %b support.
Encouraged by thorpej.
 1.7  20-Apr-2003  bjh21 If the format string ends with "%" or "%l", print those characters, just
as we would if they were part of an invalid conversion specification.
Code-size neutral on ARM; not tested elsewhere.
 1.6  20-Apr-2003  bjh21 ANSIfy, assume __STDC__, un-__P, KNF.
Generated code unchanged.
 1.5  17-Feb-2002  thorpej Add a missing "static".
 1.4  24-Sep-2001  wiz va_{start,end} audit:
Make sure that each va_start has one and only one matching va_end,
especially in error cases.
If the va_list is used multiple times, do multiple va_starts/va_ends.
If a function gets va_list as argument, don't let it use va_end (since
it's the callers responsibility).

Improved by comments from enami and christos -- thanks!

Heimdal/krb4/KAME changes already fed back, rest to follow.

Inspired by, but not not based on, OpenBSD.
 1.3  30-Mar-2000  augustss branches: 1.3.6; 1.3.8; 1.3.10;
Kill some more register declarations.
 1.2  20-Apr-1999  cgd branches: 1.2.2;
set lflag when printing pointers with %p
 1.1  13-Feb-1999  pk branches: 1.1.4;
Split the printf variants into separate files.
 1.1.4.1  21-Jun-1999  thorpej Sync w/ -current.
 1.2.2.1  20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
 1.3.10.1  01-Oct-2001  fvdl Catch up with -current.
 1.3.8.2  16-Mar-2002  jdolecek Catch up with -current.
 1.3.8.1  10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.3.6.2  28-Feb-2002  nathanw Catch up to -current.
 1.3.6.1  26-Sep-2001  nathanw Catch up to -current.
Again.
 1.9.2.4  10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.9.2.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.9.2.2  18-Sep-2004  skrll Sync with HEAD.
 1.9.2.1  03-Aug-2004  skrll Sync with HEAD
 1.12.2.2  07-Dec-2007  yamt sync with head
 1.12.2.1  21-Jun-2006  yamt sync with head.
 1.13.2.1  01-Feb-2006  yamt sync with head.
 1.15.50.1  08-Dec-2007  mjf Sync with HEAD.
 1.15.44.1  09-Jan-2008  matt sync with HEAD
 1.15.42.1  27-Nov-2007  joerg Sync with HEAD. amd64 Xen support needs testing.
 1.16.18.1  11-Mar-2010  yamt sync with head
 1.17.8.1  05-Mar-2011  bouyer Sync with HEAD
 1.17.6.1  06-Jun-2011  jruoho Sync with HEAD.
 1.17.4.2  31-May-2011  rmind sync with head
 1.17.4.1  05-Mar-2011  rmind sync with head
 1.21.16.1  18-May-2014  rmind sync with head
 1.21.12.2  03-Dec-2017  jdolecek update from HEAD
 1.21.12.1  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.21.2.1  22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.27.20.1  10-Jun-2019  christos Sync with HEAD
 1.28.4.1  03-Jun-2023  martin Pull up following revision(s) (requested by rin in ticket #1636):

sys/lib/libsa/subr_prf.c: revision 1.30

libsa/printf: Do not fetch long va_arg as long long.

This does real harm iff all of the following conditions are satisfied:
(1) On ILP32 architectures.
(2) Both LIBSA_PRINTF_LONGLONG_SUPPORT and LIBSA_PRINTF_WIDTH_SUPPORT
compile-time options are enabled.
(3) Width field is used with 'l' modifier.

This is an implicit-fallthrough bug, but unfortunately, GCC 10.4 cannot
find this out somehow...
 1.29.20.1  03-Jun-2023  martin Pull up following revision(s) (requested by rin in ticket #185):

sys/lib/libsa/subr_prf.c: revision 1.30

libsa/printf: Do not fetch long va_arg as long long.

This does real harm iff all of the following conditions are satisfied:
(1) On ILP32 architectures.
(2) Both LIBSA_PRINTF_LONGLONG_SUPPORT and LIBSA_PRINTF_WIDTH_SUPPORT
compile-time options are enabled.
(3) Width field is used with 'l' modifier.

This is an implicit-fallthrough bug, but unfortunately, GCC 10.4 cannot
find this out somehow...

RSS XML Feed