1f074036424618c130dacb3464465a8b40bffef5Stephen Smalley#ifndef _SELINUX_DSO_H
2f074036424618c130dacb3464465a8b40bffef5Stephen Smalley#define _SELINUX_DSO_H	1
3f074036424618c130dacb3464465a8b40bffef5Stephen Smalley
4f074036424618c130dacb3464465a8b40bffef5Stephen Smalley#ifdef SHARED
5f074036424618c130dacb3464465a8b40bffef5Stephen Smalley# define hidden __attribute__ ((visibility ("hidden")))
6f074036424618c130dacb3464465a8b40bffef5Stephen Smalley# define hidden_proto(fct) __hidden_proto (fct, fct##_internal)
7f074036424618c130dacb3464465a8b40bffef5Stephen Smalley# define __hidden_proto(fct, internal)	\
8f074036424618c130dacb3464465a8b40bffef5Stephen Smalley     extern __typeof (fct) internal;	\
9f074036424618c130dacb3464465a8b40bffef5Stephen Smalley     extern __typeof (fct) fct __asm (#internal) hidden;
10f074036424618c130dacb3464465a8b40bffef5Stephen Smalley# if defined(__alpha__) || defined(__mips__)
11f074036424618c130dacb3464465a8b40bffef5Stephen Smalley#  define hidden_def(fct) \
12f074036424618c130dacb3464465a8b40bffef5Stephen Smalley     asm (".globl " #fct "\n" #fct " = " #fct "_internal");
13f074036424618c130dacb3464465a8b40bffef5Stephen Smalley# else
14f074036424618c130dacb3464465a8b40bffef5Stephen Smalley#  define hidden_def(fct) \
15f074036424618c130dacb3464465a8b40bffef5Stephen Smalley     asm (".globl " #fct "\n.set " #fct ", " #fct "_internal");
16f074036424618c130dacb3464465a8b40bffef5Stephen Smalley#endif
17f074036424618c130dacb3464465a8b40bffef5Stephen Smalley#else
18f074036424618c130dacb3464465a8b40bffef5Stephen Smalley# define hidden
19f074036424618c130dacb3464465a8b40bffef5Stephen Smalley# define hidden_proto(fct)
20f074036424618c130dacb3464465a8b40bffef5Stephen Smalley# define hidden_def(fct)
21f074036424618c130dacb3464465a8b40bffef5Stephen Smalley#endif
22f074036424618c130dacb3464465a8b40bffef5Stephen Smalley
23f074036424618c130dacb3464465a8b40bffef5Stephen Smalley#endif
24