aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStan Shebs <stanshebs@google.com>2018-01-19 12:23:55 -0800
committerStan Shebs <stanshebs@google.com>2018-01-24 16:03:39 -0800
commitb5fbe0360190a28d4230435e34422ebaade4fd4b (patch)
treea8b922f41bf7b2294b1d4c0e97b8afc698512445
parent2defba5a32d87289fd4c2aa82307481b13d65e61 (diff)
downloadglibc-b5fbe0360190a28d4230435e34422ebaade4fd4b.tar
glibc-b5fbe0360190a28d4230435e34422ebaade4fd4b.tar.gz
glibc-b5fbe0360190a28d4230435e34422ebaade4fd4b.tar.bz2
glibc-b5fbe0360190a28d4230435e34422ebaade4fd4b.zip
Add clang version of __hidden_proto
-rw-r--r--include/libc-symbols.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/include/libc-symbols.h b/include/libc-symbols.h
index 6137304b0b..eb4dbbe777 100644
--- a/include/libc-symbols.h
+++ b/include/libc-symbols.h
@@ -459,9 +459,19 @@ for linking")
__hidden_proto (name, , __GI_##name, ##attrs)
# define hidden_tls_proto(name, attrs...) \
__hidden_proto (name, __thread, __GI_##name, ##attrs)
+#ifndef __clang__
# define __hidden_proto(name, thread, internal, attrs...) \
extern thread __typeof (name) name __asm__ (__hidden_asmname (#internal)) \
__hidden_proto_hiddenattr (attrs);
+#else
+# define __hidden_proto(name, thread, internal, attrs...) \
+ extern thread __typeof (name) name \
+ __hidden_proto_hiddenattr (attrs); \
+ _Pragma (__redefine(name, internal))
+/* Note that this macro does not use __hidden_asmname, since it produces a string. */
+# define __redefine(name, internal) __stringize(redefine_extname name internal)
+# define __stringize(X) #X
+#endif
# define __hidden_asmname(name) \
__hidden_asmname1 (__USER_LABEL_PREFIX__, name)
# define __hidden_asmname1(prefix, name) __hidden_asmname2(prefix, name)