}
libc_hidden_weak (foo)
- Similarly for global data. If references to foo within libc.so should
+ Similarly for global data. If references to foo within libc.so should
always go to foo defined in libc.so, then in include/foo.h you add:
libc_hidden_proto (foo)
int foo = INITIAL_FOO_VALUE;
libc_hidden_data_weak (foo)
- If foo is normally just an alias (strong or weak) of some other function,
+ If foo is normally just an alias (strong or weak) to some other function,
you should use the normal strong_alias first, then add libc_hidden_def
or libc_hidden_weak:
# define __hidden_ver1(local, internal, name) \
extern __typeof (name) __EI_##name __asm__(__hidden_asmname (#internal)); \
extern __typeof (name) __EI_##name __attribute__((alias (__hidden_asmname1 (,#local))))
+# define hidden_ver(local, name) __hidden_ver1(local, __GI_##name, name);
+# define hidden_data_ver(local, name) hidden_ver(local, name)
# define hidden_def(name) __hidden_ver1(__GI_##name, name, name);
# define hidden_data_def(name) hidden_def(name)
-# define hidden_weak(name) __hidden_ver1(__GI_##name, name, name) __attribute__((weak));
+# define hidden_weak(name) \
+ __hidden_ver1(__GI_##name, name, name) __attribute__((weak));
# define hidden_data_weak(name) hidden_weak(name)
# else /* __ASSEMBLER__ */
hidden_proto doesn't make sense for assembly but the equivalent
is to call via the HIDDEN_JUMPTARGET macro instead of JUMPTARGET. */
# define hidden_def(name) _hidden_strong_alias (name, __GI_##name)
-# define hidden_data_def(name) _hidden_strong_alias (name, __GI_##name)
# define hidden_weak(name) _hidden_weak_alias (name, __GI_##name)
+# define hidden_ver(local, name) strong_alias (local, __GI_##name)
+# define hidden_data_def(name) _hidden_strong_alias (name, __GI_##name)
# define hidden_data_weak(name) _hidden_weak_alias (name, __GI_##name)
-# define HIDDEN_JUMPTARGET(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
# endif /* __ASSEMBLER__ */
#else /* SHARED */
# ifndef __ASSEMBLER__
# define hidden_proto(name, attrs...)
# else
# define HIDDEN_JUMPTARGET(name) name
-# endif
-# define hidden_def(name)
-# define hidden_data_def(name)
+# endif /* Not __ASSEMBLER__ */
# define hidden_weak(name)
+# define hidden_def(name)
+# define hidden_ver(local, name)
# define hidden_data_weak(name)
+# define hidden_data_def(name)
+# define hidden_data_ver(local, name)
#endif /* SHARED */
/* uClibc does not support versioning yet. */
#define versioned_symbol(lib, local, symbol, version) /* weak_alias(local, symbol) */
+#undef hidden_ver
#define hidden_ver(local, name) /* strong_alias(local, __GI_##name) */
+#undef hidden_data_ver
#define hidden_data_ver(local, name) /* strong_alias(local,__GI_##name) */
#if !defined NOT_IN_libc
# define libpthread_hidden_data_ver(local, name)
#endif
-#endif /* _LIBC_SYMBOLS_H */
+#endif /* libc-symbols.h */