svn commit: trunk/uClibc/include

Peter S. Mazinger ps.m at gmx.net
Fri Jan 20 23:03:03 UTC 2006


On Fri, 20 Jan 2006 vapier at uclibc.org wrote:

> Author: vapier
> Date: 2006-01-20 14:46:29 -0800 (Fri, 20 Jan 2006)
> New Revision: 13461
> 
> Log:
> grab some macros for internal ldso usage and fix strong_alias/hidden_strong_alias when .set support is disabled
> 
> Modified:
>    trunk/uClibc/include/libc-symbols.h
> 
> 
> Changeset:
> Modified: trunk/uClibc/include/libc-symbols.h
> ===================================================================
> --- trunk/uClibc/include/libc-symbols.h	2006-01-20 21:48:06 UTC (rev 13460)
> +++ trunk/uClibc/include/libc-symbols.h	2006-01-20 22:46:29 UTC (rev 13461)
> @@ -273,6 +273,31 @@
>    link_warning (name, \
>  		"warning: " #name " is not implemented and will always fail")
>  
> +/* Handling on non-exported internal names.  We have to do this only
> +   for shared code.  */
> +#ifdef SHARED
> +# define INTUSE(name) name##_internal
> +# define INTDEF(name) strong_alias (name, name##_internal)
> +# define INTVARDEF(name) \
> +  _INTVARDEF (name, name##_internal)
> +# if defined HAVE_VISIBILITY_ATTRIBUTE
> +#  define _INTVARDEF(name, aliasname) \
> +  extern __typeof (name) aliasname __attribute__ ((alias (#name), \
> +						   visibility ("hidden")));
> +# else
> +#  define _INTVARDEF(name, aliasname) \
> +  extern __typeof (name) aliasname __attribute__ ((alias (#name)));
> +# endif
> +# define INTDEF2(name, newname) strong_alias (name, newname##_internal)
> +# define INTVARDEF2(name, newname) _INTVARDEF (name, newname##_internal)
> +#else
> +# define INTUSE(name) name
> +# define INTDEF(name)
> +# define INTVARDEF(name)
> +# define INTDEF2(name, newname)
> +# define INTVARDEF2(name, newname)
> +#endif
> +

Oh no, please don't use those, non-exported internal names should be 
either static or hidden, for some of these we have replacement already 
(hidden_strong_alias was based on the idea here) glibc obsoleted already 
I think INTVARDEF*, we do not have HAVE_VISIBILITY_ATTRIBUTE ... I have 
the feeling that these were the first start before the others were 
implemented.
Use rtld_hidden_proto/def(name) where name is visible, and you need an 
internal (hidden) version as well. if (name) is not visible, then
attribute_hidden/static will do.

Peter

-- 
Peter S. Mazinger <ps dot m at gmx dot net>           ID: 0xA5F059F2
Key fingerprint = 92A4 31E1 56BC 3D5A 2D08  BB6E C389 975E A5F0 59F2




More information about the uClibc mailing list