From patchwork Sun Apr 11 09:21:56 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heinrich Schuchardt X-Patchwork-Id: 1464766 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=gmx.net header.i=@gmx.net header.a=rsa-sha256 header.s=badeba3b8450 header.b=C0uOxmdU; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (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 4FJ5yX570sz9sV5 for ; Sun, 11 Apr 2021 19:23:30 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 076A680201; Sun, 11 Apr 2021 11:23:17 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=fail (p=none dis=none) header.from=gmx.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; secure) header.d=gmx.net header.i=@gmx.net header.b="C0uOxmdU"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id A40A9804E7; Sun, 11 Apr 2021 11:23:14 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,FREEMAIL_FROM,SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from mout.gmx.net (mout.gmx.net [212.227.15.15]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id AB4BC80201 for ; Sun, 11 Apr 2021 11:23:07 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmx.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=xypron.glpk@gmx.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1618132976; bh=HkN0favNjhdgZ+4Ufa/5x+F4iFvsC/NaWSru4sIP4fg=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=C0uOxmdUlXwHnT7zIozX7T78ZMW+2Tciu6Q28Fa/NFv3jtHJOZS2MkxigZFMihjNF V+L1gHMLybf2sv5a+5aWMUhyd9NiuRv2tP5HtOO2HkSaHVjAf6ZDOw+UrVhDdrpwYe aDXLtmT4lwT9X9kv+OIcqJIOIUMiW503qkpwQVJE= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from LT02.fritz.box ([62.143.247.63]) by mail.gmx.net (mrgmx004 [212.227.17.184]) with ESMTPSA (Nemesis) id 1ML9uK-1lDRBq23gQ-00IFIc; Sun, 11 Apr 2021 11:22:56 +0200 From: Heinrich Schuchardt To: Tom Rini Cc: u-boot@lists.denx.de, Rick Chen , Simon Glass , Bin Meng , Joel Peshkin , Heinrich Schuchardt Subject: [PATCH v10 1/3] test: fix test/dm/regmap.c Date: Sun, 11 Apr 2021 11:21:56 +0200 Message-Id: <20210411092158.5244-2-xypron.glpk@gmx.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210411092158.5244-1-xypron.glpk@gmx.de> References: <20210411092158.5244-1-xypron.glpk@gmx.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:eLQ59nqQnMxlPie7osCfqCq9G/3DPbCYcMbPI3EzbYPLc2ezkJn 4O32V/RttTmo/WljpKNfflSd5K+xmvVAQixSaGyviPoLXuSnl8lrXGplYiQokD8kfQSkHu/ DiUnPgLCL/phwuh2pzD3VD/Uxm5YvChIIeP1zhUuVzVrBY59UVgz0zu12mpbVAIq5sOr1jV O8DWHkulcbrOhU97d5YJw== X-UI-Out-Filterresults: notjunk:1;V03:K0:uGCfYsgbb9I=:vt4Oy8jatEIb7SG3w8bZgf eTbjSH5n2/hk8j8uQfa3izHWsspNffEhp0wukKp+O9qeZLWFOZHtLRo6zDjxV9i8CL0lV+LL7 xwkbjDchaNVOltnBlSbyBrM32Tgp/IKUmH86WxNTe5siDpM37IKPsfsbkGHAVx/Y71oiIQrLE 3e6WBWIGcu1ugullrWJQ/9GJBT0zpzVPhQiosMfU+a2prAkGrLGVvVrIbiwRliHDi92Thzg7S GZdodafSZvjZ87c/0gvc25ivrZW3YgJBf+/iP+iohwR5ul0AbLbTqjkxWfEieRJVsED4NKlLU D3nOFVy08k10LDSI1nJbQAuC9onBcUL1Xo69Jsdizj0r3Pd+EQoQg/y9RGxyjSjc5ozGfdiIz dUrtmdjUn5rDNp+RwtVnAHvOblkoLvQJunruKYppkSnuiiEL76Xl61qvQYhpfEU7CeI74GLR/ qhitkqPRxPv6j1d68SbLBHn1Gke156MXy5Osm0ShOZ3CKaZ9ELmjmBwI9ayqasvZr5J9Rjepp hSjA4xAYyMLyYKcJ+/1UBklLg0CfUR9FuKMQG+I4m2X4A9gk6M9gbaL3+cVkDeTmTAhCvLaGV N+KfyA2oYqtrDT+3+uJUUaAZ+3WrcNKFF75xPV9mMumIRyr9YTGyozN+aeTd5PP3yl/fNN3Cm 02XvwPP8qrFSVPBNG6F2ONKgf1RePQXAh1XJH7tAKoyvq5pnNuq/sFw5LZFcgLbG5byredCba k0hfw8VaAmPwzx650CAmvhwYfj8RdlC7HK5B9OpPNXcBvW19OWohvflvy3YSNP2Kw6SLl4LDR 1JwU6tb6TteK6BJSNs+zomBD5254CFnexHlVMqf8VcF3NWWvsAxewdIHquBnF/VAL6vQxFUT9 0PrtkNHNnJNYyFD3mS9SP8+obuLacl8CMxr4fdqgSqq1fhGqTKLFCZwCd1lekc2ARpg7WaTtF nUguF2SijJFR4Yqguz74TAN5gVXXWp50Qzw51UWOzw2MaoZt4MrgBwCIN3AfNLlmNJigCQZT/ 3+023qcH6k7lrWFgUWAaVNoOrs0gTn+Jz/7fxmIkvVtMXWLretJkwvWvdzvNQdaxz1FlmUK6L OpvL/claXU0z92S6xCj2znsigt+E8lyQ0fu0bVkEEBNr61YCj1Nls7KKBkJ8M2doM7qHPWy4p xI6qNac7wYacWeB7Q7ls4vn8MjzTZEEAonE3GwWyrQ03+f9pqgjJ/Dw2+VJPPcs/XAEYU= X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.102.4 at phobos.denx.de X-Virus-Status: Clean regmap_read() only fills the first two bytes of val. The last two bytes are random data from the stack. This means the test will fail randomly. For low endian systems we could simply initialize val to 0 and get correct results. But tests should not depend on endianness. So let's use a pointer conversion instead. Signed-off-by: Heinrich Schuchardt Reviewed-by: Simon Glass --- v10: new patch --- test/dm/regmap.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) -- 2.30.2 diff --git a/test/dm/regmap.c b/test/dm/regmap.c index 22a293096c..372a73ca0c 100644 --- a/test/dm/regmap.c +++ b/test/dm/regmap.c @@ -286,7 +286,8 @@ U_BOOT_DRIVER(regmap_test) = { static int dm_test_devm_regmap(struct unit_test_state *uts) { int i = 0; - u32 val; + u16 val; + void *valp = &val; u16 pattern[REGMAP_TEST_BUF_SZ]; u16 *buffer; struct udevice *dev; @@ -311,7 +312,7 @@ static int dm_test_devm_regmap(struct unit_test_state *uts) ut_assertok(regmap_write(priv->cfg_regmap, i, pattern[i])); } for (i = 0; i < REGMAP_TEST_BUF_SZ; i++) { - ut_assertok(regmap_read(priv->cfg_regmap, i, &val)); + ut_assertok(regmap_read(priv->cfg_regmap, i, valp)); ut_asserteq(val, buffer[i]); ut_asserteq(val, pattern[i]); } @@ -319,9 +320,9 @@ static int dm_test_devm_regmap(struct unit_test_state *uts) ut_asserteq(-ERANGE, regmap_write(priv->cfg_regmap, REGMAP_TEST_BUF_SZ, val)); ut_asserteq(-ERANGE, regmap_read(priv->cfg_regmap, REGMAP_TEST_BUF_SZ, - &val)); + valp)); ut_asserteq(-ERANGE, regmap_write(priv->cfg_regmap, -1, val)); - ut_asserteq(-ERANGE, regmap_read(priv->cfg_regmap, -1, &val)); + ut_asserteq(-ERANGE, regmap_read(priv->cfg_regmap, -1, valp)); return 0; } From patchwork Sun Apr 11 09:21:57 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heinrich Schuchardt X-Patchwork-Id: 1464767 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=gmx.net header.i=@gmx.net header.a=rsa-sha256 header.s=badeba3b8450 header.b=BMVuQuGI; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (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 4FJ5yh6NNxz9sV5 for ; Sun, 11 Apr 2021 19:23:40 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 24ADE804E7; Sun, 11 Apr 2021 11:23:20 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=fail (p=none dis=none) header.from=gmx.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; secure) header.d=gmx.net header.i=@gmx.net header.b="BMVuQuGI"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 605A8804B9; Sun, 11 Apr 2021 11:23:15 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,FREEMAIL_FROM,SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from mout.gmx.net (mout.gmx.net [212.227.15.18]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 42BD1801FD for ; Sun, 11 Apr 2021 11:23:07 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmx.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=xypron.glpk@gmx.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1618132977; bh=3ll8u+IuXCoLXoRA4/lruql2GnUK+pIKxQ4eLRWMiZE=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=BMVuQuGIm1fqE9v6dP4NNN3zYbU5nBTJc+i3MTuBU8rRHaMqjH6VG3zP5kdyHPIAX iyvUSECOtpKUcSIHqjzlAIcRUhP2LcLaU5eq5XnR85J9czTcG1yp+rkPEaXYmYyfsH LHkgaD9OZ/870VabLScSmzP9HEGNpFX4tsdu/Avo= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from LT02.fritz.box ([62.143.247.63]) by mail.gmx.net (mrgmx004 [212.227.17.184]) with ESMTPSA (Nemesis) id 1MORAa-1lCJ823LXa-00PvL0; Sun, 11 Apr 2021 11:22:56 +0200 From: Heinrich Schuchardt To: Tom Rini Cc: u-boot@lists.denx.de, Rick Chen , Simon Glass , Bin Meng , Joel Peshkin , Heinrich Schuchardt Subject: [PATCH v10 2/3] x86: correct usage of CFLAGS_NON_EFI Date: Sun, 11 Apr 2021 11:21:57 +0200 Message-Id: <20210411092158.5244-3-xypron.glpk@gmx.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210411092158.5244-1-xypron.glpk@gmx.de> References: <20210411092158.5244-1-xypron.glpk@gmx.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:L+SfJ+iMYuRLV8g2OQ6Br4rYAWPBdE5E7XhFzCJFVG6DR9rnjsB cmsTLIhxb0hHsh1oF3vHnvjvdqpc+Phqf92k/sbPhRO/ZpMdSSND4mZVfJjWNF1qmvnOKwL exIFNJM9a/7YaCQ9OCIH8MK/mbMweEaS7lnizQvO5G/dzVUrEwugcSpQJIBEnKqmMBNpZaH WAwp0uhn4Ke6xMbg6nj4A== X-UI-Out-Filterresults: notjunk:1;V03:K0:twy4cdxHMyU=:cfHmWHr2xnonGp/h8gYCEv 44thoSEJdnC4w3t2iMynnytfu6vTZPQKdVBVk3dbYGOqJ0iwAFsPhaDFWGrwzO7obqcojof08 dofwknBCKMOyGAaVQkqkVS0uNkbjwXQwz9zDDl7vqYa225EpSKg0LeQ+PP6ygzMukIJ1cP30a Xk8EoiIubRRsQfXlgqgsXoMF5YKV3eroIoj5CDsNYDAmygsSxZhdz7SbPBwBI0DELfjAJCscw J0c2+kMLEcFpOXZAazDOO49bnryDSiILeEQvoMZg1I4siB/b5zsJBeJj9Rbjo7T3hyMmJj1yM oclPWR8aiMH1jqQ9MaOwqWMGShlI7jdQt8yr2HNKUhDgUJfykmwS8XY4lV8LkUaPZ23aaHHn9 GbH9kEVFLXkOcJlB3DNeiBc883NOnlIt+74JLZQEC0NRUyrA7T+HAwDRbPTWAABH3TuwEH9Wm sUCWc2iwHsbcPG6vkf74zNcyRH0WGO3y/F09vf0Eq+FXKyxeUNBGoI4DoNsNFeBblC9k6PWnY ASqHVG/iK/uECyTAeSEzNxaK8EZrcC4Rq+SkwobYInLtXyuOYNuyJnDbGXq12WMPYPA8JYxYd RZwbk9OwOdvSbJfALkFXjCQJATjwvL1l2QOoayrOSHk8dmKU1iuIQENRruCF2NYsd8ztJlTfl D6GcTQt/4LXCK+/AatpC5A2KaxmLDrzgRFIT6lWpqSdLd/JIxeRfn3derrY8JSuyHXFV2n5qh 1RGi8oQFNz2yOkRPXMivYN0GVY5vek4gIOiZthMBJn85EXQ+5YolZzX0VqQ5tKGImLWBHP+4w KE+29kueWp5LS3T7NhryFU4V6r92g0hnlJ1/tiMZgajiKNLB47+HQdPhb3ixJTR6XZeekz7un uXNBfxfky4l3lav2X355zQB4v2t/QCp/bvzaSmWUE4sQtgns1VbEzN6b8BPEvBCAHTKLYnlrr yGs2tnAWFVxw0l7nohtGxxVC57M9tDXyHtcLUjqIkI9yC5KV2AG5G48tDPOfQ3bNlju3dSet1 wJoWz1+fT+E+awFa5b3v9ydkHVbda+hmHXSUQZTjMUf85e02/O8oJGUNWFv1/KxLmLozY+Vor BSqtnQcagGPRTv/Q1vFVSVJ59rA/2f5OoxS0o/1EQC9C0rIzakZXPcXuuH9A//uFl+fqKvXHM phiT98P+ielWWXImWdj54e600l+WO+rzghL6P+F175Pit2eKEy7D7cwDGpw+fg0WbNaiE= X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.102.4 at phobos.denx.de X-Virus-Status: Clean The current usage of the variable CFLAGS_NON_EFI on the x86 architecture deviates from other architectures. Variable CFLAGS_NON_EFI is the list of compiler flags to be removed when building UEFI applications. It is not a list of flags to be added anywhere. Signed-off-by: Heinrich Schuchardt --- v10: new patch --- arch/x86/config.mk | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) -- 2.30.2 diff --git a/arch/x86/config.mk b/arch/x86/config.mk index 27d8412661..3067702858 100644 --- a/arch/x86/config.mk +++ b/arch/x86/config.mk @@ -39,10 +39,10 @@ LDFLAGS_EFI_PAYLOAD := -Bsymbolic -Bsymbolic-functions -shared --no-undefined -s OBJCOPYFLAGS_EFI := -j .text -j .sdata -j .data -j .dynamic -j .dynsym \ -j .rel -j .rela -j .reloc -ifeq ($(IS_32BIT),y) -CFLAGS_NON_EFI := -mregparm=3 -endif +# Compiler flags to be added when building UEFI applications CFLAGS_EFI := -fpic -fshort-wchar +# Compiler flags to be removed when building UEFI applications +CFLAGS_NON_EFI := -mregparm=3 ifeq ($(CONFIG_EFI_STUB_64BIT),) CFLAGS_EFI += $(call cc-option, -mno-red-zone) @@ -70,7 +70,9 @@ LDSCRIPT := $(LDSCRIPT_EFI) else -PLATFORM_CPPFLAGS += $(CFLAGS_NON_EFI) +ifeq ($(IS_32BIT),y) +PLATFORM_CPPFLAGS += -mregparm=3 +endif KBUILD_LDFLAGS += --emit-relocs LDFLAGS_FINAL += --gc-sections $(if $(CONFIG_SPL_BUILD),,-pie) From patchwork Sun Apr 11 09:21:58 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heinrich Schuchardt X-Patchwork-Id: 1464769 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=gmx.net header.i=@gmx.net header.a=rsa-sha256 header.s=badeba3b8450 header.b=d916DG75; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4FJ5z63hCfz9sV5 for ; Sun, 11 Apr 2021 19:24:02 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 7BF3780C6D; Sun, 11 Apr 2021 11:23:28 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=fail (p=none dis=none) header.from=gmx.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; secure) header.d=gmx.net header.i=@gmx.net header.b="d916DG75"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id CDBB980590; Sun, 11 Apr 2021 11:23:21 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,FREEMAIL_FROM,SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from mout.gmx.net (mout.gmx.net [212.227.15.19]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id CD2EC80484 for ; Sun, 11 Apr 2021 11:23:07 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmx.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=xypron.glpk@gmx.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1618132977; bh=O5z7b4NmvAlqRD4+0tA5Sc7yD/kyrNOys/1A1H6bBfU=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=d916DG75keJvM6v+DywNEE/UN6kXr61Y464i3quGHZ3D2MeB4H4vb2o+8lU6yYTTq cbsnE3/PeH4JtqZfSFdhVkQ1BPIG3BgGOOJZy4lCczDHsV58Pva5Ht2VVImECsiG3O aqA80fW2NdvPslBxN2Tp5656Gyl1klJWVWBlViS0= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from LT02.fritz.box ([62.143.247.63]) by mail.gmx.net (mrgmx004 [212.227.17.184]) with ESMTPSA (Nemesis) id 1MwfWa-1lkGtv0QIM-00y9h8; Sun, 11 Apr 2021 11:22:57 +0200 From: Heinrich Schuchardt To: Tom Rini Cc: u-boot@lists.denx.de, Rick Chen , Simon Glass , Bin Meng , Joel Peshkin , Heinrich Schuchardt Subject: [PATCH v10 3/3] Add support for stack-protector Date: Sun, 11 Apr 2021 11:21:58 +0200 Message-Id: <20210411092158.5244-4-xypron.glpk@gmx.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210411092158.5244-1-xypron.glpk@gmx.de> References: <20210411092158.5244-1-xypron.glpk@gmx.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:o73VPmXYhem7Mg9ON7lZCnB/D2/se97JU4JXZ1ELWksofJOpxLb +h7NHADLj/tmTMOzcANtLyGXX3SXw7BfAzd4TR+Q8f8dpY4iapT49xcKa4UXdH0MxFAGSaj QUP+FvSqcJN3v8qLPvS7Vx2Wz66M75hwR+9EQgimRWKbgv2XBbPubaw3uS9XpUc0cbXindE 7Vo5nQWJTX64EP622ejWQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:ws294VawrhM=:rgG54AZc2ZFi1PDAEeioq8 bQswmgKJSL2fta64TEjFzJIva/9E3OQDOTbbIkFYz0t/4yyeBCwSsYSFVreGq7xUcKuL0GupG Qz4YBaetPmqBL+9JHZjC+Z2ov6YFEs2sbc/3zVJbqqXeXDC21XD0Hc4u7SlYEwMOosiDebOlv aUT3ICGVNk1u+Nefb57SgwbDMRlnFCd6WlpLiKzIv4C055AnfFLXAYvR4ac4oucdr4RRR1wTd MG6BbZjbGDD0jkkyfl7oeDWc0kbtaOXJbJ0Z37fgsM7eKuGpKRMKI5NhDniAT8Aje/Utb2Gtq XRcRZB4si5JGM/iVioSy94HD1cdytHiGDiD8bN01h4gxEg/I7clPpMer44b31K6qYPLuE2FAQ Ows3puz+olxPU0p1BeELH2FT7Bda5gyrtxx+71Zr9Y07VhXmUh1j54KtDdxdliCEg9Ui1QFKD wL4A/eMPTIZyb7gQP9O1kIhGPUBu6jdCYHBRj6xRclFQLQ2U0TlsfEFHTtmb+kt2omei7tX/b pRPgAHIrslMB9vp+vUc2BhuEf7qaY+Joi/kHc8SV79+dKHvuvycZDahOR6K4k0tkzSZR6NfKe xb7AW8Z7L05i0VCW6V4LpWc3/Ilqx73Bsbri7TMiLEVmF8MNxIAyfhGNyVVu5hLdDN9mokhba X2pKVuiTs9y5NkcohZN9uH8IcHMAe8IvcDE3374FgL4gXNoCwfOuhB0cUpag/0OCoSgUwz+Ai lyU+Fs0Cmc44oWWSXu29fI1DuPxnWZcuPRfamNU7THlPaF3lh85WzPVSUgwN6ej0lu0UjDpzd +W4IX7N6ztfbLXeIilGWuvVtJRG+WRhweGV+8J8lrRhSkgXjiD2Wky4PV5avaY11DdlqQKyCa uYNmLrntT72Lai6hXGsqH5I2dGvQFvByVd0MXavSdHGHMR9oWj0c7n12vmjfKvw6o1yituc1B CpLNlpCHGmkvg3fKQ6k3zdzP/eYL6tbr8qM0GI/LwcjDpxUbSOrbCuCE/OfXyP/PDxqTAX4dq sJTy3pdYL6oKwzWtC8xLkGcpgZaILxgigmHOhsQi2SbfZxmVWzIaMxGiMXiO4xSKO2aCGSlUc /q0BqttpKgchHaor95T1xyW9wzYilawDWnHCd/MEdS0IPZhoMTjqbiNZ3UCqddI/7m5UNf4zl oa7ffuaBM8hvPVYvucloTWnYTsPJUSlQwYthJ930MkLbHn3QqYqXOkFKjLy+4Y6o7JFvE= X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.102.4 at phobos.denx.de X-Virus-Status: Clean From: Joel Peshkin Add support for stack protector for UBOOT, SPL, and TPL as well as new pytest for stackprotector Signed-off-by: Joel Peshkin Adjust UEFI build flags. Signed-off-by: Heinrich Schuchardt --- v10: Adjust UEFI build flags. Remove unused DECLARE_GLOBAL_DATA_PTR in cmd/stackprot_test.c. Add missing include asm/global_data.h in common/stackprot.c. --- MAINTAINERS | 7 +++++++ Makefile | 5 +++++ arch/arm/config.mk | 3 ++- arch/riscv/lib/Makefile | 1 + arch/x86/config.mk | 2 +- cmd/Kconfig | 9 +++++++++ cmd/Makefile | 1 + cmd/stackprot_test.c | 19 +++++++++++++++++++ common/Kconfig | 17 +++++++++++++++++ common/Makefile | 1 + common/stackprot.c | 20 ++++++++++++++++++++ configs/sandbox_defconfig | 2 ++ scripts/Makefile.spl | 6 ++++++ test/py/tests/test_stackprotector.py | 14 ++++++++++++++ 14 files changed, 105 insertions(+), 2 deletions(-) create mode 100644 cmd/stackprot_test.c create mode 100644 common/stackprot.c create mode 100644 test/py/tests/test_stackprotector.py -- 2.30.2 diff --git a/MAINTAINERS b/MAINTAINERS index c6dd9bf838..2d267aeff2 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1062,6 +1062,13 @@ F: include/sqfs.h F: cmd/sqfs.c F: test/py/tests/test_fs/test_squashfs/ +STACKPROTECTOR +M: Joel Peshkin +S: Maintained +F: common/stackprot.c +F: cmd/stackprot_test.c +F: test/py/tests/test_stackprotector.py + TARGET_BCMNS3 M: Bharat Gooty M: Rayagonda Kokatanur diff --git a/Makefile b/Makefile index 193aa4d1c9..30565255b5 100644 --- a/Makefile +++ b/Makefile @@ -676,7 +676,12 @@ else KBUILD_CFLAGS += -O2 endif +ifeq ($(CONFIG_STACKPROTECTOR),y) +KBUILD_CFLAGS += $(call cc-option,-fstack-protector-strong) +CFLAGS_EFI += $(call cc-option,-fno-stack-protector) +else KBUILD_CFLAGS += $(call cc-option,-fno-stack-protector) +endif KBUILD_CFLAGS += $(call cc-option,-fno-delete-null-pointer-checks) # disable stringop warnings in gcc 8+ diff --git a/arch/arm/config.mk b/arch/arm/config.mk index 4153f7e371..e79f0104b9 100644 --- a/arch/arm/config.mk +++ b/arch/arm/config.mk @@ -11,7 +11,8 @@ CONFIG_STANDALONE_LOAD_ADDR = 0xc100000 endif endif -CFLAGS_NON_EFI := -fno-pic -ffixed-r9 -ffunction-sections -fdata-sections +CFLAGS_NON_EFI := -fno-pic -ffixed-r9 -ffunction-sections -fdata-sections \ + -fstack-protector-strong CFLAGS_EFI := -fpic -fshort-wchar LDFLAGS_FINAL += --gc-sections diff --git a/arch/riscv/lib/Makefile b/arch/riscv/lib/Makefile index ff0677aa96..d08cbe9b79 100644 --- a/arch/riscv/lib/Makefile +++ b/arch/riscv/lib/Makefile @@ -27,6 +27,7 @@ obj-$(CONFIG_SPL_BUILD) += spl.o obj-y += fdt_fixup.o # For building EFI apps +CFLAGS_NON_EFI := -fstack-protector-strong CFLAGS_$(EFI_CRT0) := $(CFLAGS_EFI) CFLAGS_REMOVE_$(EFI_CRT0) := $(CFLAGS_NON_EFI) diff --git a/arch/x86/config.mk b/arch/x86/config.mk index 3067702858..7a8242562d 100644 --- a/arch/x86/config.mk +++ b/arch/x86/config.mk @@ -42,7 +42,7 @@ OBJCOPYFLAGS_EFI := -j .text -j .sdata -j .data -j .dynamic -j .dynsym \ # Compiler flags to be added when building UEFI applications CFLAGS_EFI := -fpic -fshort-wchar # Compiler flags to be removed when building UEFI applications -CFLAGS_NON_EFI := -mregparm=3 +CFLAGS_NON_EFI := -mregparm=3 -fstack-protector-strong ifeq ($(CONFIG_EFI_STUB_64BIT),) CFLAGS_EFI += $(call cc-option, -mno-red-zone) diff --git a/cmd/Kconfig b/cmd/Kconfig index c735e81b37..420c1f0f94 100644 --- a/cmd/Kconfig +++ b/cmd/Kconfig @@ -2324,6 +2324,15 @@ config CMD_AVB avb read_part_hex - read data from partition and output to stdout avb write_part - write data to partition avb verify - run full verification chain + +config CMD_STACKPROTECTOR_TEST + bool "Test command for stack protector" + depends on STACKPROTECTOR + help + Enable stackprot_test command + The stackprot_test command will force a stack overrun to test + the stack smashing detection mechanisms. + endmenu config CMD_UBI diff --git a/cmd/Makefile b/cmd/Makefile index e606ac4e8c..4977fa15f4 100644 --- a/cmd/Makefile +++ b/cmd/Makefile @@ -144,6 +144,7 @@ obj-$(CONFIG_CMD_SPI) += spi.o obj-$(CONFIG_CMD_STRINGS) += strings.o obj-$(CONFIG_CMD_SMC) += smccc.o obj-$(CONFIG_CMD_SYSBOOT) += sysboot.o pxe_utils.o +obj-$(CONFIG_CMD_STACKPROTECTOR_TEST) += stackprot_test.o obj-$(CONFIG_CMD_TERMINAL) += terminal.o obj-$(CONFIG_CMD_TIME) += time.o obj-$(CONFIG_CMD_TIMER) += timer.o diff --git a/cmd/stackprot_test.c b/cmd/stackprot_test.c new file mode 100644 index 0000000000..36f5bac8d2 --- /dev/null +++ b/cmd/stackprot_test.c @@ -0,0 +1,19 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright 2021 Broadcom + */ + +#include +#include + +static int do_test_stackprot_fail(struct cmd_tbl *cmdtp, int flag, int argc, + char *const argv[]) +{ + char a[128]; + + memset(a, 0xa5, 512); + return 0; +} + +U_BOOT_CMD(stackprot_test, 1, 1, do_test_stackprot_fail, + "test stack protector fail", ""); diff --git a/common/Kconfig b/common/Kconfig index 0e36dfd236..26496f9a2e 100644 --- a/common/Kconfig +++ b/common/Kconfig @@ -618,6 +618,23 @@ config TPL_HASH and the algorithms it supports are defined in common/hash.c. See also CMD_HASH for command-line access. +config STACKPROTECTOR + bool "Stack Protector buffer overflow detection" + default n + help + Enable stack smash detection through compiler's stack-protector + canary logic + +config SPL_STACKPROTECTOR + bool "Stack Protector buffer overflow detection for SPL" + depends on STACKPROTECTOR && SPL + default n + +config TPL_STACKPROTECTOR + bool "Stack Protector buffer overflow detection for TPL" + depends on STACKPROTECTOR && TPL + default n + endmenu menu "Update support" diff --git a/common/Makefile b/common/Makefile index 215b8b26fd..bdad9655a9 100644 --- a/common/Makefile +++ b/common/Makefile @@ -137,4 +137,5 @@ obj-$(CONFIG_CMD_LOADB) += xyzModem.o obj-$(CONFIG_$(SPL_TPL_)YMODEM_SUPPORT) += xyzModem.o obj-$(CONFIG_AVB_VERIFY) += avb_verify.o +obj-$(CONFIG_$(SPL_TPL_)STACKPROTECTOR) += stackprot.o obj-$(CONFIG_SCP03) += scp03.o diff --git a/common/stackprot.c b/common/stackprot.c new file mode 100644 index 0000000000..d5b7061665 --- /dev/null +++ b/common/stackprot.c @@ -0,0 +1,20 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright 2021 Broadcom + */ + +#include +#include + +DECLARE_GLOBAL_DATA_PTR; + +unsigned long __stack_chk_guard = (unsigned long)(0xfeedf00ddeadbeef & ~0UL); + +void __stack_chk_fail(void) +{ + void *ra; + + ra = __builtin_extract_return_addr(__builtin_return_address(0)); + panic("Stack smashing detected in function:\n%p relocated from %p", + ra, ra - gd->reloc_off); +} diff --git a/configs/sandbox_defconfig b/configs/sandbox_defconfig index 5da8d1679e..bc14da668d 100644 --- a/configs/sandbox_defconfig +++ b/configs/sandbox_defconfig @@ -25,6 +25,7 @@ CONFIG_LOG_SYSLOG=y CONFIG_LOG_ERROR_RETURN=y CONFIG_DISPLAY_BOARDINFO_LATE=y CONFIG_MISC_INIT_F=y +CONFIG_STACKPROTECTOR=y CONFIG_ANDROID_AB=y CONFIG_CMD_CPU=y CONFIG_CMD_LICENSE=y @@ -97,6 +98,7 @@ CONFIG_CMD_CRAMFS=y CONFIG_CMD_EXT4_WRITE=y CONFIG_CMD_SQUASHFS=y CONFIG_CMD_MTDPARTS=y +CONFIG_CMD_STACKPROTECTOR_TEST=y CONFIG_MAC_PARTITION=y CONFIG_AMIGA_PARTITION=y CONFIG_OF_CONTROL=y diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl index ca988224da..c69525fa74 100644 --- a/scripts/Makefile.spl +++ b/scripts/Makefile.spl @@ -67,6 +67,12 @@ include $(srctree)/scripts/Makefile.lib KBUILD_CFLAGS += -ffunction-sections -fdata-sections LDFLAGS_FINAL += --gc-sections +ifeq ($(CONFIG_$(SPL_TPL_)STACKPROTECTOR),y) +KBUILD_CFLAGS += -fstack-protector-strong +else +KBUILD_CFLAGS += -fno-stack-protector +endif + # FIX ME cpp_flags := $(KBUILD_CPPFLAGS) $(PLATFORM_CPPFLAGS) $(UBOOTINCLUDE) \ $(NOSTDINC_FLAGS) diff --git a/test/py/tests/test_stackprotector.py b/test/py/tests/test_stackprotector.py new file mode 100644 index 0000000000..b009437e5e --- /dev/null +++ b/test/py/tests/test_stackprotector.py @@ -0,0 +1,14 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2021 Broadcom + +import pytest +import signal + +@pytest.mark.buildconfigspec('cmd_stackprotector_test') +def test_stackprotector(u_boot_console): + """Test that the stackprotector function works.""" + + u_boot_console.run_command('stackprot_test',wait_for_prompt=False) + expected_response = 'Stack smashing detected' + u_boot_console.wait_for(expected_response) + u_boot_console.restart_uboot()