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