[v2,00/17] stdio-common: Formatted scanf input specifier tests

Message ID alpine.DEB.2.21.2502261227210.65342@angie.orcam.me.uk (mailing list archive)
Headers
Series stdio-common: Formatted scanf input specifier tests |

Message

Maciej W. Rozycki March 1, 2025, 10:44 p.m. UTC
  Hi,

 This is v2 of a collection of tests for formatted scanf input specifiers, 
complementing the earlier series for formatted printf output specifiers.  

 Updates since the original version include a change to real data matching 
for the Intel/Motorola 80-bit formats, a memory barrier added to make sure 
preinitialisation won't ever be optimised away for data under test, fixes 
applied to `__vfscanf_internal' for three cases of BZ #12701, and a couple 
of mechanical corrections made to previously inactive input data.  Three 
additional patches resulted from that.

 Unlike with the earlier series we have a smaller number of possibilities 
with conversion specifications and therefore these tests use pregenerated 
input data in a textual form.  This data requires a couple of megabytes of 
storage and therefore the patchset has been organised as follows:

- 01/17 brings the common test code as well as test cases for 'scanf',
  and then base Makefile infrastructure plus target-agnostic input data, 
  for the character conversions and the `char', `short', and `long long' 
  integer ones, signed and unsigned,

- 02/17 brings Makefile infrastructure and `int' and `long' integer input 
  data, signed and unsigned, for ILP32 targets,

- 03/17 brings Makefile infrastructure and `int' and `long' integer input 
  data, signed and unsigned, for LP64 targets,

- 04/17 brings Makefile infrastructure and `float' real input data for 
  targets using the IEEE 754 binary32 format,

- 05/17 brings Makefile infrastructure and `double' real input data for 
  targets using the IEEE 754 binary64 format,

- 06/17 brings Makefile infrastructure and `long double' real input data
  for targets using the IEEE 754 binary128 format,

- 07/17 brings Makefile infrastructure and `long double' real input data 
  for targets using the Intel 80-bit format,

- 08/17 brings Makefile infrastructure and 64-bit `long double' real input 
  data for targets switching between the IEEE 754 binary64 and IEEE 754 
  binary128 formats with `-mlong-double-64' and `-mlong-double-128',

- 09/17 brings Makefile infrastructure and IBM 128-bit `long double' real 
  input for targets switching between the IEEE 754 binary128 and IBM 
  128-bit formats with `-mabi=ieeelongdouble' and `-mabi=ibmlongdouble',

- 10/17 brings Makefile infrastructure and test cases for 'fscanf',

- 11/17 brings Makefile infrastructure and test cases for 'sscanf',

- 12/17 brings Makefile infrastructure and test cases for 'vscanf',

- 13/17 brings Makefile infrastructure and test cases for 'vfscanf',

- 14/17 brings Makefile infrastructure and test cases for 'vsscanf',

- 15/17 brings a BZ #12701 fix for invalid integer data incorrectly 
  resulting in a matching success along with enabling previously inactive 
  respective input data,

- 16/17 brings a BZ #12701 fix for invalid real significand data
  incorrectly resulting in a matching success along with enabling 
  previously inactive respective input data,

- 17/17 brings a BZ #12701 fix for invalid real exponent data incorrectly 
  resulting in a matching success along with enabling previously inactive 
  respective input data and a fix for an invalid old test case.

See individual change descriptions for further information.

 This has been verified with various targets to cover the common set of 
data types as well as target specific ones listed as below:

- `powerpc64le-linux-gnu' (IBM POWER9) native configuration for LP64 `int' 
  and `long', signed and unsigned, as well as switched IEEE 754 binary64, 
  binary128, and IBM 128-bit `long double',

- the same host and `i386-linux-gnu' (Intel Pentium MMX) remote target for 
  ILP32 `int' and `long', signed and unsigned, as well as Intel 80-bit 
  `long double',

which cover the parts of the patchset changed in v2.  The previous version 
of the patchset was also verified with:

- the same host and `riscv64-linux-gnu' (SiFive FU740) remote target for 
  LP64 `int' and `long', signed and unsigned, as well as plain IEEE 754 
  binary128 `long double',

- the same host and `mips-linux-gnu' (o32 ABI) (MIPS 74Kf) remote target
  for ILP32 `int' and `long', signed and unsigned,

- the same host and `alpha-linux-gnu' (DECchip 21064A EV45) remote target 
  for LP64 `int' and `long', signed and unsigned, as well as switched IEEE 
  754 binary64 and binary128 `long double',

however this verification was deemed superfluous and thus not repeated as 
exceedingly lengthy.

 Questions, comments, concerns?  Otherwise OK to apply?

  Maciej