diff options
author | Zack Weinberg <zackw@panix.com> | 2017-04-03 08:45:41 -0400 |
---|---|---|
committer | Zack Weinberg <zackw@panix.com> | 2017-04-07 07:52:29 -0400 |
commit | 0f3be8721a86299600eae2d266934f661bf7c990 (patch) | |
tree | 51085f8f01905cd53c041869b25ed3688ad59abd | |
parent | aeacb9f9127cff0ed099026156ca35c025f343b7 (diff) | |
download | glibc-0f3be8721a86299600eae2d266934f661bf7c990.tar glibc-0f3be8721a86299600eae2d266934f661bf7c990.tar.gz glibc-0f3be8721a86299600eae2d266934f661bf7c990.tar.bz2 glibc-0f3be8721a86299600eae2d266934f661bf7c990.zip |
getopt: merge _GL_UNUSED annotations from gnulib
gnulib now has annotations on at least some functions to cater to
compilation with -Wunused-parameter. In order to follow suit cleanly,
I've added to libc-symbols.h some of the _GL_* macros that
gnulib-common.m4 puts into config.h. (I don't think they belong in
sys/cdefs.h, at least not without further thought.)
At this point all gnulib-side changes to getopt.c have been merged.
* include/libc-symbols.h: For gnulib compatibility, define
_GL_UNUSED, _GL_UNUSED_LABEL, _GL_ATTRIBUTE_PURE, and
_GL_ATTRIBUTE_CONST.
* posix/getopt.c (_getopt_initialize): Mark argc and argv
parameters with _GL_UNUSED.
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | include/libc-symbols.h | 43 | ||||
-rw-r--r-- | posix/getopt.c | 3 |
3 files changed, 51 insertions, 1 deletions
@@ -1,5 +1,11 @@ 2017-04-07 Zack Weinberg <zackw@panix.com> + * include/libc-symbols.h: For gnulib compatibility, define + _GL_UNUSED, _GL_UNUSED_LABEL, _GL_ATTRIBUTE_PURE, and + _GL_ATTRIBUTE_CONST. + * posix/getopt.c (_getopt_initialize): Mark argc and argv + parameters with _GL_UNUSED. + * posix/getopt.c: When used standalone, define __libc_use_alloca as always false and alloca to abort if called. (process_long_option): Rewrite handling of ambiguous long options diff --git a/include/libc-symbols.h b/include/libc-symbols.h index 0783ade0b3..18f26b2e61 100644 --- a/include/libc-symbols.h +++ b/include/libc-symbols.h @@ -892,5 +892,48 @@ for linking") #else # define inhibit_loop_to_libcall #endif + +/* These macros facilitate sharing source files with gnulib. + + They are here instead of sys/cdefs.h because they should not be + used in public header files. + + Their definitions should be kept consistent with the definitions in + gnulib-common.m4, but it is not necessary to cater to old non-GCC + compilers, since they will only be used while building glibc itself. + (Note that _GNUC_PREREQ cannot be used in this file.) */ + +/* Define as a marker that can be attached to declarations that might not + be used. This helps to reduce warnings, such as from + GCC -Wunused-parameter. */ +#if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) +# define _GL_UNUSED __attribute__ ((__unused__)) +#else +# define _GL_UNUSED +#endif + +/* gcc supports the "unused" attribute on possibly unused labels, and + g++ has since version 4.5. Note to support C++ as well as C, + _GL_UNUSED_LABEL should be used with a trailing ; */ +#if !defined __cplusplus || __GNUC__ > 4 \ + || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) +# define _GL_UNUSED_LABEL _GL_UNUSED +#else +# define _GL_UNUSED_LABEL +#endif + +/* The __pure__ attribute was added in gcc 2.96. */ +#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#else +# define _GL_ATTRIBUTE_PURE /* empty */ +#endif + +/* The __const__ attribute was added in gcc 2.95. */ +#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) +# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) +#else +# define _GL_ATTRIBUTE_CONST /* empty */ +#endif #endif /* libc-symbols.h */ diff --git a/posix/getopt.c b/posix/getopt.c index 79c81ae2f1..6671787b6f 100644 --- a/posix/getopt.c +++ b/posix/getopt.c @@ -379,7 +379,8 @@ process_long_option (int argc, char **argv, const char *optstring, /* Initialize internal data upon the first call to getopt. */ static const char * -_getopt_initialize (int argc, char **argv, const char *optstring, +_getopt_initialize (int argc _GL_UNUSED, + char **argv _GL_UNUSED, const char *optstring, struct _getopt_data *d, int posixly_correct) { /* Start processing options with ARGV-element 1 (since ARGV-element 0 |