[1/2] stdio-common: run AWK in the C locale in the printf format tests

Message ID 20260804015944.3816768-1-mattst88@gmail.com (mailing list archive)
State Superseded
Headers
Series [1/2] stdio-common: run AWK in the C locale in the printf format tests |

Checks

Context Check Description
redhat-pt-bot/TryBot-apply_patch success Patch applied to master at the time it was sent
linaro-tcwg-bot/tcwg_glibc_build--master-arm success Build passed
linaro-tcwg-bot/tcwg_glibc_build--master-aarch64 success Build passed
linaro-tcwg-bot/tcwg_glibc_check--master-arm fail Test failed
linaro-tcwg-bot/tcwg_glibc_check--master-aarch64 fail Test failed

Commit Message

Matt Turner Aug. 4, 2026, 1:59 a.m. UTC
  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.
---
 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(-)
  

Comments

Adhemerval Zanella Netto Aug. 4, 2026, 1:18 p.m. UTC | #1
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  <adhemerval.zanella@linaro.org>

> ---
>  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
>
  
Adhemerval Zanella Netto Aug. 4, 2026, 1:37 p.m. UTC | #2
On 04/08/26 10:18, Adhemerval Zanella Netto wrote:
> 
> 
> 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  <adhemerval.zanella@linaro.org>

Scratch that, testing shows that LC_ALL=C expansion is not working correctly:

$ cat stdio-common/tst-printf-format-as-c.out
Verifying c
Conversion c output error, first line:
tst-printf-format-c.sh: line 32: LC_ALL=C: command not found

The scripts invoke '$AWK -f tst-printf-format.awk', shell recognizes VAR=value 
assignment prefixes at parse time, before variable expansion. You need to use
'env' here:

  AWK="env LC_ALL=C ${AWK:-awk}"

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

Patch

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