44 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
| #ifndef __WARNING_H__
 | |
| #define __WARNING_H__
 | |
| 
 | |
| #ifdef HAVE_GNU_LD
 | |
| # ifdef HAVE_ELF
 | |
| 
 | |
| /* We want the .gnu.warning.SYMBOL section to be unallocated.  */
 | |
| #  ifdef HAVE_ASM_PREVIOUS_DIRECTIVE
 | |
| #   define __make_section_unallocated(section_string)   \
 | |
|   asm(".section " section_string "; .previous");
 | |
| #  elif defined (HAVE_ASM_POPSECTION_DIRECTIVE)
 | |
| #   define __make_section_unallocated(section_string)   \
 | |
|   asm(".pushsection " section_string "; .popsection");
 | |
| #  else
 | |
| #   define __make_section_unallocated(section_string)
 | |
| #  endif
 | |
| 
 | |
| #  ifdef HAVE_SECTION_ATTRIBUTES
 | |
| #   define link_warning(symbol, msg)                     \
 | |
|   __make_section_unallocated (".gnu.warning." #symbol)  \
 | |
|   static const char __evoke_link_warning_##symbol[]     \
 | |
|     __attribute__ ((section (".gnu.warning." #symbol))) = msg;
 | |
| #  else
 | |
| #   define link_warning(symbol, msg)
 | |
| #  endif
 | |
| 
 | |
| #else /* !ELF */
 | |
| 
 | |
| #  define link_warning(symbol, msg)             \
 | |
|   asm(".stabs \"" msg "\",30,0,0,0\n"   \
 | |
|       ".stabs \"" __SYMBOL_PREFIX #symbol "\",1,0,0,0\n");
 | |
| # endif
 | |
| #else /* !GNULD */
 | |
| /* We will never be heard; they will all die horribly.  */
 | |
| # define link_warning(symbol, msg)
 | |
| #endif
 | |
| 
 | |
| /* A canned warning for sysdeps/stub functions.  */
 | |
| #define stub_warning(name) \
 | |
|   link_warning (name, \
 | |
|                 "warning: " #name " is not implemented and will always fail")
 | |
| 
 | |
| #endif /* __WARNING_H__ */
 |