Received: by 2002:a05:6a10:eb17:0:0:0:0 with SMTP id hx23csp294386pxb; Thu, 9 Sep 2021 00:45:25 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxP26Osi3QtEyInMroCGYlcG/Jds4yKR+oRpITpVqSQuQoKdKHYs3+HW9JA0abFA0ISEAKI X-Received: by 2002:a92:d84a:: with SMTP id h10mr1408524ilq.48.1631173524869; Thu, 09 Sep 2021 00:45:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1631173524; cv=none; d=google.com; s=arc-20160816; b=ZXMvFJMVr9L6DTfrIXoWsI46PU5i3a3zX6APlAIUgZBJv1kwJpu/wLZ6XF79AWyWvA Evx8UoB6RrVOdYwOCs5Gtv0rPuo1aTp8Jvpjy5XHMrqKZLUDdbE3loNSciOcE7ZN8a1t JNTbs4PyWjNnKMhZ7pSXRHfFBCaDaDM25ZepjnKIMRAxTlVrWJe3m4JS4RrJyCCmCAes UVfDsH3u4QK8qC88HmuXsBnZzNmY+/O6seQUzQe0+TaPcrft+hYdWFB8muMIurONS1OR ORBGs0NMs9UuWQM2R4c1ZCuwT3lYPyLmlvcIXCrMaTPLFllLtUK1DmQyY0mDWEBUcPEA 5Xyw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:message-id:date:subject:cc:to:from; bh=oMmbgzw1qpVUlN0ruMmyrJDXD+m7zOfmWzeI8MoXgeY=; b=b3iTda6HOWRVdjYyLlYsTR4LN2M9DjVCGfdE8uIJRDa5zJBByabnoA0MGTzR64XdZ8 pOuO3A8igOXoY1XIUSNCSHmMCTjr8svRf0sRJeAJiQ801qv56UbNQBPOgIXSoS6QcTW/ ZBCw1DPuR3aS2aCxgGF0xLJcLP78nhUF/h/Ebap5BRhd60GfYNSR90S+TG0LnfGt5iGW SP4PKTCDXlMlFJ38IZ6Qq/g68rRHV8RUKUBK6l8F8ZtAeDP8Zvo4C4IWaWIl6gxu2hD4 XnlvWQWi/Bti4tZZ6NPjroXgtOXEPoht2068gxiKTF/M0fMEaryMsLMSc/XFX3g2G3pm /mUw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=alibaba.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id m12si1112576ioj.96.2021.09.09.00.45.14; Thu, 09 Sep 2021 00:45:24 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=alibaba.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1352687AbhIIHoC (ORCPT + 99 others); Thu, 9 Sep 2021 03:44:02 -0400 Received: from out30-57.freemail.mail.aliyun.com ([115.124.30.57]:51510 "EHLO out30-57.freemail.mail.aliyun.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232549AbhIIHoC (ORCPT ); Thu, 9 Sep 2021 03:44:02 -0400 X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R351e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=e01e04395;MF=ashimida@linux.alibaba.com;NM=1;PH=DS;RN=8;SR=0;TI=SMTPD_---0UnmHPCV_1631173364; Received: from localhost(mailfrom:ashimida@linux.alibaba.com fp:SMTPD_---0UnmHPCV_1631173364) by smtp.aliyun-inc.com(127.0.0.1); Thu, 09 Sep 2021 15:42:51 +0800 From: ashimida To: masahiroy@kernel.org, michal.lkml@markovi.net, nathan@kernel.org, ndesaulniers@google.com Cc: linux-kbuild@vger.kernel.org, linux-kernel@vger.kernel.org, clang-built-linux@googlegroups.com, ashimida Subject: [PATCH] [RFC] kbuild: add CLANG_TRIPLE to prevent clang from compiling with wrong --target Date: Thu, 9 Sep 2021 15:42:43 +0800 Message-Id: <1631173363-40160-1-git-send-email-ashimida@linux.alibaba.com> X-Mailer: git-send-email 2.7.4 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Kernel compiled with tool chain CROSS_COMPILE=aarch64-linux-android- will panic during the startup phase. Clang's --target option comes from $(CROSS_COMPILE). At the time -fstack-protector-strong is enabled, and compiled with command: make CC=clang HOSTCC=clang ARCH=arm64 CROSS_COMPILE=aarch64-linux-android- clang will insert code like: mrs x8, TPIDR_EL0 //default value is zero str x8, [sp] ldr x8, [x8, #40] //access addr 0x40 instead of the code that accesses __stack_chk_guard to get the canary, which will cause the kernel to crash due to 0x40 address access. This patch (from android) is used to remind the user that current tool chain cannot be used as the "--target" of clang, the user should specify an additional "--target" through CLANG_TRIPLE. Signed-off-by: ashimida --- Makefile | 6 +++++- scripts/clang-android.sh | 4 ++++ 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100755 scripts/clang-android.sh diff --git a/Makefile b/Makefile index 61741e9..09bb314 100644 --- a/Makefile +++ b/Makefile @@ -586,7 +586,11 @@ CC_VERSION_TEXT = $(subst $(pound),,$(shell $(CC) --version 2>/dev/null | head - ifneq ($(findstring clang,$(CC_VERSION_TEXT)),) ifneq ($(CROSS_COMPILE),) -CLANG_FLAGS += --target=$(notdir $(CROSS_COMPILE:%-=%)) +CLANG_TRIPLE ?= $(CROSS_COMPILE) +CLANG_FLAGS += --target=$(notdir $(CLANG_TRIPLE:%-=%)) +ifeq ($(shell $(srctree)/scripts/clang-android.sh $(CC) $(CLANG_FLAGS)), y) +$(error "Clang with Android --target detected. Did you specify CLANG_TRIPLE?") +endif endif ifeq ($(LLVM_IAS),1) CLANG_FLAGS += -integrated-as diff --git a/scripts/clang-android.sh b/scripts/clang-android.sh new file mode 100755 index 0000000..9186c4f --- /dev/null +++ b/scripts/clang-android.sh @@ -0,0 +1,4 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 + +$* -dM -E - &1 | grep -q __ANDROID__ && echo "y" -- 2.7.4