hidden-visibility.h

00001 /*
00002  * hidden-visibility.h
00003  * Create hidden internal aliases so we dont have wasteful relocs.
00004  * Copyright 2007 Gentoo Foundation
00005  * Released under the GPLv2
00006  */
00007 
00008 #ifndef _HIDDEN_VISIBILITY_H_
00009 #define _HIDDEN_VISIBILITY_H_
00010 
00011 #if defined(__ELF__) && defined(__GNUC__)
00012 # define __hidden_asmname(name) __hidden_asmname1 (__USER_LABEL_PREFIX__, name)
00013 # define __hidden_asmname1(prefix, name) __hidden_asmname2(prefix, name)
00014 # define __hidden_asmname2(prefix, name) #prefix name
00015 # define __hidden_proto(name, internal) \
00016         extern __typeof (name) name __asm__ (__hidden_asmname (#internal)) \
00017         __attribute__ ((visibility ("hidden")));
00018 # define __hidden_ver(local, internal, name) \
00019    extern __typeof (name) __EI_##name __asm__(__hidden_asmname (#internal)); \
00020    extern __typeof (name) __EI_##name __attribute__((alias (__hidden_asmname1 (,#local))))
00021 # define hidden_proto(name) __hidden_proto(name, __RC_##name)
00022 # define hidden_def(name) __hidden_ver(__RC_##name, name, name);
00023 #else
00024 # define hidden_proto(name)
00025 # define hidden_def(name)
00026 #endif
00027 
00028 #endif

Generated on Tue Sep 25 16:24:20 2007 for rc by  doxygen 1.5.3