# define strong_alias(name, aliasname) _strong_alias(name, aliasname) # define _strong_alias(name, aliasname) \ extern __typeof (name) aliasname __attribute__ ((alias (#name))); #define __hidden_proto_hiddenattr(attrs...) \ __attribute__ ((visibility ("hidden"), ##attrs)) #define __hidden_asmname(name) \ __hidden_asmname1 (__USER_LABEL_PREFIX__, name) #define __hidden_asmname1(prefix, name) __hidden_asmname2(prefix, name) #define __hidden_asmname2(prefix, name) #prefix name #ifndef FIX #define __hidden_ver1(local, internal, name) \ extern __typeof (name) __EI_##name __asm__(__hidden_asmname (#internal)); \ extern __typeof (name) __EI_##name \ __attribute__((alias (__hidden_asmname (#local)))) #else #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)))) #endif #define hidden_proto(name, attrs...) \ __hidden_proto (name, __GI_##name, ##attrs) #define __hidden_proto(name, internal, attrs...) \ extern __typeof (name) name __asm__ (__hidden_asmname (#internal)) \ __hidden_proto_hiddenattr (attrs); #define libc_hidden_proto(name, attrs...) hidden_proto (name, ##attrs) #define hidden_def(name) __hidden_ver1(__GI_##name, name, name); #define libc_hidden_def(name) hidden_def (name) int __libc_close(int fd) { return fd; } strong_alias(__libc_close,close) libc_hidden_proto(close) libc_hidden_def(close)