linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Sam Ravnborg <sam@ravnborg.org>
To: behanw@converseincode.com
Cc: mmarek@suse.cz, tglx@linutronix.de, mingo@redhat.com,
	hpa@zytor.com, x86@kernel.org, sparse@chrisli.org,
	linux-kbuild@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-sparse@vger.kernel.org, torvalds@linux-foundation.org,
	dwmw2@infradead.org, pageexec@freemail.hu,
	"Jan-Simon Möller" <dl9pf@gmx.de>,
	"Mark Charlebois" <charlebm@gmail.com>
Subject: Re: [PATCH 1/5] kbuild: LLVMLinux: Add Kbuild support for building kernel with Clang
Date: Sun, 9 Mar 2014 22:58:34 +0100	[thread overview]
Message-ID: <20140309215834.GA29655@ravnborg.org> (raw)
In-Reply-To: <1393376923-21892-2-git-send-email-behanw@converseincode.com>

On Tue, Feb 25, 2014 at 05:08:39PM -0800, behanw@converseincode.com wrote:
> From: Behan Webster <behanw@converseincode.com>
> 
> Add support to toplevel Makefile for compiling with clang, both for
> HOSTCC and CC. Use cc-option to prevent gcc option from breaking clang, and
> from clang options from breaking gcc.
> 
> Clang 3.4 semantics are the same as gcc semantics for unsupported flags. For
> unsupported warnings clang 3.4 returns true but shows a warning and gcc shows
> a warning and returns false.
> 
> Signed-off-by: Behan Webster <behanw@converseincode.com>
> Signed-off-by: Jan-Simon Möller <dl9pf@gmx.de>
> Signed-off-by: Mark Charlebois <charlebm@gmail.com>
> Cc: PaX Team <pageexec@freemail.hu>
> ---
>  Makefile | 32 +++++++++++++++++++++++++++++++-
>  1 file changed, 31 insertions(+), 1 deletion(-)
> 
> diff --git a/Makefile b/Makefile
> index 831b36a..c4ab30d 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -247,6 +247,15 @@ HOSTCXX      = g++
>  HOSTCFLAGS   = -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer
>  HOSTCXXFLAGS = -O2
>  
> +ifeq ($(shell $(HOSTCC) -v 2>&1 | grep -c "clang version"), 1)
> +HOSTCOMPILER := clang
> +HOSTCFLAGS  += -Wno-unused-value -Wno-unused-parameter \
> +		-Wno-missing-field-initializers -fno-delete-null-pointer-checks
> +else
> +HOSTCOMPILER := gcc
> +endif
> +export HOSTCOMPILER
I see no use of HOSTCOMPLIER anywhere in this patchset not in the kernel. Can we drop this?

> +
>  # Decide whether to build built-in, modular, or both.
>  # Normally, just do built-in.
>  
> @@ -323,6 +332,12 @@ endif
>  
>  export quiet Q KBUILD_VERBOSE
>  
> +ifeq ($(shell $(CC) -v 2>&1 | grep -c "clang version"), 1)
> +COMPILER := clang
> +else
> +COMPILER := gcc
> +endif
> +export COMPILER
Likewise - COMPILER seems unsued- can it be dropped?

>  
>  # Look for make include files relative to root of kernel src
>  MAKEFLAGS += --include-dir=$(srctree)
> @@ -382,7 +397,7 @@ KBUILD_CFLAGS   := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
>  		   -fno-strict-aliasing -fno-common \
>  		   -Werror-implicit-function-declaration \
>  		   -Wno-format-security \
> -		   -fno-delete-null-pointer-checks
> +		   $(call cc-option,-fno-delete-null-pointer-checks,)
>  KBUILD_AFLAGS_KERNEL :=
>  KBUILD_CFLAGS_KERNEL :=
>  KBUILD_AFLAGS   := -D__ASSEMBLY__
> @@ -620,9 +635,24 @@ else
>  endif
>  KBUILD_CFLAGS += $(stackp-flag)
>  
> +ifeq ($(COMPILER),clang)
Except that COMPILER is used here. But this does not warrant the export.

> +KBUILD_CPPFLAGS += $(call cc-option,-Qunused-arguments,)
Is this really needed today?
https://bugzilla.mozilla.org/show_bug.cgi?id=717713 suggest that this is default.

> +KBUILD_CPPFLAGS += $(call cc-option,-Wno-unknown-warning-option,)
https://bugzilla.mozilla.org/show_bug.cgi?id=731316 seems to suggest this is default


> +KBUILD_CFLAGS += $(call cc-disable-warning, unused-variable)
> +KBUILD_CFLAGS += $(call cc-disable-warning, format-invalid-specifier)
> +KBUILD_CFLAGS += $(call cc-disable-warning, gnu)
Is it really justified to disable these warnings?
# of warnign for a defconfig build would be a nice figure to judge from.

> +# Quiet clang warning: comparison of unsigned expression < 0 is always false
> +KBUILD_CFLAGS += $(call cc-disable-warning, tautological-compare)
Same with this.

> +# CLANG uses a _MergedGlobals as optimization, but this breaks modpost, as the
> +# source of a reference will be _MergedGlobals and not on of the whitelisted names.
> +# See modpost pattern 2
> +KBUILD_CFLAGS += $(call cc-option, -mno-global-merge,)
Should we fix modpost?


	Sam

  reply	other threads:[~2014-03-09 21:58 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-26  1:08 [PATCH 0/5] kbuild: LLVMLinux: Initial updates to kbuild to enable the kernel to be compiled with clang/LLVM behanw
2014-02-26  1:08 ` [PATCH 1/5] kbuild: LLVMLinux: Add Kbuild support for building kernel with Clang behanw
2014-03-09 21:58   ` Sam Ravnborg [this message]
2014-03-11  6:58     ` Behan Webster
2014-03-11 21:26     ` [PATCH 1/5 v2] " behanw
2014-02-26  1:08 ` [PATCH 2/5] kbuild: LLVMLinux: Adapt warnings for compilation with clang behanw
2014-02-26  1:17   ` Dave Jones
2014-02-26  1:31     ` Behan Webster
2014-02-26  1:34       ` H. Peter Anvin
2014-02-26  2:38     ` Behan Webster
2014-03-06 17:59   ` [PATCH 2/5 v2] " behanw
2014-02-26  1:08 ` [PATCH 3/5] kbuild: LLVMLinux: Fix LINUX_COMPILER definition script " behanw
2014-02-26  1:08 ` [PATCH 4/5] LLVMLinux: Add support for clang to compiler.h and new compiler-clang.h behanw
2014-02-26  1:08 ` [PATCH 5/5] x86 kbuild: LLVMLinux: More cc-options added for clang behanw
2014-02-26  1:32   ` H. Peter Anvin
2014-02-26  1:44     ` Behan Webster
2014-03-06 18:03     ` [PATCH 5/5 v2] " behanw

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140309215834.GA29655@ravnborg.org \
    --to=sam@ravnborg.org \
    --cc=behanw@converseincode.com \
    --cc=charlebm@gmail.com \
    --cc=dl9pf@gmx.de \
    --cc=dwmw2@infradead.org \
    --cc=hpa@zytor.com \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sparse@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=mmarek@suse.cz \
    --cc=pageexec@freemail.hu \
    --cc=sparse@chrisli.org \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.org \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).