Assaf Gordon wrote:
the following occur on Mac OS X 10.10.4 (and perhaps others, didn't check): === CC error.o error.c:386:12: error: data argument not used by format string [-Werror,-Wformat-extra-args] file_name, line_number); ^
> ...
CC memrchr.o memrchr.c:71:18: error: cast from 'const unsigned char *' to 'const longword *' (aka 'const unsigned long *') increases required alignment from 1 to 8 [-Werror,-Wcast-align] longword_ptr = (const longword *) char_ptr; ^~~~~~~~~~~~~~~~~~~~~~~~~~~
The above are longstanding Clang false alarms, not easily worked around as far as I know. We can safely ignore them.
=== CC gzip.o gzip.c:1770:20: error: adding 'int' to a string does not append to the string [-Werror,-Wstring-plus-int] + 4 * tm->tm_mon), ^~~~~~~~~~~~~~~~ gzip.c:1770:20: note: use array indexing to silence this warning + 4 * tm->tm_mon), ^
Thanks, I reproduced that with clang on Fedora 23 and worked around it by installing the attached patch.
>From 06b1a911a8b949cb1ea0226e9c2e8dfe2464fafe Mon Sep 17 00:00:00 2001 From: Paul Eggert <egg...@cs.ucla.edu> Date: Sun, 6 Mar 2016 16:47:22 -0800 Subject: [PATCH] gzip: pacify clang * gzip.c (do_list): Use 2D array of char for month abbreviations, as this is clearer anyway, and it pacifies Clang. Problem reported by Assaf Gordon in: http://bugs.gnu.org/22900#40 --- gzip.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/gzip.c b/gzip.c index 1618f19..61b19fb 100644 --- a/gzip.c +++ b/gzip.c @@ -1762,12 +1762,13 @@ local void do_list(ifd, method) if (verbose) { + static char const month_abbr[][4] + = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", + "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; struct tm *tm = localtime (&time_stamp.tv_sec); printf ("%5s %08lx ", methods[method], crc); if (tm) - printf ("%s%3d %02d:%02d ", - ("Jan\0Feb\0Mar\0Apr\0May\0Jun\0Jul\0Aug\0Sep\0Oct\0Nov\0Dec" - + 4 * tm->tm_mon), + printf ("%s%3d %02d:%02d ", month_abbr[tm->tm_mon], tm->tm_mday, tm->tm_hour, tm->tm_min); else printf ("??? ?? ??:?? "); -- 2.5.0