| #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 "\n .previous"); |
| # elif defined (HAVE_ASM_POPSECTION_DIRECTIVE) |
| # define __make_section_unallocated(section_string) \ |
| asm(".pushsection " section_string "\n .popsection"); |
| # else |
| # define __make_section_unallocated(section_string) |
| # endif |
| |
| # ifdef HAVE_SECTION_ATTRIBUTES |
| # define link_warning(symbol, msg) \ |
| static const char __evoke_link_warning_##symbol[] \ |
| __attribute__ ((section (".gnu.warning." __SYMBOL_PREFIX #symbol), \ |
| __used__)) = 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. |
| The GNU linker prepends a "warning: " string. */ |
| #define stub_warning(name) \ |
| link_warning (name, \ |
| #name " is not implemented and will always fail") |
| |
| #endif /* __WARNING_H__ */ |