Re: [PATCH 1/2] stdio-common: run AWK in the C locale in the printf format tests
Adhemerval Zanella Netto <[email protected]> Tue, 4 Aug 2026 10:18:26 -0300
| Newsgroups | gmane.comp.lib.glibc.alpha |
|---|---|
| Organization | Linaro |
| Message-ID | <[email protected]> |
On 03/08/26 22:59, Matt Turner wrote: > The program under test runs in the C locale, through the test program > prefix, but AWK inherits whatever locale the build was started in. They > agree today only because the locale in use shares its decimal point with > the C locale. > > It is also faster. gawk takes a single byte path in its regular > expression engine when MB_CUR_MAX is 1, and the script matches several > expressions against every line. For the %f conversion for double, the > largest of these tests, as the median of five runs: > > x86_64, gawk 5.4.1 1.482s -> 1.248s > x86_64, gawk 5.3.2 0.911s -> 0.703s > alpha, gawk 5.4.60 30.9s -> 26.6s > > Worth noting that gawk 5.4 is a good deal slower here than 5.3 was, at > 1.248s against 0.703s for the same input in the C locale, so these tests > have become more expensive than they used to be. LGTM, thanks. Reviewed-by: Adhemerval Zanella <[email protected]> > --- > stdio-common/tst-printf-format-c.sh | 2 +- > stdio-common/tst-printf-format-char.sh | 2 +- > stdio-common/tst-printf-format-double.sh | 2 +- > stdio-common/tst-printf-format-int.sh | 2 +- > stdio-common/tst-printf-format-ldouble.sh | 2 +- > stdio-common/tst-printf-format-llong.sh | 2 +- > stdio-common/tst-printf-format-long.sh | 2 +- > stdio-common/tst-printf-format-s.sh | 2 +- > stdio-common/tst-printf-format-short.sh | 2 +- > stdio-common/tst-printf-format-uchar.sh | 2 +- > stdio-common/tst-printf-format-uint.sh | 2 +- > stdio-common/tst-printf-format-ullong.sh | 2 +- > stdio-common/tst-printf-format-ulong.sh | 2 +- > stdio-common/tst-printf-format-ushort.sh | 2 +- > 14 files changed, 14 insertions(+), 14 deletions(-) > > diff --git ./stdio-common/tst-printf-format-c.sh ./stdio-common/tst-printf-format-c.sh > index 825c50ec42..636884d3a7 100644 > --- ./stdio-common/tst-printf-format-c.sh > +++ ./stdio-common/tst-printf-format-c.sh > @@ -23,7 +23,7 @@ xprintf=$1; shift > common_objpfx=$1; shift > test_program_prefix=$1; shift > > -AWK=${AWK:-awk} > +AWK="LC_ALL=C ${AWK:-awk}" > > echo Verifying c > (set -o pipefail > diff --git ./stdio-common/tst-printf-format-char.sh ./stdio-common/tst-printf-format-char.sh > index 7867bdd62f..a3eb0665f2 100644 > --- ./stdio-common/tst-printf-format-char.sh > +++ ./stdio-common/tst-printf-format-char.sh > @@ -23,7 +23,7 @@ xprintf=$1; shift > common_objpfx=$1; shift > test_program_prefix=$1; shift > > -AWK=${AWK:-awk} > +AWK="LC_ALL=C ${AWK:-awk}" > > status=0 > > diff --git ./stdio-common/tst-printf-format-double.sh ./stdio-common/tst-printf-format-double.sh > index 8157092dc4..ddbffd19aa 100644 > --- ./stdio-common/tst-printf-format-double.sh > +++ ./stdio-common/tst-printf-format-double.sh > @@ -29,7 +29,7 @@ test_program_prefix=$1; shift > # internally to process the conversion requested, so any bug in our code > # would then be verified against itself, defeating the objective of doing > # the verification against an independent implementation. > -AWK="${AWK:-awk} -M" > +AWK="LC_ALL=C ${AWK:-awk} -M" > > status=77 > > diff --git ./stdio-common/tst-printf-format-int.sh ./stdio-common/tst-printf-format-int.sh > index 8542ff4150..2cca1dc884 100644 > --- ./stdio-common/tst-printf-format-int.sh > +++ ./stdio-common/tst-printf-format-int.sh > @@ -23,7 +23,7 @@ xprintf=$1; shift > common_objpfx=$1; shift > test_program_prefix=$1; shift > > -AWK=${AWK:-awk} > +AWK="LC_ALL=C ${AWK:-awk}" > > status=77 > > diff --git ./stdio-common/tst-printf-format-ldouble.sh ./stdio-common/tst-printf-format-ldouble.sh > index dbf78a98c6..9acb1237de 100644 > --- ./stdio-common/tst-printf-format-ldouble.sh > +++ ./stdio-common/tst-printf-format-ldouble.sh > @@ -29,7 +29,7 @@ test_program_prefix=$1; shift > # internally to process the conversion requested, so any bug in our code > # would then be verified against itself, defeating the objective of doing > # the verification against an independent implementation. > -AWK="${AWK:-awk} -M" > +AWK="LC_ALL=C ${AWK:-awk} -M" > > status=77 > > diff --git ./stdio-common/tst-printf-format-llong.sh ./stdio-common/tst-printf-format-llong.sh > index e1f5252c9a..5e10e87fa6 100644 > --- ./stdio-common/tst-printf-format-llong.sh > +++ ./stdio-common/tst-printf-format-llong.sh > @@ -23,7 +23,7 @@ xprintf=$1; shift > common_objpfx=$1; shift > test_program_prefix=$1; shift > > -AWK=${AWK:-awk} > +AWK="LC_ALL=C ${AWK:-awk}" > > status=77 > > diff --git ./stdio-common/tst-printf-format-long.sh ./stdio-common/tst-printf-format-long.sh > index 4b68ab1e04..0e17fcd596 100644 > --- ./stdio-common/tst-printf-format-long.sh > +++ ./stdio-common/tst-printf-format-long.sh > @@ -23,7 +23,7 @@ xprintf=$1; shift > common_objpfx=$1; shift > test_program_prefix=$1; shift > > -AWK=${AWK:-awk} > +AWK="LC_ALL=C ${AWK:-awk}" > > status=77 > > diff --git ./stdio-common/tst-printf-format-s.sh ./stdio-common/tst-printf-format-s.sh > index 65aa0cb675..d0a2ffd166 100644 > --- ./stdio-common/tst-printf-format-s.sh > +++ ./stdio-common/tst-printf-format-s.sh > @@ -23,7 +23,7 @@ xprintf=$1; shift > common_objpfx=$1; shift > test_program_prefix=$1; shift > > -AWK=${AWK:-awk} > +AWK="LC_ALL=C ${AWK:-awk}" > > echo Verifying s > (set -o pipefail > diff --git ./stdio-common/tst-printf-format-short.sh ./stdio-common/tst-printf-format-short.sh > index 30357baa02..bd759b5bb7 100644 > --- ./stdio-common/tst-printf-format-short.sh > +++ ./stdio-common/tst-printf-format-short.sh > @@ -23,7 +23,7 @@ xprintf=$1; shift > common_objpfx=$1; shift > test_program_prefix=$1; shift > > -AWK=${AWK:-awk} > +AWK="LC_ALL=C ${AWK:-awk}" > > status=0 > > diff --git ./stdio-common/tst-printf-format-uchar.sh ./stdio-common/tst-printf-format-uchar.sh > index 08a6914b88..6f41009ad3 100644 > --- ./stdio-common/tst-printf-format-uchar.sh > +++ ./stdio-common/tst-printf-format-uchar.sh > @@ -23,7 +23,7 @@ xprintf=$1; shift > common_objpfx=$1; shift > test_program_prefix=$1; shift > > -AWK=${AWK:-awk} > +AWK="LC_ALL=C ${AWK:-awk}" > > status=0 > > diff --git ./stdio-common/tst-printf-format-uint.sh ./stdio-common/tst-printf-format-uint.sh > index 0ba203ccda..be2da0064b 100644 > --- ./stdio-common/tst-printf-format-uint.sh > +++ ./stdio-common/tst-printf-format-uint.sh > @@ -23,7 +23,7 @@ xprintf=$1; shift > common_objpfx=$1; shift > test_program_prefix=$1; shift > > -AWK=${AWK:-awk} > +AWK="LC_ALL=C ${AWK:-awk}" > > status=77 > > diff --git ./stdio-common/tst-printf-format-ullong.sh ./stdio-common/tst-printf-format-ullong.sh > index 5b881ab924..45dfafb682 100644 > --- ./stdio-common/tst-printf-format-ullong.sh > +++ ./stdio-common/tst-printf-format-ullong.sh > @@ -23,7 +23,7 @@ xprintf=$1; shift > common_objpfx=$1; shift > test_program_prefix=$1; shift > > -AWK=${AWK:-awk} > +AWK="LC_ALL=C ${AWK:-awk}" > > status=77 > > diff --git ./stdio-common/tst-printf-format-ulong.sh ./stdio-common/tst-printf-format-ulong.sh > index f6aeb8e3c0..24e36cbccf 100644 > --- ./stdio-common/tst-printf-format-ulong.sh > +++ ./stdio-common/tst-printf-format-ulong.sh > @@ -23,7 +23,7 @@ xprintf=$1; shift > common_objpfx=$1; shift > test_program_prefix=$1; shift > > -AWK=${AWK:-awk} > +AWK="LC_ALL=C ${AWK:-awk}" > > status=77 > > diff --git ./stdio-common/tst-printf-format-ushort.sh ./stdio-common/tst-printf-format-ushort.sh > index 07609128ab..0e1008c75e 100644 > --- ./stdio-common/tst-printf-format-ushort.sh > +++ ./stdio-common/tst-printf-format-ushort.sh > @@ -23,7 +23,7 @@ xprintf=$1; shift > common_objpfx=$1; shift > test_program_prefix=$1; shift > > -AWK=${AWK:-awk} > +AWK="LC_ALL=C ${AWK:-awk}" > > status=0 >