|
Message-ID: <20160830212002.GM15995@brightrain.aerifal.cx> Date: Tue, 30 Aug 2016 17:20:02 -0400 From: Rich Felker <dalias@...c.org> To: Per Johansson <per@...th.org> Cc: musl@...ts.openwall.com Subject: Re: syslog.h prioritynames define not compatible with -Wwrite-strings On Thu, Aug 25, 2016 at 09:47:06AM +0200, Per Johansson wrote: > Hello, > > I'm trying to port a code base to musl. I've run into an issue with > prioritynames as defined by syslog.h: > > CODE *pri_code = prioritynames; > > produces > > error: initialization discards 'const' qualifier from pointer target > type [-Werror=discarded-qualifiers] > > This is repeated once per element in the array. > > While the error message points to -Wdiscarded-qualifiers I believe > this is actually due to us using -Wwrite-strings which turns string > literals into type const char* instead of char*. This is a nasty problem with how -Wwrite-strings is implemented. It does not act as a warning option but fundamentally changes the languages semantics in a way that is not C. I have an open bug report against gcc for this: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61579 > I suppose the most compatible solution would be to cast each string > literal to char* in the define. It's either that or use const char* in > the struct, but that's likely to cause issues in other programs. > Or use some trickery to disable the warning I suppose, wouldn't know about that. > > Please CC me on any reply as I'm currently not subscribed. > > Minimal code to reproduce: > > #define SYSLOG_NAMES > #include <syslog.h> > CODE *c = prioritynames; > > Compiles without warning: > gcc -nostdinc -isystem include -isystem obj/include -c test.c > > Adding -Wwrite-strings give warnings: > gcc -Wwrite-strings -nostdinc -isystem include -isystem obj/include -c test.c Based on the above, I don't consider this a bug in musl but a bug in gcc's -Wwrite-strings. However, there are a lot of other problems created by the current implementation of the SYSLOG_NAMES stuff, and it needs to be redone entirely, probably more closely matching how legacy implementations did it (the SYSLOG_NAMES stuff is all legacy cruft anyway and shouldn't be used in modern code). Rich
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.