113cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle#ifndef _SELINUX_DSO_H
213cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle#define _SELINUX_DSO_H	1
313cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle
413cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle#ifdef SHARED
513cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle# define hidden __attribute__ ((visibility ("hidden")))
613cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle# define hidden_proto(fct) __hidden_proto (fct, fct##_internal)
713cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle# define __hidden_proto(fct, internal)	\
813cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle     extern __typeof (fct) internal;	\
913cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle     extern __typeof (fct) fct __asm (#internal) hidden;
1013cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle# if defined(__alpha__) || defined(__mips__)
1113cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle#  define hidden_def(fct) \
1213cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle     asm (".globl " #fct "\n" #fct " = " #fct "_internal");
1313cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle# else
1413cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle#  define hidden_def(fct) \
1513cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle     asm (".globl " #fct "\n.set " #fct ", " #fct "_internal");
1613cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle#endif
1713cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle#else
1813cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle# define hidden
1913cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle# define hidden_proto(fct)
2013cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle# define hidden_def(fct)
2113cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle#endif
2213cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle
2313cd4c8960688af11ad23b4c946149015c80d54Joshua Brindle#endif
24