summaryrefslogtreecommitdiff
path: root/sysdeps/ieee754/ldbl-128ibm-compat/test-syslog-ldbl-compat-template.c
diff options
context:
space:
mode:
authorGabriel F. T. Gomes <gabrielftg@linux.ibm.com>2019-07-11 11:47:51 -0300
committerGabriel F. T. Gomes <gabrielftg@linux.ibm.com>2019-11-27 15:52:41 -0300
commit381b76d7a3511e152675018457bd432fa2657928 (patch)
tree1f7ba32975ef1ed80fb2f6615c26b1ba91327a7d /sysdeps/ieee754/ldbl-128ibm-compat/test-syslog-ldbl-compat-template.c
parent590ef889bc7afe42d4feec94e1c4fbd4ddd65226 (diff)
downloadglibc-381b76d7a3511e152675018457bd432fa2657928.tar.gz
ldbl-128ibm-compat: Add syslog functions
Similarly to __vfprintf_internal and __vfscanf_internal, the internal implementation of syslog functions (__vsyslog_internal) takes a 'mode_flags' parameter used to select the format of long double parameters. This patch adds variants of the syslog functions that set 'mode_flags' to PRINTF_LDBL_USES_FLOAT128, thus enabling the correct printing of long double values on powerpc64le, when long double has IEEE binary128 format (-mabi=ieeelongdouble). Tested for powerpc64le. Reviewed-by: Florian Weimer <fweimer@redhat.com> Reviewed-by: Joseph Myers <joseph@codesourcery.com> Reviewed-by: Paul E. Murphy <murphyp@linux.ibm.com>
Diffstat (limited to 'sysdeps/ieee754/ldbl-128ibm-compat/test-syslog-ldbl-compat-template.c')
-rw-r--r--sysdeps/ieee754/ldbl-128ibm-compat/test-syslog-ldbl-compat-template.c67
1 files changed, 67 insertions, 0 deletions
diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/test-syslog-ldbl-compat-template.c b/sysdeps/ieee754/ldbl-128ibm-compat/test-syslog-ldbl-compat-template.c
new file mode 100644
index 0000000000..fe8acb4054
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128ibm-compat/test-syslog-ldbl-compat-template.c
@@ -0,0 +1,67 @@
+/* Test for the long double variants of *syslog* functions.
+ Copyright (C) 2019 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 <stddef.h>
+#include <syslog.h>
+
+#include <support/capture_subprocess.h>
+#include <support/check.h>
+
+static void
+do_test_one_call (void *last, ...)
+{
+ long double ld = -1;
+ va_list ap;
+
+ /* Make syslog functions write to stderr with LOG_PERROR, so that it
+ can be captured by support_capture_subprocess and verified. */
+ openlog ("test-syslog", LOG_PERROR, LOG_USER);
+
+ /* Call syslog functions that take a format string. */
+ SYSLOG_FUNCTION SYSLOG_FUNCTION_PARAMS;
+ va_start (ap, last);
+ VSYSLOG_FUNCTION VSYSLOG_FUNCTION_PARAMS;
+ va_end (ap);
+}
+
+static void
+do_test_call (void)
+{
+ long double ld = -1;
+ do_test_one_call (NULL, ld);
+}
+
+static int
+do_test (void)
+{
+ struct support_capture_subprocess result;
+ result = support_capture_subprocess ((void *) &do_test_call, NULL);
+
+ do_test_call ();
+
+ /* Compare against the expected output. */
+ const char *expected =
+ "test-syslog: -1.000000\n"
+ "test-syslog: -1.000000\n";
+ TEST_COMPARE_STRING (expected, result.err.buffer);
+
+ return 0;
+}
+
+#include <support/test-driver.c>