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