From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2a00:1450:4864:20::344; helo=mail-wm1-x344.google.com; envelope-from=ard.biesheuvel@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-wm1-x344.google.com (mail-wm1-x344.google.com [IPv6:2a00:1450:4864:20::344]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id C1EA7211A2D83 for ; Thu, 20 Dec 2018 03:03:38 -0800 (PST) Received: by mail-wm1-x344.google.com with SMTP id b11so1527488wmj.1 for ; Thu, 20 Dec 2018 03:03:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=aR9ZwRcEFKbOP97xtO7AYFJeoxj4Rra7S1CC9FnebcE=; b=E0w3THq5v00lp2jOgNa5YwinnbyS0E1oPFiojN6gMQPJK/mpidAzY7yN56yfu4eG40 aFa8gDkSpbyOHoZX/2lp89MDzxsUp9wkm0JtJ/f69oY0+wwd9e8zUBOJMJ9ck3SRSXqn mCFiIg6VQjdr5ssADI0aOQPAGbHNVehd4qtVo= 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:mime-version :content-transfer-encoding; bh=aR9ZwRcEFKbOP97xtO7AYFJeoxj4Rra7S1CC9FnebcE=; b=aCL7E5pkrgjGWdGNyk8WSzVQE+7lBFaJQdZECMZL5TFDUfSmYsESEJKgAiwcqKZaqN RaC7YylIqpu7EMYI4yc5mFe1ZkpsWox+SpNNl0TQXfkHKZwfbvK2gsDRQkgLHr5gqqfD KNsSm1lqkjM5t7+A9+26Vad8poXdDh6HuH42vWfgxatRgyeLun7/iG7j9Q5re/M/k3+U +FzImZKS95m8wJPhwGSuEfhsOiRItBYKMFHD33mboK7f6O8J7NVHbu9HSy/Lqe4XGHdN asBpnitAFpz/s9kt3v+glQMmncC6PrQs5tWawmoW/sDzd8U/qimqpqqXm9akvOUjYMm0 nc2g== X-Gm-Message-State: AA+aEWb5RU7/96zQ5ToP1QJXoRslm2omixYjQu3ZVTjEkmpLcuZY/FaH tMffKgZNlHgW4zjcDRaBB6uKTt4p5FZqsw== X-Google-Smtp-Source: AFSGD/V38YFiW5bSrKjBXmZuRzlTQZ010yzb+6fPW24nUPF0iwPfPnsvsWhtqDSUVO2+xKOfVcgH6A== X-Received: by 2002:a1c:9c0a:: with SMTP id f10mr11190624wme.73.1545303816457; Thu, 20 Dec 2018 03:03:36 -0800 (PST) Received: from harold.home ([2a01:cb1d:112:6f00:e5c9:6e00:25cb:e32e]) by smtp.gmail.com with ESMTPSA id m21sm5556876wmi.43.2018.12.20.03.03.34 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 20 Dec 2018 03:03:35 -0800 (PST) From: Ard Biesheuvel To: edk2-devel@lists.01.org Cc: leif.lindholm@linaro.org, liming.gao@intel.com, Ard Biesheuvel Date: Thu, 20 Dec 2018 12:03:32 +0100 Message-Id: <20181220110332.30145-1-ard.biesheuvel@linaro.org> X-Mailer: git-send-email 2.19.2 MIME-Version: 1.0 Subject: [PATCH v2] BaseTools/tools_def ARM: use softfloat target for CLANG3x X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 20 Dec 2018 11:03:39 -0000 Content-Transfer-Encoding: 8bit The 'arm-linux-gnueabihf' target triplet we use for CLANG35 and CLANG38 specifies a hardfloat target, and so the binaries that are emitted are annotated as using VFP registers for passing floating point arguments, even though no VFP is used anywhere in the code. This works fine as long as we don't try to link against code that uses software floating point, but combining object files with different floating point calling conventions is not permitted. So switch to the softfloat arm-linux-gnueabi triplet instead. This affects both the name Clang uses when invoking the linker, and the arguments it passes to it, and we are mostly interested in the latter (since any version of GNU ld.bfd will do the right thing as long as it targets EABI ARM) For native builds, this change has no effect, since the unprefixed system linker will take priority, and so Clang will pass the right arguments to whichever linker happens to be the system linker. For cross builds, the fact that Clang composes the name of the linker by prefixing '-ld' with the target triplet implies that users will have to switch to a version of binutils that targets arm-linux-gnueabi rather than arm-linux-gnueabihf. Note that the GCCx toolchain targets can use either when building for ARM so this does not create a need to install two versions of the ARM cross toolchain. Also, note that all ARM toolchains in the GCC family are already documented as requiring a toolchain that targets arm-linux-gnueabi and not arm-linux-gnueabihf. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ard Biesheuvel --- v2: improve commit log BaseTools/Conf/tools_def.template | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template index 902680c24c85..f7eb87af14c2 100755 --- a/BaseTools/Conf/tools_def.template +++ b/BaseTools/Conf/tools_def.template @@ -5231,7 +5231,7 @@ RELEASE_GCC5_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20 *_CLANG35_*_DLINK_PATH = ENV(CLANG35_BIN)clang *_CLANG35_*_ASLDLINK_PATH = ENV(CLANG35_BIN)clang -DEFINE CLANG35_ARM_TARGET = -target arm-linux-gnueabihf +DEFINE CLANG35_ARM_TARGET = -target arm-linux-gnueabi DEFINE CLANG35_AARCH64_TARGET = -target aarch64-linux-gnu DEFINE CLANG35_WARNING_OVERRIDES = -Wno-parentheses-equality -Wno-tautological-compare -Wno-tautological-constant-out-of-range-compare -Wno-empty-body -Wno-unknown-warning-option @@ -5384,7 +5384,7 @@ NOOPT_CLANG38_X64_DLINK2_FLAGS = DEF(GCC5_X64_DLINK2_FLAGS) -O0 ################## # CLANG38 ARM definitions ################## -DEFINE CLANG38_ARM_TARGET = -target arm-linux-gnueabihf +DEFINE CLANG38_ARM_TARGET = -target arm-linux-gnueabi DEFINE CLANG38_ARM_CC_FLAGS = DEF(GCC_ARM_CC_FLAGS) DEF(CLANG38_ARM_TARGET) DEF(CLANG38_WARNING_OVERRIDES) -mno-movt DEFINE CLANG38_ARM_DLINK_FLAGS = DEF(CLANG38_ARM_TARGET) DEF(GCC_ARM_DLINK_FLAGS) -- 2.19.2