Received: by 2002:a25:7ec1:0:0:0:0:0 with SMTP id z184csp90851ybc; Mon, 18 Nov 2019 20:59:59 -0800 (PST) X-Google-Smtp-Source: APXvYqxlhx4hq4TWi7dAFHhLFTQJZIStOvVi8c/y99Qj335w45URUIuA/yyuzN2ooiTTQQyDcU0L X-Received: by 2002:a17:906:4d93:: with SMTP id s19mr3730306eju.285.1574139599162; Mon, 18 Nov 2019 20:59:59 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1574139599; cv=none; d=google.com; s=arc-20160816; b=oH+ipUxF6JyIOsSr0d9FTesCpYBYTSsiSwS+JrY069EXqetRWsmrmom//DHQEoVuqy xGiX2rWvJGDCOYtPk8Bb38J1Dk0Ax85IJ+QZEZ7O2OnN5zBFceLVH/TN9fbgSOPO/bvK 10PxhrbMT10LyWaUeuC9WHP3s1gkmXlHn9AD1VTGTpEyXIC7+Uio+R3xT+V0JU0fMug4 a6DQgkBl9Ym/HfGCM1b5O9yhl1ClWLujtlFveKibrNIcz94D35ncAUWvFqHUQ4f+QuOb GQwbxNNte2+VD7FYBiOHzK5FtxMKEMxiVdT5zgneRALklH1h2CgBtDPHl7og1HztGTwo IcFw== 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=HSoLoBQu7wvsTkiGTXx6M7EQNsRZn7u37ylvVoljrFE=; b=o4DW+gn85OFen4uDVwRVHOYWtNBJCqiUMSsDrVylgJ2HrpPa5SW8v3QKiCS3AK3Rfd At4Oioe8DKoc3gLg7IYz5gWb47IJ+ZF6euogXTxu509DjzUKI4yQIYTkNhrA+ywWfbMv GBGnx8jSf9qhxJDlglSNOt3Do7PBBeBlU7K9DAp+wS5CwfX9qf0Je+zKYYN0sW0wL+WV CqzsQMpIY99qrkOFy+57PaJ4gESTWc4JuwbJ6pUUp1ZyY056pCbcr2ZiZc177Ig7b1zA j8pasK5/JKxMPkXPwY9/7L3+KOjomYOhw8ptuzH0K/FEcOE6DZmPBC6abuqy5fWFg13A z6CA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=WCTtst3O; 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 br3si13075121ejb.436.2019.11.18.20.59.34; Mon, 18 Nov 2019 20:59:59 -0800 (PST) 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=WCTtst3O; 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 S1727118AbfKSE5T (ORCPT + 99 others); Mon, 18 Nov 2019 23:57:19 -0500 Received: from mail-ot1-f67.google.com ([209.85.210.67]:44688 "EHLO mail-ot1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726647AbfKSE5S (ORCPT ); Mon, 18 Nov 2019 23:57:18 -0500 Received: by mail-ot1-f67.google.com with SMTP id c19so16710109otr.11 for ; Mon, 18 Nov 2019 20:57:17 -0800 (PST) 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=HSoLoBQu7wvsTkiGTXx6M7EQNsRZn7u37ylvVoljrFE=; b=WCTtst3ObwVgIewiTfZn6FtEzAATFfteGaGnSc2Zsh6RSJ7mpg7m8uhw+4muQL0jht d+i1lMpRSOZG1mJWNgIz+U2Wjpnx9lkcV6fNyylFAj47Ae+h5yiZ5SlgvG/mwyx4lfw9 OrhjF3sdHz28kpgw/eiI7J1641M7PaPZvJt4CzTwjQkRg51CxIW9aXKCIcLX6p/miivl nKt0LveP0iXWadd7cq7BBUJ/YSoLVdx762WxpI28vqqBKwIymdUPe1ioi2eTPX+1s17Y 2n9JW0cLks8T/l/bGEX4Y/j2cOpNsGhTRZSvE1O1gulCTEGt23hp3ZtxP3qWYbuejU1b h+/g== 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=HSoLoBQu7wvsTkiGTXx6M7EQNsRZn7u37ylvVoljrFE=; b=P6Zazjz+nm1rdW9UsVPpoBUb2jJbmNTYpZKlLoDBAbhturPy6AE969/TXn4OqS8zA+ mk+UBBjIw4f2wAh+uYICKbJHs7woKAMiSsAaMqcOg0lP47aUaWX+dv6fO+hf1cMDkM+z eqbWlqicQFEQ9lpXLoxiX8XjIogpR6vBLDMS4OEkRsoWnD3lYnG19LM0HxpilcVX296m lUXtLiaoPvPvz/aXu/eu2M5CmZbRhj+LbEsnUAnHeSgg87kE8x/hTUzlE8xHwHr7O7qC nnYENxmklEl+RsEHY/O6IuzW+i4bMvjVzjQDYKMsGTSuWdXKGIE5gsCuYBKNnZWiLbM6 uLrA== X-Gm-Message-State: APjAAAULtUUX+xTkohrO3MbMOqDgynDMCkYZNo4EE/wC4zd6CaBHrtgg aUB0nGWAsWXfisSIQPFE0h4fjb52 X-Received: by 2002:a9d:12a3:: with SMTP id g32mr2321849otg.61.1574139437226; Mon, 18 Nov 2019 20:57:17 -0800 (PST) Received: from localhost.localdomain ([2604:1380:4111:8b00::7]) by smtp.gmail.com with ESMTPSA id e88sm7019765ote.39.2019.11.18.20.57.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Nov 2019 20:57:16 -0800 (PST) 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 v5 1/3] powerpc: Don't add -mabi= flags when building with Clang Date: Mon, 18 Nov 2019 21:57:10 -0700 Message-Id: <20191119045712.39633-2-natechancellor@gmail.com> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191119045712.39633-1-natechancellor@gmail.com> References: <20191014025101.18567-1-natechancellor@gmail.com> <20191119045712.39633-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/clang/include/clang/Basic/TargetInfo.h#L1073-L1078 https://github.com/llvm/llvm-project/blob/llvmorg-9.0.0/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/clang/lib/Driver/Driver.cpp#L450-L463 https://github.com/llvm/llvm-project/blob/llvmorg-9.0.0/llvm/lib/Support/Triple.cpp#L1432-L1516 https://github.com/llvm/llvm-project/blob/llvmorg-9.0.0/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. v3 -> v4: * Rebase on v5.4-rc3. * Update links to point to llvmorg-9.0.0 instead of llvmorg-9.0.0-rc2. v4 -> v5: * Rebase on next-20191118 arch/powerpc/Makefile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile index a3ed4f168607..f35730548e42 100644 --- a/arch/powerpc/Makefile +++ b/arch/powerpc/Makefile @@ -91,11 +91,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 @@ -141,6 +143,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) @@ -149,6 +152,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.24.0