diff options
author | Gabriel F. T. Gomes <gabriel@inconstante.eti.br> | 2018-08-08 17:26:22 -0300 |
---|---|---|
committer | Gabriel F. T. Gomes <gabriel@inconstante.eti.br> | 2019-03-01 15:26:36 -0300 |
commit | d11086a9391b6066458947b80c0d0059b6b461d8 (patch) | |
tree | 91d537afc5f7a3c50c2b0002ec626de9353abc69 /misc/error.h | |
parent | 90188e7d1adc5d8743d7933c9ed1bf95f91dda62 (diff) | |
download | glibc-d11086a9391b6066458947b80c0d0059b6b461d8.tar.gz glibc-d11086a9391b6066458947b80c0d0059b6b461d8.tar.xz glibc-d11086a9391b6066458947b80c0d0059b6b461d8.zip |
ldbl-opt: Add error and error_at_line (bug 23984)
On platforms where long double may have the same format as double (-mlong-double-64), error and error_at_line do not take that into account and might produce wrong output if a long double conversion is requested by the format string ('%Lf'). This patch adds compatibility functions for this situation and redirects calls via header magic. Tested for powerpc, powerpc64 and powerpc64le.
Diffstat (limited to 'misc/error.h')
-rw-r--r-- | misc/error.h | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/misc/error.h b/misc/error.h index 34d4a6d4c6..ba0c9293ed 100644 --- a/misc/error.h +++ b/misc/error.h @@ -47,9 +47,15 @@ extern unsigned int error_message_count; variable controls whether this mode is selected or not. */ extern int error_one_per_line; - -#if defined __extern_always_inline && defined __va_arg_pack -# include <bits/error.h> +#ifdef __LDBL_COMPAT +# include <bits/error-ldbl.h> +#else +/* Do not inline error and error_at_line when long double has the same + size of double, because that would invalidate the redirections to the + compatibility functions. */ +# if defined __extern_always_inline && defined __va_arg_pack +# include <bits/error.h> +# endif #endif __END_DECLS |