diff options
author | Jakub Jelinek <jakub@redhat.com> | 2007-07-12 18:26:36 +0000 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2007-07-12 18:26:36 +0000 |
commit | 0ecb606cb6cf65de1d9fc8a919bceb4be476c602 (patch) | |
tree | 2ea1f8305970753e4a657acb2ccc15ca3eec8e2c /sysdeps/ieee754/ldbl-opt/math_ldbl_opt.h | |
parent | 7d58530341304d403a6626d7f7a1913165fe2f32 (diff) | |
download | glibc-0ecb606cb6cf65de1d9fc8a919bceb4be476c602.tar.gz |
2.5-18.1
Diffstat (limited to 'sysdeps/ieee754/ldbl-opt/math_ldbl_opt.h')
-rw-r--r-- | sysdeps/ieee754/ldbl-opt/math_ldbl_opt.h | 52 |
1 files changed, 52 insertions, 0 deletions
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 <nldbl-abi.h> +#ifndef LONG_DOUBLE_COMPAT_VERSION +# error "nldbl-abi.h must define LONG_DOUBLE_COMPAT_VERSION" +#endif + +#include <shlib-compat.h> +#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 <math.h> +# include <math/math_private.h> + +/* 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 |