2006-01-18 Roland McGrath <roland@redhat.com>
[kopensolaris-gnu/glibc.git] / sysdeps / ieee754 / ldbl-opt / math_ldbl_opt.h
1 /* -mlong-double-64 compatibility mode macros.  */
2
3 #include <nldbl-abi.h>
4 #ifndef LONG_DOUBLE_COMPAT_VERSION
5 # error "nldbl-abi.h must define LONG_DOUBLE_COMPAT_VERSION"
6 #endif
7
8 #include <shlib-compat.h>
9 #define LONG_DOUBLE_COMPAT(lib, introduced) \
10   SHLIB_COMPAT(lib, introduced, LONG_DOUBLE_COMPAT_VERSION)
11 #define long_double_symbol(lib, local, symbol) \
12   long_double_symbol_1 (lib, local, symbol, LONG_DOUBLE_COMPAT_VERSION)
13 #if defined HAVE_ELF && defined SHARED && defined DO_VERSIONING
14 # define ldbl_hidden_def(local, name) libc_hidden_ver (local, name)
15 # define ldbl_strong_alias(name, aliasname) \
16   strong_alias (name, __GL_##name##_##aliasname) \
17   long_double_symbol (libc, __GL_##name##_##aliasname, aliasname);
18 # define ldbl_weak_alias(name, aliasname) \
19   weak_alias (name, __GL_##name##_##aliasname) \
20   long_double_symbol (libc, __GL_##name##_##aliasname, aliasname);
21 # define long_double_symbol_1(lib, local, symbol, version) \
22   versioned_symbol (lib, local, symbol, version)
23 #elif defined HAVE_WEAK_SYMBOLS
24 # define ldbl_hidden_def(local, name) libc_hidden_def (name)
25 # define ldbl_strong_alias(name, aliasname) strong_alias (name, aliasname)
26 # define ldbl_weak_alias(name, aliasname) weak_alias (name, aliasname)
27 /* Note that weak_alias cannot be used - it is defined to nothing
28    in most of the files.  */
29 # define long_double_symbol_1(lib, local, symbol, version) \
30   weak_alias (local, symbol)
31 #else
32 # define ldbl_hidden_def(local, name) libc_hidden_def (name)
33 # define ldbl_strong_alias(name, aliasname) strong_alias (name, aliasname)
34 # define ldbl_weak_alias(name, aliasname) strong_alias (name, aliasname)
35 # define long_double_symbol_1(lib, local, symbol, version) \
36   strong_alias (local, symbol)
37 #endif
38
39 #ifndef __ASSEMBLER__
40 # include <math.h>
41 # include <math/math_private.h>
42
43 /* Set temporarily to non-zero if long double should be considered
44    the same as double.  */
45 extern __thread int __no_long_double attribute_tls_model_ie attribute_hidden;
46 # define __ldbl_is_dbl __builtin_expect (__no_long_double, 0)
47 #endif