strong_aliasって何?
glibcでのpthread実装コードにて、pthread_mutex_trylockを__pthread_mutex_trylockのエイリアスとして宣言しているっぽいのは一個下のエントリに出ているとおりなんですが、ここで使われているstrong_aliasとかいうマクロの件。
less -N include/libc-symbols.h
100 /* Define ALIASNAME as a strong alias for NAME. */ 101 # define strong_alias(name, aliasname) _strong_alias(name, aliasname) 102 # define _strong_alias(name, aliasname) \ 103 extern __typeof (name) aliasname __attribute__ ((alias (#name))); ... 110 # ifdef HAVE_WEAK_SYMBOLS 111 112 /* Define ALIASNAME as a weak alias for NAME. 113 If weak aliases are not available, this defines a strong alias. */ 114 # define weak_alias(name, aliasname) _weak_alias (name, aliasname) 115 # define _weak_alias(name, aliasname) \ 116 extern __typeof (name) aliasname __attribute__ ((weak, alias (#name))); 117 118 /* Declare SYMBOL as weak undefined symbol (resolved to 0 if not defined). */ 119 # define weak_extern(symbol) _weak_extern (weak symbol) 120 # define _weak_extern(expr) _Pragma (#expr) 121 122 # else 123 124 # define weak_alias(name, aliasname) strong_alias(name, aliasname) 125 # define weak_extern(symbol) /* Nothing. */ 126 127 # endif
とりあえずここまで。