Message ID | 20191025153410.15405-9-gabriel@inconstante.net.br |
---|---|
State | New |
Headers | show |
Series | Add IEEE long double <-> string functions for powerpc64le | expand |
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
On Mon, 04 Nov 2019, Paul E Murphy wrote: > >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. Thanks, I'm running patches 1 to 8 with build-many-glibcs.py once again before I commit them, which I plan to do after the test is over. I think they got a lot of feedback, specially if you count the initial patches sent before Zack's refactoring of vfprinf_internal and vfscanf_internal, and have converged to this version based on community suggestions and guidance. :)
On Mon, 11 Nov 2019, Gabriel F. T. Gomes wrote: >On Mon, 04 Nov 2019, Paul E Murphy wrote: >> >>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. > >I'm running patches 1 to 8 with build-many-glibcs.py once again before I >commit them, which I plan to do after the test is over. I think they got >a lot of feedback, specially if you count the initial patches sent before >Zack's refactoring of vfprinf_internal and vfscanf_internal, and have >converged to this version based on community suggestions and guidance. :) I have finally committed patches 1 to 8 (after testing with b-m-g and applying your suggestions: delay the definition of LDBL_IBM128_VERSION to the last patch; guard the test in elf/tst-addr1.c (actually removed the change); update copyright years). Thanks.
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 diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/Versions b/sysdeps/ieee754/ldbl-128ibm-compat/Versions index 7971c7a7d1..8b23fdf56f 100644 --- a/sysdeps/ieee754/ldbl-128ibm-compat/Versions +++ b/sysdeps/ieee754/ldbl-128ibm-compat/Versions @@ -172,5 +172,13 @@ libc { __vfscanfieee128; __vscanfieee128; __vsscanfieee128; + + __fwscanfieee128; + __swscanfieee128; + __wscanfieee128; + + __vfwscanfieee128; + __vswscanfieee128; + __vwscanfieee128; } } diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-fwscanf.c b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-fwscanf.c new file mode 100644 index 0000000000..b4b10cf9f8 --- /dev/null +++ b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-fwscanf.c @@ -0,0 +1,35 @@ +/* Wrapper for fwscanf. IEEE128 version. + Copyright (C) 2018 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <stdarg.h> +#include <libioP.h> + +extern int +___ieee128_fwscanf (FILE *fp, const wchar_t *format, ...) +{ + va_list ap; + int done; + + va_start (ap, format); + done = __vfwscanf_internal (fp, format, ap, + SCANF_LDBL_USES_FLOAT128); + va_end (ap); + + return done; +} +strong_alias (___ieee128_fwscanf, __fwscanfieee128) diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-swscanf.c b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-swscanf.c new file mode 100644 index 0000000000..c7dfc24a9b --- /dev/null +++ b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-swscanf.c @@ -0,0 +1,40 @@ +/* Wrapper for swscanf. IEEE128 version. + Copyright (C) 2018 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <stdarg.h> +#include <strfile.h> +#include <libioP.h> + +extern int +___ieee128_swscanf (const wchar_t *string, const wchar_t *format, ...) +{ + va_list ap; + int done; + + _IO_strfile sf; + struct _IO_wide_data wd; + FILE *fp = _IO_strfile_readw (&sf, &wd, string); + + va_start (ap, format); + done = __vfwscanf_internal (fp, format, ap, + SCANF_LDBL_USES_FLOAT128); + va_end (ap); + + return done; +} +strong_alias (___ieee128_swscanf, __swscanfieee128) diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vfwscanf.c b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vfwscanf.c new file mode 100644 index 0000000000..de4918f536 --- /dev/null +++ b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vfwscanf.c @@ -0,0 +1,27 @@ +/* Wrapper for vfwscanf. IEEE128 version. + Copyright (C) 2018 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <libioP.h> + +extern int +___ieee128_vfwscanf (FILE *fp, const wchar_t *format, va_list ap) +{ + return __vfwscanf_internal (fp, format, ap, + SCANF_LDBL_USES_FLOAT128); +} +strong_alias (___ieee128_vfwscanf, __vfwscanfieee128) diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vswscanf.c b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vswscanf.c new file mode 100644 index 0000000000..a241d6bd5e --- /dev/null +++ b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vswscanf.c @@ -0,0 +1,32 @@ +/* Wrapper for vswscanf. IEEE128 version. + Copyright (C) 2018 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <libioP.h> +#include <wchar.h> +#include <strfile.h> + +extern int +___ieee128_vswscanf (const wchar_t *string, const wchar_t *format, + va_list ap) +{ + _IO_strfile sf; + struct _IO_wide_data wd; + FILE *fp = _IO_strfile_readw (&sf, &wd, string); + return __vfwscanf_internal (fp, format, ap, SCANF_LDBL_USES_FLOAT128); +} +strong_alias (___ieee128_vswscanf, __vswscanfieee128) diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vwscanf.c b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vwscanf.c new file mode 100644 index 0000000000..0944794ac5 --- /dev/null +++ b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-vwscanf.c @@ -0,0 +1,27 @@ +/* Wrapper for vwscanf. IEEE128 version. + Copyright (C) 2018 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <libioP.h> + +extern int +___ieee128_vwscanf (const wchar_t *format, va_list ap) +{ + return __vfwscanf_internal (stdin, format, ap, + SCANF_LDBL_USES_FLOAT128); +} +strong_alias (___ieee128_vwscanf, __vwscanfieee128) diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-wscanf.c b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-wscanf.c new file mode 100644 index 0000000000..417f326cb4 --- /dev/null +++ b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-wscanf.c @@ -0,0 +1,35 @@ +/* Wrapper for wscanf. IEEE128 version. + Copyright (C) 2018 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <stdarg.h> +#include <libioP.h> + +extern int +___ieee128_wscanf (const wchar_t *format, ...) +{ + va_list ap; + int done; + + va_start (ap, format); + done = __vfwscanf_internal (stdin, format, ap, + SCANF_LDBL_USES_FLOAT128); + va_end (ap); + + return done; +} +strong_alias (___ieee128_wscanf, __wscanfieee128) 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>
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