File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / libiconv / build-aux / link-warning.h
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 22:57:49 2012 UTC (12 years, 4 months ago) by misho
Branches: libiconv, MAIN
CVS tags: v1_13_1, HEAD
libiconv

    1: /* GL_LINK_WARNING("literal string") arranges to emit the literal string as
    2:    a linker warning on most glibc systems.
    3:    We use a linker warning rather than a preprocessor warning, because
    4:    #warning cannot be used inside macros.  */
    5: #ifndef GL_LINK_WARNING
    6:   /* This works on platforms with GNU ld and ELF object format.
    7:      Testing __GLIBC__ is sufficient for asserting that GNU ld is in use.
    8:      Testing __ELF__ guarantees the ELF object format.
    9:      Testing __GNUC__ is necessary for the compound expression syntax.  */
   10: # if defined __GLIBC__ && defined __ELF__ && defined __GNUC__
   11: #  define GL_LINK_WARNING(message) \
   12:      GL_LINK_WARNING1 (__FILE__, __LINE__, message)
   13: #  define GL_LINK_WARNING1(file, line, message) \
   14:      GL_LINK_WARNING2 (file, line, message)  /* macroexpand file and line */
   15: #  define GL_LINK_WARNING2(file, line, message) \
   16:      GL_LINK_WARNING3 (file ":" #line ": warning: " message)
   17: #  define GL_LINK_WARNING3(message) \
   18:      ({ static const char warning[sizeof (message)]		\
   19:           __attribute__ ((__unused__,				\
   20:                           __section__ (".gnu.warning"),		\
   21:                           __aligned__ (1)))			\
   22:           = message "\n";					\
   23:         (void)0;						\
   24:      })
   25: # else
   26: #  define GL_LINK_WARNING(message) ((void) 0)
   27: # endif
   28: #endif

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>