|  | @@ -1,6 +1,7 @@
 | 
	
		
			
				|  |  |  #ifndef _CDEFS_COMPAT_H_
 | 
	
		
			
				|  |  |  #define	_CDEFS_COMPAT_H_
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +#if !defined(__BEGIN_DECLS)
 | 
	
		
			
				|  |  |  #if defined(__cplusplus)
 | 
	
		
			
				|  |  |  #define	__BEGIN_DECLS	extern "C" {
 | 
	
		
			
				|  |  |  #define	__END_DECLS	}
 | 
	
	
		
			
				|  | @@ -8,6 +9,7 @@
 | 
	
		
			
				|  |  |  #define	__BEGIN_DECLS
 | 
	
		
			
				|  |  |  #define	__END_DECLS
 | 
	
		
			
				|  |  |  #endif
 | 
	
		
			
				|  |  | +#endif /* !defined(__BEGIN_DECLS) */
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  #ifdef __GNUC__
 | 
	
		
			
				|  |  |  #ifndef __strong_reference
 | 
	
	
		
			
				|  | @@ -25,18 +27,22 @@
 | 
	
		
			
				|  |  |  #define	__weak_reference(sym,alias)	\
 | 
	
		
			
				|  |  |  	__asm__(".weak " #alias);	\
 | 
	
		
			
				|  |  |  	__asm__(".equ "  #alias ", " #sym)
 | 
	
		
			
				|  |  | +#ifndef __warn_references
 | 
	
		
			
				|  |  |  #define	__warn_references(sym,msg)	\
 | 
	
		
			
				|  |  |  	__asm__(".section .gnu.warning." #sym);	\
 | 
	
		
			
				|  |  |  	__asm__(".asciz \"" msg "\"");	\
 | 
	
		
			
				|  |  |  	__asm__(".previous")
 | 
	
		
			
				|  |  | +#endif /* __warn_references */
 | 
	
		
			
				|  |  |  #else
 | 
	
		
			
				|  |  |  #define	__weak_reference(sym,alias)	\
 | 
	
		
			
				|  |  |  	__asm__(".weak alias");		\
 | 
	
		
			
				|  |  |  	__asm__(".equ alias, sym")
 | 
	
		
			
				|  |  | +#ifndef __warn_references
 | 
	
		
			
				|  |  |  #define	__warn_references(sym,msg)	\
 | 
	
		
			
				|  |  |  	__asm__(".section .gnu.warning.sym"); \
 | 
	
		
			
				|  |  |  	__asm__(".asciz \"msg\"");	\
 | 
	
		
			
				|  |  |  	__asm__(".previous")
 | 
	
		
			
				|  |  | +#endif	/* __warn_references */
 | 
	
		
			
				|  |  |  #endif	/* __STDC__ */
 | 
	
		
			
				|  |  |  #elif defined(__clang__) /* CLANG */
 | 
	
		
			
				|  |  |  #ifdef __STDC__
 | 
	
	
		
			
				|  | @@ -53,16 +59,20 @@
 | 
	
		
			
				|  |  |  #define __weak_reference(sym,alias)	\
 | 
	
		
			
				|  |  |  	__asm__(".stabs \"_" #alias "\",11,0,0,0");	\
 | 
	
		
			
				|  |  |  	__asm__(".stabs \"_" #sym "\",1,0,0,0")
 | 
	
		
			
				|  |  | +#ifndef __warn_references
 | 
	
		
			
				|  |  |  #define __warn_references(sym,msg)	\
 | 
	
		
			
				|  |  |  	__asm__(".stabs \"" msg "\",30,0,0,0");		\
 | 
	
		
			
				|  |  |  	__asm__(".stabs \"_" #sym "\",1,0,0,0")
 | 
	
		
			
				|  |  | +#endif /* __warn_references */
 | 
	
		
			
				|  |  |  #else
 | 
	
		
			
				|  |  |  #define __weak_reference(sym,alias)	\
 | 
	
		
			
				|  |  |  	__asm__(".stabs \"_/**/alias\",11,0,0,0");	\
 | 
	
		
			
				|  |  |  	__asm__(".stabs \"_/**/sym\",1,0,0,0")
 | 
	
		
			
				|  |  | +#ifndef __warn_references
 | 
	
		
			
				|  |  |  #define __warn_references(sym,msg)	\
 | 
	
		
			
				|  |  |  	__asm__(".stabs msg,30,0,0,0");			\
 | 
	
		
			
				|  |  |  	__asm__(".stabs \"_/**/sym\",1,0,0,0")
 | 
	
		
			
				|  |  | +#endif	/* __warn_references */
 | 
	
		
			
				|  |  |  #endif	/* __STDC__ */
 | 
	
		
			
				|  |  |  #endif	/* __ELF__ */
 | 
	
		
			
				|  |  |  #endif  /* __weak_reference */
 |