Received: by 2002:a25:c593:0:0:0:0:0 with SMTP id v141csp1229036ybe; Wed, 11 Sep 2019 11:24:08 -0700 (PDT) X-Google-Smtp-Source: APXvYqyo7PZlzwbn0bnTjVyghg/NMCnmydBfaj2fKqEyW4V/SaVY1RUSgY6g+JHtDA4MUk7R0cs8 X-Received: by 2002:a17:906:529a:: with SMTP id c26mr31275339ejm.232.1568226248572; Wed, 11 Sep 2019 11:24:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1568226248; cv=none; d=google.com; s=arc-20160816; b=f3E+HgbxvQS3sybWjmS9+pLtjgI7NaWSFwdMLwDUFXYozDbUFE87IRZ5TwZppVWA+K YPVptZkRO2QTGOE2ucQCJamXPqL3JbXMDc9tLe1oxffyacLDYRUJxyXJ1/J9u1q8MQ3h RM/W+/R+gq2kKhZeG3rAyIYj6+uKa2fGdnXGjQZmP94UYgixGYJ+RwV40CsnkcEJvj14 qT9p256nPk6QsBi+kLwPNTfUASniB7+aTtRB91GqHpBtzMpB2TGzaK6rrtdUU5iSwAr1 BtXCndu3jb6lmTcWTZ6CvaxNfrylSyNiYiEBH4vH3ZqPBtBsb6RpUQnH0+fkA62h/tbI xT+g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=wlwkreJLiH000TkL/I+nagVzmxnKwtX6/RI0S+Wf63c=; b=vXjX0A5zUHfrBDM2gVttFTGLKFLGlD8xKH+jqw9hP6SGFa4AWVSu26/v41hqcYob0s V6OskYnnA6MgfvfPdwvvkuOKCOVLhAN4LOkkoNBZVuBDteLL8+UGPWhbIM9tXMNR6f/T Ob1jvjrHHm0KjAg5bjRJ6v0Cx5Ttz+9/DClIcUVubY+QT92R3bLWfKAzKL0DTe3k2OIt +b0tYnJq6YoeESgTeTqRP4RRrvNlnfqCMhS6Wb+Yky2nERz9XHY1XSABhcrJhf0OID8t vWcKOuvUKttNa31aOzfVH+Ros6JxT4Ii5NFcI9TkN57McaEVOwQ1ot+tnC7Ctb5EKtcw bhfg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=hKGZhQsc; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id h15si11660217ejc.142.2019.09.11.11.23.44; Wed, 11 Sep 2019 11:24:08 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=hKGZhQsc; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729976AbfIKSVi (ORCPT + 99 others); Wed, 11 Sep 2019 14:21:38 -0400 Received: from mail-wm1-f67.google.com ([209.85.128.67]:36562 "EHLO mail-wm1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729758AbfIKSVi (ORCPT ); Wed, 11 Sep 2019 14:21:38 -0400 Received: by mail-wm1-f67.google.com with SMTP id t3so596345wmj.1 for ; Wed, 11 Sep 2019 11:21:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=wlwkreJLiH000TkL/I+nagVzmxnKwtX6/RI0S+Wf63c=; b=hKGZhQscUbNpwvhbBmzJE5rFZgRkwvD9/oiNRxYjGAsVkTilmapKoZdm3AUVR6aEfe 6ClFLL9oKo+3iXCtcEPH9xPwnNEC204wkwAoq4rwVV2LaW3dSQB7G6ZibmUJ4wOXb9xn 2HQs832KFhz+4iT/5nvPjXbRQGonAJQBRJ4+9oSZxYQEYX3PrZ/ysL0z27nS3jKNloWU 1QHBaAQdaHzvysoPDoUGyeYKBv2XOPac/RM/rREtrT+Lz1SNA8PAKCMgd++uWkcxWPAS NNCN1NTQEhGY6I4r6qvcignOtM+WREgYmTKiEf04lUFKqYJ7S+5tsCgxUr4mSp1sGVVv gB1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=wlwkreJLiH000TkL/I+nagVzmxnKwtX6/RI0S+Wf63c=; b=azW9cW+UOUfmx4UYwOptDylwxWSO4YLwe98G4q7kzifUxPwtu3Y6By+XamPnzaV4uM zBbILn8XUxbsJiSPnSloS0r2OVU4Gyi0dXjU5WrdXwMCQwoCCLGI0+2liBkH/TmTh+Bn fRg2xTxw9DH/T1Wc56sO9/3W+1Xivn2jbTxIn/G4nl/09WIFy2cjhUuu090B1E6p2ZgG 2E82a2JQoXAShBf8zYG8ZUREZe3MHMGLxWPXXZSS3n3x249ZJQEoCa907I+8BJHVEkVV gpLqasGmLdM+JgmhngJIEVdpXlBK7qysU9gMlX0kQv7YL2+1F3j+3H0sqlkaL2t6x707 DFrg== X-Gm-Message-State: APjAAAXtTLr+wT4jH5lPGWMm41uKNrtiXQT86lUMkXQK4vbaMyBTlISo wwxJsWIuIFVY6pYbXUqkD5E= X-Received: by 2002:a1c:7314:: with SMTP id d20mr4832772wmb.107.1568226095056; Wed, 11 Sep 2019 11:21:35 -0700 (PDT) Received: from localhost.localdomain ([2a01:4f8:222:2f1b::2]) by smtp.gmail.com with ESMTPSA id q9sm2356753wmq.15.2019.09.11.11.21.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Sep 2019 11:21:34 -0700 (PDT) From: Nathan Chancellor To: Benjamin Herrenschmidt , Paul Mackerras , Michael Ellerman Cc: linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, clang-built-linux@googlegroups.com, Nick Desaulniers , Nathan Chancellor , Daniel Axtens Subject: [PATCH v3 1/3] powerpc: Don't add -mabi= flags when building with Clang Date: Wed, 11 Sep 2019 11:20:49 -0700 Message-Id: <20190911182049.77853-2-natechancellor@gmail.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20190911182049.77853-1-natechancellor@gmail.com> References: <20190911182049.77853-1-natechancellor@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When building pseries_defconfig, building vdso32 errors out: error: unknown target ABI 'elfv1' This happens because -m32 in clang changes the target to 32-bit, which does not allow the ABI to be changed, as the setABI virtual function is not overridden: https://github.com/llvm/llvm-project/blob/llvmorg-9.0.0-rc2/clang/include/clang/Basic/TargetInfo.h#L1073-L1078 https://github.com/llvm/llvm-project/blob/llvmorg-9.0.0-rc2/clang/lib/Basic/Targets/PPC.h#L327-L365 Commit 4dc831aa8813 ("powerpc: Fix compiling a BE kernel with a powerpc64le toolchain") added these flags to fix building big endian kernels with a little endian GCC. Clang doesn't need -mabi because the target triple controls the default value. -mlittle-endian and -mbig-endian manipulate the triple into either powerpc64-* or powerpc64le-*, which properly sets the default ABI: https://github.com/llvm/llvm-project/blob/llvmorg-9.0.0-rc2/clang/lib/Driver/Driver.cpp#L450-L463 https://github.com/llvm/llvm-project/blob/llvmorg-9.0.0-rc2/llvm/lib/Support/Triple.cpp#L1432-L1516 https://github.com/llvm/llvm-project/blob/llvmorg-9.0.0-rc2/clang/lib/Basic/Targets/PPC.h#L377-L383 Adding a debug print out in the PPC64TargetInfo constructor after line 383 above shows this: $ echo | ./clang -E --target=powerpc64-linux -mbig-endian -o /dev/null - Default ABI: elfv1 $ echo | ./clang -E --target=powerpc64-linux -mlittle-endian -o /dev/null - Default ABI: elfv2 $ echo | ./clang -E --target=powerpc64le-linux -mbig-endian -o /dev/null - Default ABI: elfv1 $ echo | ./clang -E --target=powerpc64le-linux -mlittle-endian -o /dev/null - Default ABI: elfv2 Don't specify -mabi when building with clang to avoid the build error with -m32 and not change any code generation. -mcall-aixdesc is not an implemented flag in clang so it can be safely excluded as well, see commit 238abecde8ad ("powerpc: Don't use gcc specific options on clang"). pseries_defconfig successfully builds after this patch and powernv_defconfig and ppc44x_defconfig don't regress. Link: https://github.com/ClangBuiltLinux/linux/issues/240 Reviewed-by: Daniel Axtens Signed-off-by: Nathan Chancellor --- v1 -> v2: * Improve commit message v2 -> v3: * Rebase and merge into a single series. arch/powerpc/Makefile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile index 46ed198a3aa3..150925a2e06e 100644 --- a/arch/powerpc/Makefile +++ b/arch/powerpc/Makefile @@ -93,11 +93,13 @@ MULTIPLEWORD := -mmultiple endif ifdef CONFIG_PPC64 +ifndef CONFIG_CC_IS_CLANG cflags-$(CONFIG_CPU_BIG_ENDIAN) += $(call cc-option,-mabi=elfv1) cflags-$(CONFIG_CPU_BIG_ENDIAN) += $(call cc-option,-mcall-aixdesc) aflags-$(CONFIG_CPU_BIG_ENDIAN) += $(call cc-option,-mabi=elfv1) aflags-$(CONFIG_CPU_LITTLE_ENDIAN) += -mabi=elfv2 endif +endif ifndef CONFIG_CC_IS_CLANG cflags-$(CONFIG_CPU_LITTLE_ENDIAN) += -mno-strict-align @@ -143,6 +145,7 @@ endif endif CFLAGS-$(CONFIG_PPC64) := $(call cc-option,-mtraceback=no) +ifndef CONFIG_CC_IS_CLANG ifdef CONFIG_CPU_LITTLE_ENDIAN CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mabi=elfv2,$(call cc-option,-mcall-aixdesc)) AFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mabi=elfv2) @@ -151,6 +154,7 @@ CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mabi=elfv1) CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mcall-aixdesc) AFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mabi=elfv1) endif +endif CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mcmodel=medium,$(call cc-option,-mminimal-toc)) CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mno-pointers-to-nested-functions) -- 2.23.0