[glibc/release/2.44/master] stdio-common: run AWK in the C locale in the printf format tests
Sam James via Glibc-cvs <[email protected]>
| Newsgroups | gmane.comp.lib.glibc.cvs |
|---|---|
| Message-ID | <[email protected]> |
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=89da37bb6e4a631f375b5fe48783e5c023441b0c commit 89da37bb6e4a631f375b5fe48783e5c023441b0c Author: Matt Turner <[email protected]> Date: Tue Aug 4 10:17:20 2026 -0400 stdio-common: run AWK in the C locale in the printf format tests 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. Reviewed-by: Adhemerval Zanella <[email protected]> (cherry picked from commit 866a70167b85903a02d4ccacb91afb8922702c14) Diff: --- 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 a/stdio-common/tst-printf-format-c.sh b/stdio-common/tst-printf-format-c.sh index 825c50ec42..73d28c5607 100644 --- a/stdio-common/tst-printf-format-c.sh +++ b/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="env LC_ALL=C ${AWK:-awk}" echo Verifying c (set -o pipefail diff --git a/stdio-common/tst-printf-format-char.sh b/stdio-common/tst-printf-format-char.sh index 7867bdd62f..aa4d211126 100644 --- a/stdio-common/tst-printf-format-char.sh +++ b/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="env LC_ALL=C ${AWK:-awk}" status=0 diff --git a/stdio-common/tst-printf-format-double.sh b/stdio-common/tst-printf-format-double.sh index 8157092dc4..051e4716c5 100644 --- a/stdio-common/tst-printf-format-double.sh +++ b/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="env LC_ALL=C ${AWK:-awk} -M" status=77 diff --git a/stdio-common/tst-printf-format-int.sh b/stdio-common/tst-printf-format-int.sh index 8542ff4150..e9dcbedc04 100644 --- a/stdio-common/tst-printf-format-int.sh +++ b/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="env LC_ALL=C ${AWK:-awk}" status=77 diff --git a/stdio-common/tst-printf-format-ldouble.sh b/stdio-common/tst-printf-format-ldouble.sh index dbf78a98c6..7ee097ac0a 100644 --- a/stdio-common/tst-printf-format-ldouble.sh +++ b/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="env LC_ALL=C ${AWK:-awk} -M" status=77 diff --git a/stdio-common/tst-printf-format-llong.sh b/stdio-common/tst-printf-format-llong.sh index e1f5252c9a..98a79660cc 100644 --- a/stdio-common/tst-printf-format-llong.sh +++ b/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="env LC_ALL=C ${AWK:-awk}" status=77 diff --git a/stdio-common/tst-printf-format-long.sh b/stdio-common/tst-printf-format-long.sh index 4b68ab1e04..89ac3302b8 100644 --- a/stdio-common/tst-printf-format-long.sh +++ b/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="env LC_ALL=C ${AWK:-awk}" status=77 diff --git a/stdio-common/tst-printf-format-s.sh b/stdio-common/tst-printf-format-s.sh index 65aa0cb675..015c730609 100644 --- a/stdio-common/tst-printf-format-s.sh +++ b/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="env LC_ALL=C ${AWK:-awk}" echo Verifying s (set -o pipefail diff --git a/stdio-common/tst-printf-format-short.sh b/stdio-common/tst-printf-format-short.sh index 30357baa02..a7df8b8e6d 100644 --- a/stdio-common/tst-printf-format-short.sh +++ b/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="env LC_ALL=C ${AWK:-awk}" status=0 diff --git a/stdio-common/tst-printf-format-uchar.sh b/stdio-common/tst-printf-format-uchar.sh index 08a6914b88..356de4217d 100644 --- a/stdio-common/tst-printf-format-uchar.sh +++ b/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="env LC_ALL=C ${AWK:-awk}" status=0 diff --git a/stdio-common/tst-printf-format-uint.sh b/stdio-common/tst-printf-format-uint.sh index 0ba203ccda..b496047a49 100644 --- a/stdio-common/tst-printf-format-uint.sh +++ b/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="env LC_ALL=C ${AWK:-awk}" status=77 diff --git a/stdio-common/tst-printf-format-ullong.sh b/stdio-common/tst-printf-format-ullong.sh index 5b881ab924..f030f66a24 100644 --- a/stdio-common/tst-printf-format-ullong.sh +++ b/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="env LC_ALL=C ${AWK:-awk}" status=77 diff --git a/stdio-common/tst-printf-format-ulong.sh b/stdio-common/tst-printf-format-ulong.sh index f6aeb8e3c0..7102575ed2 100644 --- a/stdio-common/tst-printf-format-ulong.sh +++ b/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="env LC_ALL=C ${AWK:-awk}" status=77 diff --git a/stdio-common/tst-printf-format-ushort.sh b/stdio-common/tst-printf-format-ushort.sh index 07609128ab..5f612b5398 100644 --- a/stdio-common/tst-printf-format-ushort.sh +++ b/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="env LC_ALL=C ${AWK:-awk}" status=0