diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/libc-symbols.h | 118 |
1 files changed, 13 insertions, 105 deletions
diff --git a/include/libc-symbols.h b/include/libc-symbols.h index 97463ac68..e20362218 100644 --- a/include/libc-symbols.h +++ b/include/libc-symbols.h @@ -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 */ |