[PATCH v2 08/30] ldbl-128ibm-compat: Add wide character scanning functions
Paul E Murphy
murphyp@linux.ibm.com
Mon Nov 4 17:47:00 GMT 2019
On 10/25/19 10:33 AM, Gabriel F. T. Gomes wrote:
> From: "Gabriel F. T. Gomes" <gabrielftg@linux.ibm.com>
>
> No changes since v1.
>
> -- 8< --
> Similarly to what was done for regular character scanning functions,
> this patch uses the new mode mask, SCANF_LDBL_USES_FLOAT128, in the
> 'mode' argument of the wide characters scanning function,
> __vfwscanf_internal (which is also extended to support scanning
> floating-point values with IEEE binary128, by redirecting calls to
> __wcstold_internal to __wcstof128_internal).
>
> Tested for powerpc64le.
> ---
> sysdeps/ieee754/ldbl-128ibm-compat/Makefile | 33 ++++++++++++++-
> sysdeps/ieee754/ldbl-128ibm-compat/Versions | 8 ++++
> .../ldbl-128ibm-compat/ieee128-fwscanf.c | 35 ++++++++++++++++
> .../ldbl-128ibm-compat/ieee128-swscanf.c | 40 +++++++++++++++++++
> .../ldbl-128ibm-compat/ieee128-vfwscanf.c | 27 +++++++++++++
> .../ldbl-128ibm-compat/ieee128-vswscanf.c | 32 +++++++++++++++
> .../ldbl-128ibm-compat/ieee128-vwscanf.c | 27 +++++++++++++
> .../ldbl-128ibm-compat/ieee128-wscanf.c | 35 ++++++++++++++++
> .../ldbl-128ibm-compat/test-wscanf-ibm128.c | 1 +
> .../ldbl-128ibm-compat/test-wscanf-ieee128.c | 1 +
> .../test-wscanf-ldbl-compat.c | 10 +++++
> 11 files changed, 248 insertions(+), 1 deletion(-)
> create mode 100644 sysdeps/ieee754/ldbl-128ibm-compat/ieee128-fwscanf.c
> create mode 100644 sysdeps/ieee754/ldbl-128ibm-compat/ieee128-swscanf.c
> create mode 100644 sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vfwscanf.c
> create mode 100644 sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vswscanf.c
> create mode 100644 sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vwscanf.c
> create mode 100644 sysdeps/ieee754/ldbl-128ibm-compat/ieee128-wscanf.c
> create mode 100644 sysdeps/ieee754/ldbl-128ibm-compat/test-wscanf-ibm128.c
> create mode 100644 sysdeps/ieee754/ldbl-128ibm-compat/test-wscanf-ieee128.c
> create mode 100644 sysdeps/ieee754/ldbl-128ibm-compat/test-wscanf-ldbl-compat.c
With exception to some minor comments in my previous reviews, are there
any additional suggestions from the community? The *printf and *scanf
patches look ready to commit.
Reviewed-By Paul E. Murphy <murphyp@linux.vnet.ibm.com>
> diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/Makefile b/sysdeps/ieee754/ldbl-128ibm-compat/Makefile
> index a1f0f7d74e..031ee0b38f 100644
> --- a/sysdeps/ieee754/ldbl-128ibm-compat/Makefile
> +++ b/sysdeps/ieee754/ldbl-128ibm-compat/Makefile
> @@ -1,3 +1,11 @@
> +ifeq ($(subdir),libio)
> +ldbl-extra-routines += fwscanf \
> + swscanf \
> + wscanf \
> + vswscanf \
> + vwscanf
> +endif
> +
> ifeq ($(subdir),stdio-common)
> ldbl-extra-routines += printf_size \
> asprintf \
> @@ -23,7 +31,8 @@ ldbl-extra-routines += printf_size \
> sscanf \
> vfscanf \
> vscanf \
> - vsscanf
> + vsscanf \
> + vfwscanf
>
> # Printing long double values with IEEE binary128 format reuses part
> # of the internal float128 implementation (__printf_fp, __printf_fphex,
> @@ -34,6 +43,7 @@ ldbl-extra-routines += printf_size \
> CFLAGS-vfprintf-internal.c += -mfloat128 -mabi=ibmlongdouble
> CFLAGS-vfwprintf-internal.c += -mfloat128 -mabi=ibmlongdouble
> CFLAGS-vfscanf-internal.c += -mfloat128 -mabi=ibmlongdouble
> +CFLAGS-vfwscanf-internal.c += -mfloat128 -mabi=ibmlongdouble
>
> # Basic tests for the implementation of long double with IEEE binary128
> # format and for the related redirections in installed headers.
> @@ -51,9 +61,18 @@ CFLAGS-test-scanf-ibm128.c += -mabi=ibmlongdouble -Wno-psabi
>
> $(objpfx)test-scanf-ieee128: gnulib-tests += $(f128-loader-link)
>
> +tests-internal += test-wscanf-ieee128 test-wscanf-ibm128
> +CFLAGS-test-wscanf-ieee128.c += -mfloat128 -mabi=ieeelongdouble -Wno-psabi
> +CFLAGS-test-wscanf-ibm128.c += -mabi=ibmlongdouble -Wno-psabi
> +
> +$(objpfx)test-wscanf-ieee128: gnulib-tests += $(f128-loader-link)
> +
> ifeq ($(run-built-tests),yes)
> tests-special += $(objpfx)test-scanf-ieee128.out
> tests-special += $(objpfx)test-scanf-ibm128.out
> +
> +tests-special += $(objpfx)test-wscanf-ieee128.out
> +tests-special += $(objpfx)test-wscanf-ibm128.out
> endif
>
> $(objpfx)test-scanf-ieee128.out: \
> @@ -68,6 +87,18 @@ $(objpfx)test-scanf-ibm128.out: \
> $(SHELL) $^ '$(test-program-prefix)' $@; \
> $(evaluate-test)
>
> +$(objpfx)test-wscanf-ieee128.out: \
> + ../sysdeps/ieee754/ldbl-128ibm-compat/test-scanf-ldbl-compat.sh \
> + $(objpfx)test-wscanf-ieee128
> + $(SHELL) $^ '$(test-program-prefix)' $@; \
> + $(evaluate-test)
> +
> +$(objpfx)test-wscanf-ibm128.out: \
> + ../sysdeps/ieee754/ldbl-128ibm-compat/test-scanf-ldbl-compat.sh \
> + $(objpfx)test-wscanf-ibm128
> + $(SHELL) $^ '$(test-program-prefix)' $@; \
> + $(evaluate-test)
> +
> tests-internal += test-printf-size-ieee128 test-printf-size-ibm128
> CFLAGS-test-printf-size-ieee128.c += -mfloat128 -mabi=ieeelongdouble -Wno-psabi
> CFLAGS-test-printf-size-ibm128.c += -mabi=ibmlongdouble -Wno-psabi
OK
> diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/Versions b/sysdeps/ieee754/ldbl-128ibm-compat/Versions
OK
> diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-fwscanf.c b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-fwscanf.c
> diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-swscanf.c b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-swscanf.c
> diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vfwscanf.c b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vfwscanf. > diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vswscanf.c
b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vswscanf.c
> diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vwscanf.c b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vwscanf.c
> diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-wscanf.c b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-wscanf.c
OK
> diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/test-wscanf-ibm128.c b/sysdeps/ieee754/ldbl-128ibm-compat/test-wscanf-ibm128.c
> new file mode 100644
> index 0000000000..ef21fc4741
> --- /dev/null
> +++ b/sysdeps/ieee754/ldbl-128ibm-compat/test-wscanf-ibm128.c
> @@ -0,0 +1 @@
> +#include <test-wscanf-ldbl-compat.c>
> diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/test-wscanf-ieee128.c b/sysdeps/ieee754/ldbl-128ibm-compat/test-wscanf-ieee128.c
> new file mode 100644
> index 0000000000..ef21fc4741
> --- /dev/null
> +++ b/sysdeps/ieee754/ldbl-128ibm-compat/test-wscanf-ieee128.c
> @@ -0,0 +1 @@
> +#include <test-wscanf-ldbl-compat.c>
> diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/test-wscanf-ldbl-compat.c b/sysdeps/ieee754/ldbl-128ibm-compat/test-wscanf-ldbl-compat.c
> new file mode 100644
> index 0000000000..e93cf3b9bd
> --- /dev/null
> +++ b/sysdeps/ieee754/ldbl-128ibm-compat/test-wscanf-ldbl-compat.c
> @@ -0,0 +1,10 @@
> +#define CHAR wchar_t
> +#define L(x) L##x
> +#define FSCANF fwscanf
> +#define SSCANF swscanf
> +#define SCANF wscanf
> +#define VFSCANF vfwscanf
> +#define VSSCANF vswscanf
> +#define VSCANF vwscanf
> +#define STRCPY wcscpy
> +#include <test-scanf-ldbl-compat-template.c>
>
OK
More information about the Libc-alpha
mailing list