|
@@ -138,12 +138,6 @@
|
|
|
# undef HAVE_ASM_WEAKEXT_DIRECTIVE
|
|
|
#endif
|
|
|
|
|
|
-#ifdef __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__
|
|
|
-# define HAVE_ASM_GLOBAL_DOT_NAME
|
|
|
-#else
|
|
|
-# undef HAVE_ASM_GLOBAL_DOT_NAME
|
|
|
-#endif
|
|
|
-
|
|
|
#ifdef __UCLIBC_HAVE_ASM_CFI_DIRECTIVES__
|
|
|
# define HAVE_ASM_CFI_DIRECTIVES
|
|
|
#else
|
|
@@ -169,17 +163,6 @@
|
|
|
# define ASM_LINE_SEP ;
|
|
|
#endif
|
|
|
|
|
|
-#ifdef HAVE_ASM_GLOBAL_DOT_NAME
|
|
|
-# ifndef C_SYMBOL_DOT_NAME
|
|
|
-# if defined __GNUC__ && defined __GNUC_MINOR__ \
|
|
|
- && (__GNUC__ << 16) + __GNUC_MINOR__ >= (3 << 16) + 1
|
|
|
-# define C_SYMBOL_DOT_NAME(name) .name
|
|
|
-# else
|
|
|
-# define C_SYMBOL_DOT_NAME(name) .##name
|
|
|
-# endif
|
|
|
-# endif
|
|
|
-#endif
|
|
|
-
|
|
|
#ifndef __ASSEMBLER__
|
|
|
/* GCC understands weak symbols and aliases; use its interface where
|
|
|
possible, instead of embedded assembly language. */
|
|
@@ -225,78 +208,34 @@
|
|
|
#else /* __ASSEMBLER__ */
|
|
|
|
|
|
# ifdef HAVE_ASM_SET_DIRECTIVE
|
|
|
-# ifdef HAVE_ASM_GLOBAL_DOT_NAME
|
|
|
-# define strong_alias(original, alias) \
|
|
|
- ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(alias) ASM_LINE_SEP \
|
|
|
- .set C_SYMBOL_NAME(alias),C_SYMBOL_NAME(original) ASM_LINE_SEP \
|
|
|
- ASM_GLOBAL_DIRECTIVE C_SYMBOL_DOT_NAME(alias) ASM_LINE_SEP \
|
|
|
- .set C_SYMBOL_DOT_NAME(alias),C_SYMBOL_DOT_NAME(original)
|
|
|
-# define strong_data_alias(original, alias) \
|
|
|
+# define strong_alias(original, alias) \
|
|
|
ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(alias) ASM_LINE_SEP \
|
|
|
.set C_SYMBOL_NAME(alias),C_SYMBOL_NAME(original)
|
|
|
-# else
|
|
|
-# define strong_alias(original, alias) \
|
|
|
- ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(alias) ASM_LINE_SEP \
|
|
|
- .set C_SYMBOL_NAME(alias),C_SYMBOL_NAME(original)
|
|
|
-# define strong_data_alias(original, alias) strong_alias(original, alias)
|
|
|
-# endif
|
|
|
+# define strong_data_alias(original, alias) strong_alias(original, alias)
|
|
|
# else
|
|
|
-# ifdef HAVE_ASM_GLOBAL_DOT_NAME
|
|
|
-# define strong_alias(original, alias) \
|
|
|
- ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(alias) ASM_LINE_SEP \
|
|
|
- C_SYMBOL_NAME(alias) = C_SYMBOL_NAME(original) ASM_LINE_SEP \
|
|
|
- ASM_GLOBAL_DIRECTIVE C_SYMBOL_DOT_NAME(alias) ASM_LINE_SEP \
|
|
|
- C_SYMBOL_DOT_NAME(alias) = C_SYMBOL_DOT_NAME(original)
|
|
|
-# define strong_data_alias(original, alias) \
|
|
|
- ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(alias) ASM_LINE_SEP \
|
|
|
- C_SYMBOL_NAME(alias) = C_SYMBOL_NAME(original)
|
|
|
-# else
|
|
|
-# define strong_alias(original, alias) \
|
|
|
+# define strong_alias(original, alias) \
|
|
|
ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(alias) ASM_LINE_SEP \
|
|
|
C_SYMBOL_NAME(alias) = C_SYMBOL_NAME(original)
|
|
|
-# define strong_data_alias(original, alias) strong_alias(original, alias)
|
|
|
-# endif
|
|
|
+# define strong_data_alias(original, alias) strong_alias(original, alias)
|
|
|
# endif
|
|
|
|
|
|
-# ifdef HAVE_WEAK_SYMBOLS
|
|
|
-# ifdef HAVE_ASM_WEAKEXT_DIRECTIVE
|
|
|
-# ifdef HAVE_ASM_GLOBAL_DOT_NAME
|
|
|
-# define weak_alias(original, alias) \
|
|
|
- .weakext C_SYMBOL_NAME(alias),C_SYMBOL_NAME(original) ASM_LINE_SEP \
|
|
|
- .weakext C_SYMBOL_DOT_NAME(alias),C_SYMBOL_DOT_NAME(original)
|
|
|
-# else
|
|
|
+# ifdef HAVE_WEAK_SYMBOLS
|
|
|
+# ifdef HAVE_ASM_WEAKEXT_DIRECTIVE
|
|
|
# define weak_alias(original, alias) \
|
|
|
.weakext C_SYMBOL_NAME(alias),C_SYMBOL_NAME(original)
|
|
|
-# endif
|
|
|
-# define weak_extern(symbol) \
|
|
|
+# define weak_extern(symbol) \
|
|
|
.weakext C_SYMBOL_NAME(symbol)
|
|
|
|
|
|
# else /* ! HAVE_ASM_WEAKEXT_DIRECTIVE */
|
|
|
|
|
|
# ifdef HAVE_ASM_SET_DIRECTIVE
|
|
|
-# ifdef HAVE_ASM_GLOBAL_DOT_NAME
|
|
|
-# define weak_alias(original, alias) \
|
|
|
- .weak C_SYMBOL_NAME(alias) ASM_LINE_SEP \
|
|
|
- .set C_SYMBOL_NAME(alias),C_SYMBOL_NAME(original) ASM_LINE_SEP \
|
|
|
- .weak C_SYMBOL_DOT_NAME(alias) ASM_LINE_SEP \
|
|
|
- .set C_SYMBOL_DOT_NAME(alias),C_SYMBOL_DOT_NAME(original)
|
|
|
-# else
|
|
|
-# define weak_alias(original, alias) \
|
|
|
+# define weak_alias(original, alias) \
|
|
|
.weak C_SYMBOL_NAME(alias) ASM_LINE_SEP \
|
|
|
.set C_SYMBOL_NAME(alias),C_SYMBOL_NAME(original)
|
|
|
-# endif
|
|
|
# else /* ! HAVE_ASM_SET_DIRECTIVE */
|
|
|
-# ifdef HAVE_ASM_GLOBAL_DOT_NAME
|
|
|
-# define weak_alias(original, alias) \
|
|
|
- .weak C_SYMBOL_NAME(alias) ASM_LINE_SEP \
|
|
|
- C_SYMBOL_NAME(alias) = C_SYMBOL_NAME(original) ASM_LINE_SEP \
|
|
|
- .weak C_SYMBOL_DOT_NAME(alias) ASM_LINE_SEP \
|
|
|
- C_SYMBOL_DOT_NAME(alias) = C_SYMBOL_DOT_NAME(original)
|
|
|
-# else
|
|
|
-# define weak_alias(original, alias) \
|
|
|
+# define weak_alias(original, alias) \
|
|
|
.weak C_SYMBOL_NAME(alias) ASM_LINE_SEP \
|
|
|
C_SYMBOL_NAME(alias) = C_SYMBOL_NAME(original)
|
|
|
-# endif
|
|
|
# endif
|
|
|
# define weak_extern(symbol) \
|
|
|
.weak C_SYMBOL_NAME(symbol)
|
|
@@ -503,47 +442,20 @@ FIXME! - ?
|
|
|
# else /* __ASSEMBLER__ */
|
|
|
|
|
|
# ifdef HAVE_ASM_SET_DIRECTIVE
|
|
|
-# ifdef HAVE_ASM_GLOBAL_DOT_NAME
|
|
|
-# define _hidden_strong_alias(original, alias) \
|
|
|
- ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(alias) ASM_LINE_SEP \
|
|
|
- .hidden C_SYMBOL_NAME(alias) ASM_LINE_SEP \
|
|
|
- .set C_SYMBOL_NAME(alias),C_SYMBOL_NAME(original) ASM_LINE_SEP \
|
|
|
- ASM_GLOBAL_DIRECTIVE C_SYMBOL_DOT_NAME(alias) ASM_LINE_SEP \
|
|
|
- .hidden C_SYMBOL_DOT_NAME(alias) ASM_LINE_SEP \
|
|
|
- .set C_SYMBOL_DOT_NAME(alias),C_SYMBOL_DOT_NAME(original)
|
|
|
-# else
|
|
|
-# define _hidden_strong_alias(original, alias) \
|
|
|
+# define _hidden_strong_alias(original, alias) \
|
|
|
ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(alias) ASM_LINE_SEP \
|
|
|
.hidden C_SYMBOL_NAME(alias) ASM_LINE_SEP \
|
|
|
.set C_SYMBOL_NAME(alias),C_SYMBOL_NAME(original)
|
|
|
-# endif
|
|
|
# else /* dont have .set directive */
|
|
|
-# ifdef HAVE_ASM_GLOBAL_DOT_NAME
|
|
|
-# define _hidden_strong_alias(original, alias) \
|
|
|
- ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(alias) ASM_LINE_SEP \
|
|
|
- .hidden C_SYMBOL_NAME(alias) ASM_LINE_SEP \
|
|
|
- C_SYMBOL_NAME(alias) = C_SYMBOL_NAME(original) ASM_LINE_SEP \
|
|
|
- ASM_GLOBAL_DIRECTIVE C_SYMBOL_DOT_NAME(alias) ASM_LINE_SEP \
|
|
|
- .hidden C_SYMBOL_DOT_NAME(alias) ASM_LINE_SEP \
|
|
|
- C_SYMBOL_DOT_NAME(alias) = C_SYMBOL_DOT_NAME(original)
|
|
|
-# else
|
|
|
-# define _hidden_strong_alias(original, alias) \
|
|
|
+# define _hidden_strong_alias(original, alias) \
|
|
|
ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(alias) ASM_LINE_SEP \
|
|
|
.hidden C_SYMBOL_NAME(alias) ASM_LINE_SEP \
|
|
|
C_SYMBOL_NAME(alias) = C_SYMBOL_NAME(original)
|
|
|
-# endif
|
|
|
# endif
|
|
|
|
|
|
-# ifdef HAVE_ASM_GLOBAL_DOT_NAME
|
|
|
-# define _hidden_weak_alias(original, alias) \
|
|
|
+# define _hidden_weak_alias(original, alias) \
|
|
|
.hidden C_SYMBOL_NAME(alias) ASM_LINE_SEP \
|
|
|
- .hidden C_SYMBOL_DOT_NAME(alias) ASM_LINE_SEP \
|
|
|
weak_alias(original, alias)
|
|
|
-# else
|
|
|
-# define _hidden_weak_alias(original, alias) \
|
|
|
- .hidden C_SYMBOL_NAME(alias) ASM_LINE_SEP \
|
|
|
- weak_alias(original, alias)
|
|
|
-# endif
|
|
|
|
|
|
/* For assembly, we need to do the opposite of what we do in C:
|
|
|
in assembly gcc __REDIRECT stuff is not in place, so functions
|
|
@@ -560,11 +472,7 @@ FIXME! - ?
|
|
|
# define hidden_data_def(name) _hidden_strong_alias (name, __GI_##name)
|
|
|
# define hidden_data_weak(name) _hidden_weak_alias (name, __GI_##name)
|
|
|
# define hidden_data_ver(local, name) strong_data_alias (local, __GI_##name)
|
|
|
-# ifdef HAVE_ASM_GLOBAL_DOT_NAME
|
|
|
-# define HIDDEN_JUMPTARGET(name) .__GI_##name
|
|
|
-# else
|
|
|
-# define HIDDEN_JUMPTARGET(name) __GI_##name
|
|
|
-# endif
|
|
|
+# define HIDDEN_JUMPTARGET(name) __GI_##name
|
|
|
# endif /* __ASSEMBLER__ */
|
|
|
|
|
|
#else /* not SHARED */
|