From patchwork Sat Jul 10 20:27:10 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xiang W X-Patchwork-Id: 1503575 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=a1wV1ZPd; 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=JIOHPCvh; 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 4GMhR02wc3z9sV8 for ; Sun, 11 Jul 2021 06:27:24 +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=R+2xL/UOiDhuxMPgv0IuQQQE/Bo8qjRsNRJy71zdhXY=; b=a1wV1ZPdK6F8Ni fO5DY0l2GxoXAfT7ZfZesMJjW3ggdhRHM9TWrLWIx0q++C9AlseNcdUfjdr86xaS66SVbO/GXy5GC UM+27svjJgbNb7ZS6mn76EUYMPyEbnhoaMAPaqPDDoAe20vFMNRxXAQEnJiwgqpJuhBWoee2sCgiA CSb7XwpDlwgHVK0CAzFZEd6cnOH1CGlVeBtpM7kWtMohOeza3vJPyu0WKDlGnn6pQphxBEPuTBYv5 WupCXj0z3+X24VFGN67EPJauW6b+o/hueBxbqDz0UPYWRH2fCSdSHu64O/utL0VFZuWvWm2DqWDtC OuaOFKG99ZMHuC8+5Jug==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1m2JZH-00495g-NM; Sat, 10 Jul 2021 20:27:19 +0000 Received: from mail-m963.mail.126.com ([123.126.96.3]) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1m2JZF-00495M-4y for opensbi@lists.infradead.org; Sat, 10 Jul 2021 20:27:18 +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=sdUZr A0VUi5Irf+LPb9sBiAjM4o9YU+DppyECM33c+g=; b=JIOHPCvhFxzYo7sVjOWSA Np1HtY/84k21QW6Uk3pVyb726yAIQgWgFlgZ/c/aWe5EXaEld2sguT5bQ+k0G6mI drStjqMrDm/DQHEL5get6+WvhFHdq7zzsG8NUOsCKq98eV/zOY9ZHVRD7xuBOll7 7KyS+H6oJdhRU5euLt4yDM= Received: from localhost.localdomain (unknown [210.22.74.176]) by smtp8 (Coremail) with SMTP id NORpCgCXQ7igAupgOBu_Lw--.2684S2; Sun, 11 Jul 2021 04:27:14 +0800 (CST) From: Xiang W To: opensbi@lists.infradead.org Cc: anup.patel@wdc.com, Xiang W Subject: [PATCH] firmware: Detect whether the toolchain supports pie and automatically disable the FW_PIC option Date: Sun, 11 Jul 2021 04:27:10 +0800 Message-Id: <20210710202710.192820-1-wxjstz@126.com> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 X-CM-TRANSID: NORpCgCXQ7igAupgOBu_Lw--.2684S2 X-Coremail-Antispam: 1Uf129KBjvdXoW7Gr1xtF48JFyrJr4DCF45Wrg_yoWkuFXE9F s7uryUWF40qrW5Xa48tr95Xw4UCFs3Xw4xZ3Z7Zr17XwsrGw4DZFnrG3WDXw4rAwnxKF4f uF13ZFykCFWSvjkaLaAFLSUrUUUUUb8apTn2vfkv8UJUUUU8Yxn0WfASr-VFAUDa7-sFnT 9fnUUvcSsGvfC2KfnxnUUI43ZEXa7xREpVbPUUUUU== X-Originating-IP: [210.22.74.176] X-CM-SenderInfo: pz0m23b26rjloofrz/1tbi1wLLOl53WmmRtwAAsY X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210710_132717_589165_583A2B1B X-CRM114-Status: UNSURE ( 7.75 ) 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: Signed-off-by: Xiang W --- firmware/objects.mk | 4 +++- scripts/toolchain-check-pie | 7 +++++++ 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100755 scripts/toolchain-check-pie diff --git a/firmware/objects.mk b/firmware/objects.mk index ce91c2f..020e1a9 100644 --- a/firmware/objects.mk +++ b/firmware/objects.mk @@ -16,7 +16,9 @@ firmware-ldflags-y += ifndef FW_PIC FW_PIC := [...] Content analysis details: (-0.2 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [123.126.96.3 listed in list.dnswl.org] -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.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 Signed-off-by: Xiang W --- firmware/objects.mk | 4 +++- scripts/toolchain-check-pie | 7 +++++++ 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100755 scripts/toolchain-check-pie diff --git a/firmware/objects.mk b/firmware/objects.mk index ce91c2f..020e1a9 100644 --- a/firmware/objects.mk +++ b/firmware/objects.mk @@ -16,7 +16,9 @@ firmware-ldflags-y += 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