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>
2019-07-11 14:46:57 +00:00
|
|
|
/* Test for the long double variants of *printf_chk functions.
|
2021-01-02 19:32:25 +00:00
|
|
|
Copyright (C) 2019-2021 Free Software Foundation, Inc.
|
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>
2019-07-11 14:46:57 +00:00
|
|
|
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
|
2019-11-27 21:14:14 +00:00
|
|
|
<https://www.gnu.org/licenses/>. */
|
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>
2019-07-11 14:46:57 +00:00
|
|
|
|
|
|
|
#define _FORTIFY_SOURCE 2
|
|
|
|
|
|
|
|
#include <stdarg.h>
|
|
|
|
#include <stdint.h>
|
|
|
|
#include <stdio.h>
|
|
|
|
#include <stdlib.h>
|
|
|
|
|
|
|
|
#include <support/capture_subprocess.h>
|
|
|
|
#include <support/check.h>
|
|
|
|
|
|
|
|
static void
|
|
|
|
do_test_call_varg (FILE *stream, const char *format, ...)
|
|
|
|
{
|
|
|
|
char *buffer = NULL;
|
|
|
|
char string[128];
|
|
|
|
int res;
|
|
|
|
va_list args;
|
|
|
|
|
|
|
|
printf ("%20s", "__vasprintf_chk: ");
|
|
|
|
va_start (args, format);
|
|
|
|
res = __vasprintf_chk (&buffer, 1, format, args);
|
|
|
|
va_end (args);
|
|
|
|
if (res == -1)
|
|
|
|
printf ("Error using vasprintf\n");
|
|
|
|
if (buffer == NULL)
|
|
|
|
printf ("Error using vasprintf\n");
|
|
|
|
else
|
|
|
|
{
|
|
|
|
printf ("%s", buffer);
|
|
|
|
free (buffer);
|
|
|
|
}
|
|
|
|
printf ("\n");
|
|
|
|
|
|
|
|
printf ("%20s", "__vdprintf_chk: ");
|
|
|
|
va_start (args, format);
|
|
|
|
__vdprintf_chk (fileno (stream), 1, format, args);
|
|
|
|
va_end (args);
|
|
|
|
printf ("\n");
|
|
|
|
|
|
|
|
printf ("%20s", "__vfprintf_chk: ");
|
|
|
|
va_start (args, format);
|
|
|
|
__vfprintf_chk (stream, 1, format, args);
|
|
|
|
va_end (args);
|
|
|
|
printf ("\n");
|
|
|
|
|
|
|
|
printf ("%20s", "__vprintf_chk: ");
|
|
|
|
va_start (args, format);
|
|
|
|
__vprintf_chk (1, format, args);
|
|
|
|
va_end (args);
|
|
|
|
printf ("\n");
|
|
|
|
|
|
|
|
printf ("%20s", "__vsnprintf_chk: ");
|
|
|
|
va_start (args, format);
|
|
|
|
__vsnprintf_chk (string, 79, 1, 127, format, args);
|
|
|
|
va_end (args);
|
|
|
|
printf ("%s", string);
|
|
|
|
printf ("\n");
|
|
|
|
|
|
|
|
printf ("%20s", "__vsprintf_chk: ");
|
|
|
|
va_start (args, format);
|
|
|
|
__vsprintf_chk (string, 1, 127, format, args);
|
|
|
|
va_end (args);
|
|
|
|
printf ("%s", string);
|
|
|
|
printf ("\n");
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2019-07-11 14:47:06 +00:00
|
|
|
do_test_call_rarg (FILE *stream, const char *format, long double ld,
|
|
|
|
double d)
|
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>
2019-07-11 14:46:57 +00:00
|
|
|
{
|
|
|
|
char *buffer = NULL;
|
|
|
|
char string[128];
|
|
|
|
int res;
|
|
|
|
|
|
|
|
printf ("%20s", "__asprintf_chk: ");
|
2019-07-11 14:47:06 +00:00
|
|
|
res = __asprintf_chk (&buffer, 1, format, ld, d);
|
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>
2019-07-11 14:46:57 +00:00
|
|
|
if (res == -1)
|
|
|
|
printf ("Error using vasprintf\n");
|
|
|
|
if (buffer == NULL)
|
|
|
|
printf ("Error using asprintf\n");
|
|
|
|
else
|
|
|
|
{
|
|
|
|
printf ("%s", buffer);
|
|
|
|
free (buffer);
|
|
|
|
}
|
|
|
|
printf ("\n");
|
|
|
|
|
|
|
|
printf ("%20s", "__dprintf_chk: ");
|
2019-07-11 14:47:06 +00:00
|
|
|
__dprintf_chk (fileno (stream), 1, format, ld, d);
|
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>
2019-07-11 14:46:57 +00:00
|
|
|
printf ("\n");
|
|
|
|
|
|
|
|
printf ("%20s", "__fprintf_chk: ");
|
2019-07-11 14:47:06 +00:00
|
|
|
__fprintf_chk (stdout, 1, format, ld, d);
|
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>
2019-07-11 14:46:57 +00:00
|
|
|
printf ("\n");
|
|
|
|
|
|
|
|
printf ("%20s", "__printf_chk: ");
|
2019-07-11 14:47:06 +00:00
|
|
|
__printf_chk (1, format, ld, d);
|
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>
2019-07-11 14:46:57 +00:00
|
|
|
printf ("\n");
|
|
|
|
|
|
|
|
printf ("%20s", "__snprintf_chk: ");
|
2019-07-11 14:47:06 +00:00
|
|
|
__snprintf_chk (string, 79, 1, 127, format, ld, d);
|
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>
2019-07-11 14:46:57 +00:00
|
|
|
printf ("%s", string);
|
|
|
|
printf ("\n");
|
|
|
|
|
|
|
|
printf ("%20s", "__sprintf_chk: ");
|
2019-07-11 14:47:06 +00:00
|
|
|
__sprintf_chk (string, 1, 127, format, ld, d);
|
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>
2019-07-11 14:46:57 +00:00
|
|
|
printf ("%s", string);
|
|
|
|
printf ("\n");
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
do_test_call (void)
|
|
|
|
{
|
|
|
|
long double ld = -1;
|
2019-07-11 14:47:06 +00:00
|
|
|
double d = -1;
|
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>
2019-07-11 14:46:57 +00:00
|
|
|
|
|
|
|
/* Print in decimal notation. */
|
2019-07-11 14:47:06 +00:00
|
|
|
do_test_call_rarg (stdout, "%.10Lf, %.10f", ld, d);
|
|
|
|
do_test_call_varg (stdout, "%.10Lf, %.10f", ld, d);
|
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>
2019-07-11 14:46:57 +00:00
|
|
|
|
|
|
|
/* Print in hexadecimal notation. */
|
2019-07-11 14:47:06 +00:00
|
|
|
do_test_call_rarg (stdout, "%.10La, %.10a", ld, d);
|
|
|
|
do_test_call_varg (stdout, "%.10La, %.10a", ld, d);
|
2019-07-11 14:47:12 +00:00
|
|
|
|
|
|
|
/* Test positional parameters. */
|
|
|
|
do_test_call_varg (stdout, "%3$Lf, %2$Lf, %1$f",
|
|
|
|
(double) 1, (long double) 2, (long double) 3);
|
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>
2019-07-11 14:46:57 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
|
|
|
do_test (void)
|
|
|
|
{
|
|
|
|
struct support_capture_subprocess result;
|
|
|
|
result = support_capture_subprocess ((void *) &do_test_call, NULL);
|
|
|
|
|
|
|
|
/* Compare against the expected output. */
|
|
|
|
const char *expected =
|
2019-07-11 14:47:06 +00:00
|
|
|
" __asprintf_chk: -1.0000000000, -1.0000000000\n"
|
|
|
|
" __dprintf_chk: -1.0000000000, -1.0000000000\n"
|
|
|
|
" __fprintf_chk: -1.0000000000, -1.0000000000\n"
|
|
|
|
" __printf_chk: -1.0000000000, -1.0000000000\n"
|
|
|
|
" __snprintf_chk: -1.0000000000, -1.0000000000\n"
|
|
|
|
" __sprintf_chk: -1.0000000000, -1.0000000000\n"
|
|
|
|
" __vasprintf_chk: -1.0000000000, -1.0000000000\n"
|
|
|
|
" __vdprintf_chk: -1.0000000000, -1.0000000000\n"
|
|
|
|
" __vfprintf_chk: -1.0000000000, -1.0000000000\n"
|
|
|
|
" __vprintf_chk: -1.0000000000, -1.0000000000\n"
|
|
|
|
" __vsnprintf_chk: -1.0000000000, -1.0000000000\n"
|
|
|
|
" __vsprintf_chk: -1.0000000000, -1.0000000000\n"
|
|
|
|
" __asprintf_chk: -0x1.0000000000p+0, -0x1.0000000000p+0\n"
|
|
|
|
" __dprintf_chk: -0x1.0000000000p+0, -0x1.0000000000p+0\n"
|
|
|
|
" __fprintf_chk: -0x1.0000000000p+0, -0x1.0000000000p+0\n"
|
|
|
|
" __printf_chk: -0x1.0000000000p+0, -0x1.0000000000p+0\n"
|
|
|
|
" __snprintf_chk: -0x1.0000000000p+0, -0x1.0000000000p+0\n"
|
|
|
|
" __sprintf_chk: -0x1.0000000000p+0, -0x1.0000000000p+0\n"
|
|
|
|
" __vasprintf_chk: -0x1.0000000000p+0, -0x1.0000000000p+0\n"
|
|
|
|
" __vdprintf_chk: -0x1.0000000000p+0, -0x1.0000000000p+0\n"
|
|
|
|
" __vfprintf_chk: -0x1.0000000000p+0, -0x1.0000000000p+0\n"
|
|
|
|
" __vprintf_chk: -0x1.0000000000p+0, -0x1.0000000000p+0\n"
|
|
|
|
" __vsnprintf_chk: -0x1.0000000000p+0, -0x1.0000000000p+0\n"
|
2019-07-11 14:47:12 +00:00
|
|
|
" __vsprintf_chk: -0x1.0000000000p+0, -0x1.0000000000p+0\n"
|
|
|
|
" __vasprintf_chk: 3.000000, 2.000000, 1.000000\n"
|
|
|
|
" __vdprintf_chk: 3.000000, 2.000000, 1.000000\n"
|
|
|
|
" __vfprintf_chk: 3.000000, 2.000000, 1.000000\n"
|
|
|
|
" __vprintf_chk: 3.000000, 2.000000, 1.000000\n"
|
|
|
|
" __vsnprintf_chk: 3.000000, 2.000000, 1.000000\n"
|
|
|
|
" __vsprintf_chk: 3.000000, 2.000000, 1.000000\n";
|
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>
2019-07-11 14:46:57 +00:00
|
|
|
TEST_COMPARE_STRING (expected, result.out.buffer);
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
#include <support/test-driver.c>
|