diff options
author | Bruno Haible <bruno@clisp.org> | 2011-07-12 11:41:24 +0200 |
---|---|---|
committer | Bruno Haible <bruno@clisp.org> | 2011-07-12 11:58:42 +0200 |
commit | 213fd247515dc012d7ceb3a7b16ead96facae9d6 (patch) | |
tree | bd137827eb79bed4a66a21c737265e54f3d65fd9 /build-aux/snippet | |
parent | 6045c2ba7c6a9fb040d41abd78765bfad437a08f (diff) | |
download | gnulib-213fd247515dc012d7ceb3a7b16ead96facae9d6.tar.gz |
Rename module 'link-warning' to 'snippet/link-warning'.
* modules/snippet/link-warning: Renamed from modules/link-warning.
(Files, Makefile.am): Update.
* build-aux/snippet/link-warning.h: Renamed from
build-aux/link-warning.h.
* MODULES.html.sh (Support for building libraries and executables):
Update.
Diffstat (limited to 'build-aux/snippet')
-rw-r--r-- | build-aux/snippet/link-warning.h | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/build-aux/snippet/link-warning.h b/build-aux/snippet/link-warning.h new file mode 100644 index 0000000000..84708ffdc6 --- /dev/null +++ b/build-aux/snippet/link-warning.h @@ -0,0 +1,49 @@ +/* A C macro for emitting link time warnings. + Copyright (C) 1995, 1997, 2000, 2002-2003, 2007, 2009-2011 Free Software + Foundation, Inc. + + This program is free software: you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published + by the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#if @HAVE_FEATURES_H@ +# include <features.h> /* for __GLIBC__, __UCLIBC__ */ +#endif + +/* GL_LINK_WARNING("literal string") arranges to emit the literal string as + a linker warning on most glibc systems. + We use a linker warning rather than a preprocessor warning, because + #warning cannot be used inside macros. */ +#ifndef GL_LINK_WARNING + /* This works on platforms with GNU ld and ELF object format. + Testing __GLIBC__ is sufficient for asserting that GNU ld is in use. + Testing __ELF__ guarantees the ELF object format. + Testing __GNUC__ is necessary for the compound expression syntax. */ +# if (defined __GLIBC__ || defined __UCLIBC__) && defined __ELF__ && defined __GNUC__ +# define GL_LINK_WARNING(message) \ + GL_LINK_WARNING1 (__FILE__, __LINE__, message) +# define GL_LINK_WARNING1(file, line, message) \ + GL_LINK_WARNING2 (file, line, message) /* macroexpand file and line */ +# define GL_LINK_WARNING2(file, line, message) \ + GL_LINK_WARNING3 (file ":" #line ": warning: " message) +# define GL_LINK_WARNING3(message) \ + ({ static const char warning[sizeof (message)] \ + __attribute__ ((__unused__, \ + __section__ (".gnu.warning"), \ + __aligned__ (1))) \ + = message "\n"; \ + (void)0; \ + }) +# else +# define GL_LINK_WARNING(message) ((void) 0) +# endif +#endif |