diff options
author | Gabriel F. T. Gomes <gabrielftg@linux.ibm.com> | 2019-07-11 11:46:57 -0300 |
---|---|---|
committer | Gabriel F. T. Gomes <gabrielftg@linux.ibm.com> | 2019-11-22 18:11:49 -0300 |
commit | 5aa64dbc298c3ba0dfbeae984bc0915e41464e00 (patch) | |
tree | 8f9625396e8473328dabd3b3c57d8923a8023d0d /sysdeps/ieee754/ldbl-128ibm-compat/Makefile | |
parent | 1771a5cf0eb58b44adcd3d3fba12c4781a5015af (diff) | |
download | glibc-5aa64dbc298c3ba0dfbeae984bc0915e41464e00.tar.gz glibc-5aa64dbc298c3ba0dfbeae984bc0915e41464e00.tar.xz glibc-5aa64dbc298c3ba0dfbeae984bc0915e41464e00.zip |
ldbl-128ibm-compat: Add regular character, fortified printing functions
Since the introduction of internal functions with explicit flags for the printf family of functions, the 'mode' parameter can be used to select which format long double parameters have (with the mode flags: PRINTF_LDBL_IS_DBL and PRINTF_LDBL_USES_FLOAT128), as well as to select whether to check for overflows (mode flag: PRINTF_FORTIFY). This patch combines PRINTF_LDBL_USES_FLOAT128 and PRINTF_FORTIFY to provide the IEEE binary128 version of printf-like function for platforms where long double can take this format, in addition to the double format and to some non-ieee format (currently, this means powerpc64le). There are two flavors of test cases provided with this patch: one that explicitly calls the fortified functions, for instance __asprintf_chk, and another that reuses the non-fortified test, but defining _FORTIFY_SOURCE as 2. The first guarantees that the implementations are actually being tested (in bits/stdio2.h, vprintf gets redirected to __vfprintf_chk, which would leave __vprintf_chk untested), whereas the second guarantees that the redirections calls the correct function in the IBM and IEEE long double cases. Tested for powerpc64le. Reviewed-By: Paul E. Murphy <murphyp@linux.ibm.com>
Diffstat (limited to 'sysdeps/ieee754/ldbl-128ibm-compat/Makefile')
-rw-r--r-- | sysdeps/ieee754/ldbl-128ibm-compat/Makefile | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/Makefile b/sysdeps/ieee754/ldbl-128ibm-compat/Makefile index 0f2f58d5b9..21056e38da 100644 --- a/sysdeps/ieee754/ldbl-128ibm-compat/Makefile +++ b/sysdeps/ieee754/ldbl-128ibm-compat/Makefile @@ -57,6 +57,31 @@ $(objpfx)test-printf-size-ibm128.out: \ $(evaluate-test) endif +ifeq ($(subdir),debug) +ldbl-extra-routines += asprintf_chk \ + dprintf_chk \ + fprintf_chk \ + printf_chk \ + snprintf_chk \ + sprintf_chk \ + vasprintf_chk \ + vdprintf_chk \ + vfprintf_chk \ + vprintf_chk \ + vsnprintf_chk \ + vsprintf_chk + +tests-internal += test-printf-chk-ieee128 test-printf-chk-ibm128 +CFLAGS-test-printf-chk-ieee128.c += -mfloat128 -mabi=ieeelongdouble -Wno-psabi +CFLAGS-test-printf-chk-ibm128.c += -mabi=ibmlongdouble -Wno-psabi + +tests-internal += test-printf-chk-redir-ieee128 test-printf-chk-redir-ibm128 +CFLAGS-test-printf-chk-redir-ieee128.c += -mfloat128 -mabi=ieeelongdouble \ + -Wno-psabi -Wno-unused-result +CFLAGS-test-printf-chk-redir-ibm128.c += -mabi=ibmlongdouble -Wno-psabi \ + -Wno-unused-result +endif + # Add IEEE binary128 files as make targets. routines += $(foreach r,$(ldbl-extra-routines),ieee128-$(r)) |