math_ldbl_opt.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. /* -mlong-double-64 compatibility mode macros. */
  2. #include <nldbl-abi.h>
  3. #ifndef LONG_DOUBLE_COMPAT_VERSION
  4. # error "nldbl-abi.h must define LONG_DOUBLE_COMPAT_VERSION"
  5. #endif
  6. #include <shlib-compat.h>
  7. #define LONG_DOUBLE_COMPAT(lib, introduced) \
  8. SHLIB_COMPAT(lib, introduced, LONG_DOUBLE_COMPAT_VERSION)
  9. #define long_double_symbol(lib, local, symbol) \
  10. long_double_symbol_1 (lib, local, symbol, LONG_DOUBLE_COMPAT_VERSION)
  11. #ifdef SHARED
  12. # define ldbl_hidden_def(local, name) libc_hidden_ver (local, name)
  13. # define ldbl_strong_alias(name, aliasname) \
  14. strong_alias (name, __GL_##name##_##aliasname) \
  15. long_double_symbol (libc, __GL_##name##_##aliasname, aliasname);
  16. # define ldbl_weak_alias(name, aliasname) \
  17. weak_alias (name, __GL_##name##_##aliasname) \
  18. long_double_symbol (libc, __GL_##name##_##aliasname, aliasname);
  19. # define long_double_symbol_1(lib, local, symbol, version) \
  20. versioned_symbol (lib, local, symbol, version)
  21. # define ldbl_compat_symbol(lib, local, symbol, version) \
  22. compat_symbol (lib, local, symbol, LONG_DOUBLE_COMPAT_VERSION)
  23. #else
  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. /* Same as compat_symbol, ldbl_compat_symbol is not to be used outside
  28. '#if SHLIB_COMPAT' statement and should fail if it is. */
  29. # define ldbl_compat_symbol(lib, local, symbol, version) \
  30. _Static_assert (0, "ldbl_compat_symbol should be used inside SHLIB_COMPAT");
  31. # ifndef __ASSEMBLER__
  32. /* Note that weak_alias cannot be used - it is defined to nothing
  33. in most of the C files. */
  34. # define long_double_symbol_1(lib, local, symbol, version) \
  35. _weak_alias (local, symbol)
  36. # else
  37. # define long_double_symbol_1(lib, local, symbol, version) \
  38. weak_alias (local, symbol)
  39. # endif
  40. #endif