diff options
Diffstat (limited to 'libgloss/libnosys/warning.h')
-rw-r--r-- | libgloss/libnosys/warning.h | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/libgloss/libnosys/warning.h b/libgloss/libnosys/warning.h new file mode 100644 index 0000000..99f3e0d --- /dev/null +++ b/libgloss/libnosys/warning.h @@ -0,0 +1,39 @@ +#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 + +# 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 /* !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__ */ |