From patchwork Sun Jul 11 03:53:30 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xiang W X-Patchwork-Id: 1503617 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:e::133; helo=bombadil.infradead.org; envelope-from=opensbi-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=4WCKuju1; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=126.com header.i=@126.com header.a=rsa-sha256 header.s=s110527 header.b=N6fRIg11; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:e::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4GMtLL5mvnz9sRf for ; Sun, 11 Jul 2021 13:53:59 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:Cc :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=kWI0sdT4AjJLhBfV8Vkdb6UFuHXSRb7CcOCyqJaK8FQ=; b=4WCKuju12jJQDx yLH3lS7vR9dkkoyjPqDu2rcRyCEeX88o+01N8yIL7dAXWNQlgamx1OCOPHU9vJvbcH92/zRzedtE9 YHTfLECZmrmhjxpbJbuYeSzP9YjG/l/npIFpxp2q4OQ3LemuxGkNRxraXfLmKgt5pvFqOduSTOzdK yFxMuxmX0cVDrsXcpQklku6Zfa58pMH9xjz8Y0OdYQeEd473GO+e0/f+9YrmpXadAsgyg7fu7L0NK frRBg+oDiDCi2SYWxLLvXp2h4AtN5w91OjuVrG2X1mRJjdgXIkt6n7mTOFIhW+jM+W0IVWFPK4kRO OYvlbZaL8ohrQ/H9vbXg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1m2QXS-004Xth-1V; Sun, 11 Jul 2021 03:53:54 +0000 Received: from mail-m964.mail.126.com ([123.126.96.4]) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1m2QXO-004XsM-DB for opensbi@lists.infradead.org; Sun, 11 Jul 2021 03:53:52 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=126.com; s=s110527; h=From:Subject:Date:Message-Id:MIME-Version; bh=9eMCT cVAc4vNjbViYpsLU3t4sx4PhE09Lr6l3g6S/G4=; b=N6fRIg11fcDjYLb1YAYwd cFAplabGbeIqrP+cE6eMM4brssV71ciwyoXtrTr7oBGbhAluQFQf51sfifQ0FOJ4 AnWnpuXmLcr1C2o8dk3Tg6SywikMljuoPBJjBHvXUEBKufLXuB2PJe2EkUQO7LNs PGKAQUA2WjmeHJz2JcvXBc= Received: from localhost.localdomain (unknown [210.22.74.176]) by smtp9 (Coremail) with SMTP id NeRpCgA35JVHa+pgwjUAYw--.23461S2; Sun, 11 Jul 2021 11:53:45 +0800 (CST) From: Xiang W To: opensbi@lists.infradead.org Cc: anup.patel@wdc.com, Xiang W Subject: [PATCH v4] firmware: Detect whether the toolchain supports pie and automatically disable the FW_PIC option Date: Sun, 11 Jul 2021 11:53:30 +0800 Message-Id: <20210711035330.210785-1-wxjstz@126.com> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 X-CM-TRANSID: NeRpCgA35JVHa+pgwjUAYw--.23461S2 X-Coremail-Antispam: 1Uf129KBjvJXoWxJr13AryUAF1kWryDXFy3XFb_yoW8GF48pa 1SkFWrArW8G34Fqr9xGw1YgryfJa1I9ry8CF9Fka4UAryvvr4ktFyayrsIqr95JFn0vw4x uFW7ZFy3KFs3WaUanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x0zRwSdgUUUUU= X-Originating-IP: [210.22.74.176] X-CM-SenderInfo: pz0m23b26rjloofrz/1tbi2QnMOlpEB6A9owAAsB X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210710_205350_878460_F66EEF4F X-CRM114-Status: UNSURE ( 8.01 ) X-CRM114-Notice: Please train this message. X-Spam-Score: -0.2 (/) X-Spam-Report: Spam detection software, running on the system "bombadil.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: The previous version opensbi enable the FW_PIC option by default, but not all toolchains can support pie. This makes some toolchain report erroes when compiling. This patch whill check whether the too [...] Content analysis details: (-0.2 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 SPF_PASS SPF: sender matches SPF record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider [wxjstz[at]126.com] -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [123.126.96.4 listed in list.dnswl.org] -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain X-BeenThere: opensbi@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "opensbi" Errors-To: opensbi-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org The previous version opensbi enable the FW_PIC option by default, but not all toolchains can support pie. This makes some toolchain report erroes when compiling. This patch whill check whether the toolchain supports FW_PIC and disable FW_PIC. Signed-off-by: Xiang W --- firmware/objects.mk | 4 ++++ scripts/toolchain-check-pie | 7 +++++++ 2 files changed, 11 insertions(+) create mode 100755 scripts/toolchain-check-pie diff --git a/firmware/objects.mk b/firmware/objects.mk index ce91c2f..f8ee394 100644 --- a/firmware/objects.mk +++ b/firmware/objects.mk @@ -17,6 +17,10 @@ ifndef FW_PIC FW_PIC := y endif +ifeq ($(FW_PIC),y) +FW_PIC := $(shell scripts/toolchain-check-pie $(CC)) +endif + ifeq ($(FW_PIC),y) firmware-genflags-y += -DFW_PIC firmware-asflags-y += -fpic diff --git a/scripts/toolchain-check-pie b/scripts/toolchain-check-pie new file mode 100755 index 0000000..779c0ee --- /dev/null +++ b/scripts/toolchain-check-pie @@ -0,0 +1,7 @@ +#! /bin/bash + +if ${1} --version | head -n 1 | grep clang 2>&1 >/dev/null; then + echo void _start\(\) \{\} | ${1} --target=riscv64 -fuse-ld=lld -mno-relax -nostdlib -fPIE -Wl,-pie -xc - -o /dev/null 2>/dev/null && echo y || echo n +else + echo void _start\(\) \{\} | ${1} -nostdlib -fPIE -Wl,-pie -xc - -o /dev/null 2>/dev/null && echo y || echo n +fi