From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Christoph Egger" Subject: Re: [PATCH] Add -Wcast-qual flag Date: Thu, 21 Dec 2006 12:12:31 +0100 Message-ID: <200612211212.31700.Christoph.Egger@amd.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-devel@lists.xensource.com Cc: Keir Fraser List-Id: xen-devel@lists.xenproject.org On Thursday 21 December 2006 11:41, Keir Fraser wrote: > On 21/12/06 10:05, "Christoph Egger" wrote: > > The xen-cast.diff adds the -Wcast-qual flag. > > We don't enable this flag precisely because we end up needing to scatter > const all over the place like confetti. That doesn't imply that this is bad. Compilers may generate better code. > I'm not convinced that use of const improves code quality. In my experience, exactly this will happen. > I fear we'd end up with 'const foo * const bar' all > over the place -- ugly and confusing to most programmers (who frequently > mess up const placement, in my experience). Exactly these programmers will stop doing this, when the compiler tells them. With -Wcast-qual you find code that does things like this: int foo(const char *str) { char *s = str; int i; .... s[i] = '\0'; } Modifying read-only memory is IMO never a good idea, in particular, when it is shared with something else. And there are indeed places in the xen code, where this happens. (Example: Look how canonicalize() is used in tools/xenstored/*, Look at copy_to_user_hvm() in xen/arch/x86/hvm/platform.c ) Please have a closer look at the patches.