diff mbox

[v2] kbuild: clang: add -no-integrated-as to KBUILD_[AC]FLAGS

Message ID 20170425224735.131835-1-mka@chromium.org (mailing list archive)
State New, archived
Headers show

Commit Message

Matthias Kaehlcke April 25, 2017, 10:47 p.m. UTC
From: Michael Davidson <md@google.com>

The Linux Kernel relies on GCC's acceptance of inline assembly as an
opaque object which will not have any validation performed on the content.
The current behaviour in LLVM is to perform validation of the contents by
means of parsing the input if the MC layer can handle it.

Disable clangs integrated assembler and use the GNU assembler instead.

Wording-mostly-from: Saleem Abdulrasool <compnerd@compnerd.org>
Signed-off-by: Michael Davidson <md@google.com>
Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
---
Changes in v2:
- Added paragraph explaining why this change is needed
- Updated subject (was: Makefile, LLVM: add -no-integrated-as to KBUILD_[AC]FLAGS)

(agreed with Michael to update the patch)

 Makefile | 2 ++
 1 file changed, 2 insertions(+)

Comments

Masahiro Yamada April 28, 2017, 12:36 a.m. UTC | #1
2017-04-26 7:47 GMT+09:00 Matthias Kaehlcke <mka@chromium.org>:
> From: Michael Davidson <md@google.com>
>
> The Linux Kernel relies on GCC's acceptance of inline assembly as an
> opaque object which will not have any validation performed on the content.
> The current behaviour in LLVM is to perform validation of the contents by
> means of parsing the input if the MC layer can handle it.
>
> Disable clangs integrated assembler and use the GNU assembler instead.
>
> Wording-mostly-from: Saleem Abdulrasool <compnerd@compnerd.org>
> Signed-off-by: Michael Davidson <md@google.com>
> Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
> ---


Applied to linux-kbuild/kbuild.  Thanks!
diff mbox

Patch

diff --git a/Makefile b/Makefile
index 5039b9148d15..3832c8243334 100644
--- a/Makefile
+++ b/Makefile
@@ -710,6 +710,8 @@  KBUILD_CFLAGS += $(call cc-disable-warning, tautological-compare)
 # See modpost pattern 2
 KBUILD_CFLAGS += $(call cc-option, -mno-global-merge,)
 KBUILD_CFLAGS += $(call cc-option, -fcatch-undefined-behavior)
+KBUILD_CFLAGS += $(call cc-option, -no-integrated-as)
+KBUILD_AFLAGS += $(call cc-option, -no-integrated-as)
 else
 
 # These warnings generated too much noise in a regular build.