From 0ecb606cb6cf65de1d9fc8a919bceb4be476c602 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 12 Jul 2007 18:26:36 +0000 Subject: 2.5-18.1 --- sysdeps/ieee754/ldbl-opt/math_ldbl_opt.h | 52 ++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 sysdeps/ieee754/ldbl-opt/math_ldbl_opt.h (limited to 'sysdeps/ieee754/ldbl-opt/math_ldbl_opt.h') diff --git a/sysdeps/ieee754/ldbl-opt/math_ldbl_opt.h b/sysdeps/ieee754/ldbl-opt/math_ldbl_opt.h new file mode 100644 index 0000000000..692b0c53c7 --- /dev/null +++ b/sysdeps/ieee754/ldbl-opt/math_ldbl_opt.h @@ -0,0 +1,52 @@ +/* -mlong-double-64 compatibility mode macros. */ + +#include +#ifndef LONG_DOUBLE_COMPAT_VERSION +# error "nldbl-abi.h must define LONG_DOUBLE_COMPAT_VERSION" +#endif + +#include +#define LONG_DOUBLE_COMPAT(lib, introduced) \ + SHLIB_COMPAT(lib, introduced, LONG_DOUBLE_COMPAT_VERSION) +#define long_double_symbol(lib, local, symbol) \ + long_double_symbol_1 (lib, local, symbol, LONG_DOUBLE_COMPAT_VERSION) +#if defined HAVE_ELF && defined SHARED && defined DO_VERSIONING +# define ldbl_hidden_def(local, name) libc_hidden_ver (local, name) +# define ldbl_strong_alias(name, aliasname) \ + strong_alias (name, __GL_##name##_##aliasname) \ + long_double_symbol (libc, __GL_##name##_##aliasname, aliasname); +# define ldbl_weak_alias(name, aliasname) \ + weak_alias (name, __GL_##name##_##aliasname) \ + long_double_symbol (libc, __GL_##name##_##aliasname, aliasname); +# define long_double_symbol_1(lib, local, symbol, version) \ + versioned_symbol (lib, local, symbol, version) +#elif defined HAVE_WEAK_SYMBOLS +# define ldbl_hidden_def(local, name) libc_hidden_def (name) +# define ldbl_strong_alias(name, aliasname) strong_alias (name, aliasname) +# define ldbl_weak_alias(name, aliasname) weak_alias (name, aliasname) +# ifndef __ASSEMBLER__ +/* Note that weak_alias cannot be used - it is defined to nothing + in most of the C files. */ +# define long_double_symbol_1(lib, local, symbol, version) \ + _weak_alias (local, symbol) +# else +# define long_double_symbol_1(lib, local, symbol, version) \ + weak_alias (local, symbol) +# endif +#else +# define ldbl_hidden_def(local, name) libc_hidden_def (name) +# define ldbl_strong_alias(name, aliasname) strong_alias (name, aliasname) +# define ldbl_weak_alias(name, aliasname) strong_alias (name, aliasname) +# define long_double_symbol_1(lib, local, symbol, version) \ + strong_alias (local, symbol) +#endif + +#ifndef __ASSEMBLER__ +# include +# include + +/* Set temporarily to non-zero if long double should be considered + the same as double. */ +extern __thread int __no_long_double attribute_tls_model_ie attribute_hidden; +# define __ldbl_is_dbl __builtin_expect (__no_long_double, 0) +#endif -- cgit v1.2.1