From patchwork Mon Mar 20 15:41:01 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Patchwork-Id: 72235 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:604a:0:0:0:0:0 with SMTP id j10csp1293303wrt; Mon, 20 Mar 2023 08:57:19 -0700 (PDT) X-Google-Smtp-Source: AK7set8rf1uXOcWulPrmLlnj627v1Tm8iiyLkmrxbdQbM6rrQgKpBS2eKY+Lmz9e0YFc1U6quGxI X-Received: by 2002:a17:903:22c8:b0:19e:8075:5545 with SMTP id y8-20020a17090322c800b0019e80755545mr21633808plg.54.1679327839477; Mon, 20 Mar 2023 08:57:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679327839; cv=none; d=google.com; s=arc-20160816; b=kfeHWhJEsrVKs8GnSWd9AJTTrl2zgURoIl0/HLEtKVNRaYqMKP+QiYFOvgsXUJPI5r 4Bq/EG2TIecBMEQVYEpa/zo7a6/oagZwxKbkO9lhj+kUa2S0JLjGf9Z7IDhVtzDVwhHn c0q2e8/XTduylthBBuYAHREip3JKVnjWeBNWf3KU2qJ0nsfCX5n+MzUIjN35kbGBjZnq i+S5cz4K6PqnrDKOnk8AzAbuGzUx/H7sNyYvrbVnXUWRFM7vFu9TwAHGwhitTVpHi2Sx HvakrdvCzFp3a3QDKHYJfaW2HsGGRAEiFVnDXGsN125Xus+zwGWQHwLEe8pjYEuf/wnW dr+Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:dkim-signature :from; bh=/l6zsfFmVn/z5ySGumD472Tolg4MNvj8enNVUN/9ffM=; b=s4XNJhBn+RQ8j/Q9pMqxowutByE3TNxZ4Ui9Ebog4Vcsn3BE4vu0y4ibP2fsjK02Le +mdUuDwQuEt/ev95Zapm7h8B7VfEg8pZ+kleOfMHe55pE6VZyWD1cftAzGDPAK1Bdl7b G8zntTnSf1fxL/MEhcD47UiZQrWArMfUNo+T0KrtsCROY0+0VuD7p9j8ftb4aT8D6dcR o94ySx3jmd10lPQJxJkiXbOgxfKatoDeLWgYwOr1OgKmPEY4hN0R4X3czszm++Agdhe/ 7KRLQ0pVahAmfUL3Y+0zWgCaaUF84T1yy1EyrMcoufpA2LMaGqx8CvTP83OGiJQCWQvd 9cYQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@weissschuh.net header.s=mail header.b=Jf0ZSaLK; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id i1-20020a170902c94100b001870c4d4378si11445372pla.498.2023.03.20.08.57.06; Mon, 20 Mar 2023 08:57:19 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@weissschuh.net header.s=mail header.b=Jf0ZSaLK; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232240AbjCTPvO (ORCPT + 99 others); Mon, 20 Mar 2023 11:51:14 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58992 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233321AbjCTPtq (ORCPT ); Mon, 20 Mar 2023 11:49:46 -0400 Received: from todd.t-8ch.de (todd.t-8ch.de [IPv6:2a01:4f8:c010:41de::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 76A7018B2E; Mon, 20 Mar 2023 08:41:22 -0700 (PDT) From: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=weissschuh.net; s=mail; t=1679326880; bh=xDSjSascpesmgYZoOnKeZCwVvAZAUVs1JwzaeHlI+NA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Jf0ZSaLKTLUuhpDms909S2dyE0kwa5jMwuPDEE8OAtZ3FWHz8Yzzjs3kqtK/6KJk9 8FwfTH/Hp53ATcS0Sx/1VL8QKhauW2TjTiLUHr+wO8t6mIxY2F6HBjy6BfQFAp3R8s R3RszYh9AwSFcBN0COT55mM1O3erj2O1KXq2CoFM= Date: Mon, 20 Mar 2023 15:41:01 +0000 Subject: [PATCH v2 1/8] tools/nolibc: add definitions for standard fds MIME-Version: 1.0 Message-Id: <20230223-nolibc-stackprotector-v2-1-4c938e098d67@weissschuh.net> References: <20230223-nolibc-stackprotector-v2-0-4c938e098d67@weissschuh.net> In-Reply-To: <20230223-nolibc-stackprotector-v2-0-4c938e098d67@weissschuh.net> To: Willy Tarreau , Shuah Khan Cc: linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Mailer: b4 0.12.1 X-Developer-Signature: v=1; a=ed25519-sha256; t=1679326877; l=623; i=linux@weissschuh.net; s=20221212; h=from:subject:message-id; bh=xDSjSascpesmgYZoOnKeZCwVvAZAUVs1JwzaeHlI+NA=; b=I6y1pduG9zTlWy+fGjussRCl8YSaD3MtbMYd9dIJFX/jUULKfAjFdYAwjL213kqIP1OJ/a+5T /jlT5ioSOXtAAGannMTNat/uBhM5w1+WgYLl1nXMAttBvnUh/1+48bj X-Developer-Key: i=linux@weissschuh.net; a=ed25519; pk=KcycQgFPX2wGR5azS7RhpBqedglOZVgRPfdFSPB1LNw= X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1760902868789023684?= X-GMAIL-MSGID: =?utf-8?q?1760902868789023684?= These are useful for users and will also be used in an upcoming testcase. Signed-off-by: Thomas Weißschuh --- tools/include/nolibc/unistd.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tools/include/nolibc/unistd.h b/tools/include/nolibc/unistd.h index 1cfcd52106a4..ac7d53d986cd 100644 --- a/tools/include/nolibc/unistd.h +++ b/tools/include/nolibc/unistd.h @@ -13,6 +13,11 @@ #include "sys.h" +#define STDIN_FILENO 0 +#define STDOUT_FILENO 1 +#define STDERR_FILENO 2 + + static __attribute__((unused)) int msleep(unsigned int msecs) { From patchwork Mon Mar 20 15:41:02 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Patchwork-Id: 72232 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:604a:0:0:0:0:0 with SMTP id j10csp1293003wrt; Mon, 20 Mar 2023 08:56:38 -0700 (PDT) X-Google-Smtp-Source: AK7set+ZEbAcuPZgOrJ6SHGPbNc8qIVI0O1LxSuZ2K6NFxz6PSop4UClKtC+pyNStTFtWKViGYJb X-Received: by 2002:a05:6a20:1b21:b0:bc:b9d2:f0f8 with SMTP id ch33-20020a056a201b2100b000bcb9d2f0f8mr14956388pzb.24.1679327798512; Mon, 20 Mar 2023 08:56:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679327798; cv=none; d=google.com; s=arc-20160816; b=VZeM4spw1NSuT0NigIA5dAWZJ9UzhOMc4rXByLCS9ifcdbcM9sgJ8wqyfgR2MauIrQ h2uBzwLlD9eqX5xHl8C7A7q2siHHhvBaEkAaKvVV7bitSi5Ji9Pvh2YchbdGQ7F7OIDD CYqT/ECvanI4CixOMloTk6t0SYTxRfk4mRg2ZJ8RT7DRKQznnWXszanUlQ1oPM1VE3pi OutU/rPyEXo6eccDBmM0wlSzinfnnEpMZmzkt1VV2CqqnRaJxXlqMn81DZkkWdPSUrgP WORgi2T4JxELYMI+GXSnphynY1LGGSv8DHLkcXHLp85zTvtloV0kmwubsEq3sQImIiwu 4AhQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:dkim-signature :from; bh=QtaYHJK06RUU1vl5oGY7FqPpAkb/wrFegpwEGEwFLhE=; b=TVjH7N78/XZIWadiMF5j5o8q6cBShBiW3QoIdWZaR0nISWLpcK5o1Rxnal6jBNmPlS DVLuPyUF2TZ3ElHnAlZNqnZdcFF4DDfuIW3floV2c/V86tbCW7KKqzjdNYrxxSXDTyd/ foyOijuKW5kwuZad+8an5qe7AKA6lc2JwjOToetDZSDgMxcT8FdxIdf799/8Eah6OIkL xfJ4nkDogseOaLW/m+s89KMqYv6dPpajm6MmMfQdH+E/fZYGPigOhhps1svoq9zSvFLT N3ThHRXFcgPV+v+bh4r/wvdY9Y3wvaszy/QmATA7wD9+FtFJCpV0mTcYsheD64/7ao40 My7A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@weissschuh.net header.s=mail header.b=IHMVRtWu; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id j15-20020a63cf0f000000b004fb8f5e1a8dsi10261562pgg.111.2023.03.20.08.56.24; Mon, 20 Mar 2023 08:56:38 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@weissschuh.net header.s=mail header.b=IHMVRtWu; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232174AbjCTPvD (ORCPT + 99 others); Mon, 20 Mar 2023 11:51:03 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57636 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233318AbjCTPtq (ORCPT ); Mon, 20 Mar 2023 11:49:46 -0400 Received: from todd.t-8ch.de (todd.t-8ch.de [IPv6:2a01:4f8:c010:41de::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 75DFF17CC2; Mon, 20 Mar 2023 08:41:22 -0700 (PDT) From: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=weissschuh.net; s=mail; t=1679326880; bh=kDTA/21oI749eXgqkTICe/hP0ZrhsZxLs1p4SViVcik=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=IHMVRtWuNIrMjPv+fPIaRco5Zvkm46iZEMI6ff032Rx7DVn3JcRHkI40aVEhiUpsy agcXLWUHKr36lnpyCVx1+LYWzWdWQ9LFM7N10AAAvnJueOB77lj6m8qrMbBO23XECS 8AJ1byM4MDVDKet325db7VjMOdhmzX/dPHJPuXyg= Date: Mon, 20 Mar 2023 15:41:02 +0000 Subject: [PATCH v2 2/8] tools/nolibc: add helpers for wait() signal exits MIME-Version: 1.0 Message-Id: <20230223-nolibc-stackprotector-v2-2-4c938e098d67@weissschuh.net> References: <20230223-nolibc-stackprotector-v2-0-4c938e098d67@weissschuh.net> In-Reply-To: <20230223-nolibc-stackprotector-v2-0-4c938e098d67@weissschuh.net> To: Willy Tarreau , Shuah Khan Cc: linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Mailer: b4 0.12.1 X-Developer-Signature: v=1; a=ed25519-sha256; t=1679326878; l=748; i=linux@weissschuh.net; s=20221212; h=from:subject:message-id; bh=kDTA/21oI749eXgqkTICe/hP0ZrhsZxLs1p4SViVcik=; b=7SZUc64snn7Oyq0C6XQf38MIzZwpIuEH3UWa7OMnKFv93KjtsDh0KApaaF2mWdMJT1SQxXq3t aao0zmzVnoqBwWiEy8lAX2FS61kHwgkQPySInAqZn+/Z9f20VQ7UHUB X-Developer-Key: i=linux@weissschuh.net; a=ed25519; pk=KcycQgFPX2wGR5azS7RhpBqedglOZVgRPfdFSPB1LNw= X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1760902825896631697?= X-GMAIL-MSGID: =?utf-8?q?1760902825896631697?= These are useful for users and will also be used in an upcoming testcase. Signed-off-by: Thomas Weißschuh --- tools/include/nolibc/types.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/include/nolibc/types.h b/tools/include/nolibc/types.h index 10823e5ac44b..aedd7d9e3f64 100644 --- a/tools/include/nolibc/types.h +++ b/tools/include/nolibc/types.h @@ -97,6 +97,8 @@ /* Macros used on waitpid()'s return status */ #define WEXITSTATUS(status) (((status) & 0xff00) >> 8) #define WIFEXITED(status) (((status) & 0x7f) == 0) +#define WTERMSIG(status) ((status) & 0x7f) +#define WIFSIGNALED(status) ((status) - 1 < 0xff) /* waitpid() flags */ #define WNOHANG 1 From patchwork Mon Mar 20 15:41:03 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Patchwork-Id: 72259 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:604a:0:0:0:0:0 with SMTP id j10csp1309305wrt; Mon, 20 Mar 2023 09:25:43 -0700 (PDT) X-Google-Smtp-Source: AK7set8E0CjWMX4BAV3kIn820GCyCEzhULHfvaO3q91MK4MmwUH8TbdSDYsm09JBHv6ey3sjQUcx X-Received: by 2002:a17:902:c792:b0:1a0:437c:4e82 with SMTP id w18-20020a170902c79200b001a0437c4e82mr14522028pla.13.1679329543141; Mon, 20 Mar 2023 09:25:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679329543; cv=none; d=google.com; s=arc-20160816; b=BYmDj8g+oJfgYg0evbAZhxALl0IoBsY9UyA3ofLHxmHvKze6+IAm/mwM64WWPzp4YZ HKKNYkE3aJQ/UcabiUoI/fsx6o/XyoG0DFtrQ+VU+qEuB+K+HcHhhlEQDHhHkDNwebqv u3vV+kKlONwgZ50MRBeqFpNzBwQgbSG2S5lIa6VyStGX4c1ZHQ8Px3cpXhrllZIkiuny Vr/U2p2hKsCktcK/zlubLqPxR26T2n9KBpuI9b1Jew2/Xepj6O1pMcnmxHr1QmU6HMlS 7A8uSZTih4MQww0gQLwRZz5Aq5KtmzotZNxw2PR3hvgZMAUvxCmZ/2M1AuLugaiAPRWL rctw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:dkim-signature :from; bh=gY5rk8/oTzIy5M7318aabjTygTRT/mBlsxh7+DqGfoY=; b=o64MPjIFrJEZhfhgxuovTJ7hL8eOhACaI/HHhP+iq6YgfhOBQtpDhjoJ3uo0qhnmuL A4CqFVn7bUeXm2zkI2NqC4NWo5EzVEZQYnaPUCehHxJKx9U1e3ZQiPIjofVBH042ylcQ KXekr/YJDk0hWcGCTDlNZBvWjlCzpfTsvjHMOS4EVrinVYL5YUUXYCuKG8pYC0zCRFuQ q3SOgtDlEvDqL/z81s5IaLqej/YCEw1kgYzNjZs9zq8gL5D/tu0gicBeG6wDny0BWYpS Aw+Y0P2hlwFGRVT0slnJVjjt1O4cUKH51uhs9rLu+eujQhbQQakipgnEJMxPDYQ3bFor uSVA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@weissschuh.net header.s=mail header.b="eFkBuK/S"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id c9-20020a170903234900b001a1d5b745e3si2606613plh.557.2023.03.20.09.25.27; Mon, 20 Mar 2023 09:25:43 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@weissschuh.net header.s=mail header.b="eFkBuK/S"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232199AbjCTPvK (ORCPT + 99 others); Mon, 20 Mar 2023 11:51:10 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52850 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233317AbjCTPtq (ORCPT ); Mon, 20 Mar 2023 11:49:46 -0400 Received: from todd.t-8ch.de (todd.t-8ch.de [159.69.126.157]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5FDC21715A; Mon, 20 Mar 2023 08:41:22 -0700 (PDT) From: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=weissschuh.net; s=mail; t=1679326880; bh=yB2bNNpPwty3egJ8yVVXOGLcmpOFHoeuVC5kDwG8ohI=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=eFkBuK/S4F2SEkh7vacz64gEtABXZiqYJQTWItjyffou0X6moh2Edq/OQSwtgh4Ri d7v6N98AKifzaxjV9Fr10n8y8O3SkKDbLazTDZXNVdCwrj3KIqQPJOIXBxaECQYdTd IlfnIdqnMdNAXCk/czAfGHc9X2Up6qhFDIac8HSk= Date: Mon, 20 Mar 2023 15:41:03 +0000 Subject: [PATCH v2 3/8] tools/nolibc: tests: constify test_names MIME-Version: 1.0 Message-Id: <20230223-nolibc-stackprotector-v2-3-4c938e098d67@weissschuh.net> References: <20230223-nolibc-stackprotector-v2-0-4c938e098d67@weissschuh.net> In-Reply-To: <20230223-nolibc-stackprotector-v2-0-4c938e098d67@weissschuh.net> To: Willy Tarreau , Shuah Khan Cc: linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Mailer: b4 0.12.1 X-Developer-Signature: v=1; a=ed25519-sha256; t=1679326878; l=802; i=linux@weissschuh.net; s=20221212; h=from:subject:message-id; bh=yB2bNNpPwty3egJ8yVVXOGLcmpOFHoeuVC5kDwG8ohI=; b=1xaQrroQTlcIJhL2JEaH2lGu9cjtjGYX88x03R//qu/u9/ZsqxCO6nP6wkI1lnlELbadj7STf ePm1XzGV+r9BZjLWRL9p+8/ttwuNEIy/bRrWfg6VxlV1GxLFo4mHd6B X-Developer-Key: i=linux@weissschuh.net; a=ed25519; pk=KcycQgFPX2wGR5azS7RhpBqedglOZVgRPfdFSPB1LNw= X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1760904654805769540?= X-GMAIL-MSGID: =?utf-8?q?1760904654805769540?= Nothing ever modifies this structure. Signed-off-by: Thomas Weißschuh --- tools/testing/selftests/nolibc/nolibc-test.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/testing/selftests/nolibc/nolibc-test.c b/tools/testing/selftests/nolibc/nolibc-test.c index 6a7c13f0cd61..fb2d4872fac9 100644 --- a/tools/testing/selftests/nolibc/nolibc-test.c +++ b/tools/testing/selftests/nolibc/nolibc-test.c @@ -717,7 +717,7 @@ int prepare(void) } /* This is the definition of known test names, with their functions */ -static struct test test_names[] = { +static const struct test test_names[] = { /* add new tests here */ { .name = "syscall", .func = run_syscall }, { .name = "stdlib", .func = run_stdlib }, From patchwork Mon Mar 20 15:41:04 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Patchwork-Id: 72234 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:604a:0:0:0:0:0 with SMTP id j10csp1293248wrt; Mon, 20 Mar 2023 08:57:13 -0700 (PDT) X-Google-Smtp-Source: AK7set+rznuOywtlHweYW/rbFtVpqk7alkOxdNxwUCa/D7B/rOENRpSNAEByS7NGI2CgUOlRnthA X-Received: by 2002:a17:903:80e:b0:19f:1c69:54b5 with SMTP id kr14-20020a170903080e00b0019f1c6954b5mr15780927plb.12.1679327832933; Mon, 20 Mar 2023 08:57:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679327832; cv=none; d=google.com; s=arc-20160816; b=MYyg5nQXB6CDS+U33R67KQm+PDdLUkHh1K7fWFNULCymByQ4O8SG1W4YMlyalMduzA S0CpOwuRD9xVu22xcKL646E6lvcDkFkv+zrylP9HJTlWdyDzaq0/iw8W/8W0aqQGRMaG 49o1KJj8HknF7rmUV2NEqep3Q/re/2WfgKAlCSC7cLWsUTym/PRJU05LwKl17Snj/aYh Df3h3V2CV0znvxonhd+g9GpZpA8T9h/Rd2suFYyMuDZ61xaXfEkvJcjLdqYwdhN1kmIH ZGfIoREWUe5iaDjUidyYHwVnwnPlSWKQcU7/fE+3zN5ynJQtaEQ+pqi9jjIWaVEGtb5a iNOQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:dkim-signature :from; bh=pzyPXnJz1KP4g5z+IiaigmdR5ilFWYerQWMuECC9CaA=; b=GXe/0TNqZmh5ZL/U1kXYwEMCM4Lo34xxyXJOWKT1b7YgPvG07umYgPLNLFbBBVMszH 1HDYiBVID/DsdjD7j/CIxeQghfOYWtcwRDD3T+5U+g/OvzR9YbBVsbGMd+pdbltD1DrC R9ef3aBvqgqJR28uZQL5rBUZHmyubxHEFqvLXhP4eoDgoF2JGoZqntpIDjJwRRT9wgND 3EHsayNjKsY7Srtkla3u/TdBtuY26SpmCgFa2ejkmaisoqjx9tbeS599qK7+fZd/YFf1 4Wb5dx6o0lUPAP5FDZIw+nIWNK37dF8ZxCpYMh5/NUBO7Ii1wDWdTfkF27nzJ9QyLjPa onOw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@weissschuh.net header.s=mail header.b=tBQq0JK3; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id w7-20020a170902d70700b001a05bb13953si10571984ply.422.2023.03.20.08.56.55; Mon, 20 Mar 2023 08:57:12 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@weissschuh.net header.s=mail header.b=tBQq0JK3; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231347AbjCTPvG (ORCPT + 99 others); Mon, 20 Mar 2023 11:51:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54060 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233312AbjCTPtq (ORCPT ); Mon, 20 Mar 2023 11:49:46 -0400 Received: from todd.t-8ch.de (todd.t-8ch.de [IPv6:2a01:4f8:c010:41de::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 76C032A98E; Mon, 20 Mar 2023 08:41:22 -0700 (PDT) From: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=weissschuh.net; s=mail; t=1679326880; bh=SKQQeeAAWGRSm8SFG5OU6QwacV+yOMhgHKMMQrEuzXo=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=tBQq0JK3zlvRWZeoYiPAQ9wwGEa9T89SQKWD5RKqTC9lZOcrJAsmPoPuft4t8Fr51 A3lCGFeYxC6qnK6ejjhzSBU5KPz93y6aWL6NiU20i/nDCMV/wpOnp2Yy7L/juYGykJ LX/UCPXW00tem9ide6DIiHZEfvkOUMXvNO9Pdo3I= Date: Mon, 20 Mar 2023 15:41:04 +0000 Subject: [PATCH v2 4/8] tools/nolibc: add support for stack protector MIME-Version: 1.0 Message-Id: <20230223-nolibc-stackprotector-v2-4-4c938e098d67@weissschuh.net> References: <20230223-nolibc-stackprotector-v2-0-4c938e098d67@weissschuh.net> In-Reply-To: <20230223-nolibc-stackprotector-v2-0-4c938e098d67@weissschuh.net> To: Willy Tarreau , Shuah Khan Cc: linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Mailer: b4 0.12.1 X-Developer-Signature: v=1; a=ed25519-sha256; t=1679326878; l=3910; i=linux@weissschuh.net; s=20221212; h=from:subject:message-id; bh=SKQQeeAAWGRSm8SFG5OU6QwacV+yOMhgHKMMQrEuzXo=; b=pCpEl3ma7Rbkt+V7cxvV1fBSkxozeEcJnk8bVg0tqUNbIZG9dHPkeOWUPTAenPN8ljKX8rHrW r0bwZrQjKJaBU8EraYn5aWu0o7UNg3C60Q4DAKQyh7g/ncEFw40ZiEo X-Developer-Key: i=linux@weissschuh.net; a=ed25519; pk=KcycQgFPX2wGR5azS7RhpBqedglOZVgRPfdFSPB1LNw= X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1760902735549379982?= X-GMAIL-MSGID: =?utf-8?q?1760902861700725775?= This is useful when using nolibc for security-critical tools. Using nolibc has the advantage that the code is easily auditable and sandboxable with seccomp as no unexpected syscalls are used. Using compiler-assistent stack protection provides another security mechanism. For this to work the compiler and libc have to collaborate. This patch adds the following parts to nolibc that are required by the compiler: * __stack_chk_guard: random sentinel value * __stack_chk_fail: handler for detected stack smashes In addition an initialization function is added that randomizes the sentinel value. Only support for global guards is implemented. Register guards are useful in multi-threaded context which nolibc does not provide support for. Link: https://lwn.net/Articles/584225/ Signed-off-by: Thomas Weißschuh --- tools/include/nolibc/Makefile | 4 +-- tools/include/nolibc/nolibc.h | 1 + tools/include/nolibc/stackprotector.h | 53 +++++++++++++++++++++++++++++++++++ 3 files changed, 56 insertions(+), 2 deletions(-) diff --git a/tools/include/nolibc/Makefile b/tools/include/nolibc/Makefile index ec57d3932506..9839feafd38a 100644 --- a/tools/include/nolibc/Makefile +++ b/tools/include/nolibc/Makefile @@ -25,8 +25,8 @@ endif nolibc_arch := $(patsubst arm64,aarch64,$(ARCH)) arch_file := arch-$(nolibc_arch).h -all_files := ctype.h errno.h nolibc.h signal.h std.h stdint.h stdio.h stdlib.h \ - string.h sys.h time.h types.h unistd.h +all_files := ctype.h errno.h nolibc.h signal.h stackprotector.h std.h stdint.h \ + stdio.h stdlib.h string.h sys.h time.h types.h unistd.h # install all headers needed to support a bare-metal compiler all: headers diff --git a/tools/include/nolibc/nolibc.h b/tools/include/nolibc/nolibc.h index b2bc48d3cfe4..04739a6293c4 100644 --- a/tools/include/nolibc/nolibc.h +++ b/tools/include/nolibc/nolibc.h @@ -104,6 +104,7 @@ #include "string.h" #include "time.h" #include "unistd.h" +#include "stackprotector.h" /* Used by programs to avoid std includes */ #define NOLIBC diff --git a/tools/include/nolibc/stackprotector.h b/tools/include/nolibc/stackprotector.h new file mode 100644 index 000000000000..d119cbbbc256 --- /dev/null +++ b/tools/include/nolibc/stackprotector.h @@ -0,0 +1,53 @@ +/* SPDX-License-Identifier: LGPL-2.1 OR MIT */ +/* + * Stack protector support for NOLIBC + * Copyright (C) 2023 Thomas Weißschuh + */ + +#ifndef _NOLIBC_STACKPROTECTOR_H +#define _NOLIBC_STACKPROTECTOR_H + +#include "arch.h" + +#if defined(NOLIBC_STACKPROTECTOR) + +#if !defined(__ARCH_SUPPORTS_STACK_PROTECTOR) +#error "nolibc does not support stack protectors on this arch" +#endif + +#include "sys.h" +#include "stdlib.h" + +/* The functions in this header are using raw syscall macros to avoid + * triggering stack protector errors themselves + */ + +__attribute__((weak,noreturn,section(".text.nolibc_stack_chk"))) +void __stack_chk_fail(void) +{ + pid_t pid; + my_syscall3(__NR_write, STDERR_FILENO, "!!Stack smashing detected!!\n", 28); + pid = my_syscall0(__NR_getpid); + my_syscall2(__NR_kill, pid, SIGABRT); + for (;;); +} + +__attribute__((weak,noreturn,section(".text.nolibc_stack_chk"))) +void __stack_chk_fail_local(void) +{ + __stack_chk_fail(); +} + +__attribute__((weak,section(".data.nolibc_stack_chk"))) +uintptr_t __stack_chk_guard; + +__attribute__((weak,no_stack_protector,section(".text.nolibc_stack_chk"))) +void __stack_chk_init(void) +{ + my_syscall3(__NR_getrandom, &__stack_chk_guard, sizeof(__stack_chk_guard), 0); + /* a bit more randomness in case getrandom() fails */ + __stack_chk_guard ^= (uintptr_t) &__stack_chk_guard; +} +#endif // defined(NOLIBC_STACKPROTECTOR) + +#endif // _NOLIBC_STACKPROTECTOR_H From patchwork Mon Mar 20 15:41:05 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Patchwork-Id: 72233 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:604a:0:0:0:0:0 with SMTP id j10csp1293095wrt; Mon, 20 Mar 2023 08:56:52 -0700 (PDT) X-Google-Smtp-Source: AK7set88yk78ajlkSJaeOVlDm1uHbIuuj7vdTyvlet3wih7P96WgqIryAAFUsahhXoWKjtuYrL91 X-Received: by 2002:a05:6a20:1443:b0:c7:249:cd8c with SMTP id a3-20020a056a20144300b000c70249cd8cmr21899113pzi.5.1679327811773; Mon, 20 Mar 2023 08:56:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679327811; cv=none; d=google.com; s=arc-20160816; b=hBWETs8qy17OfXEpcv+6KhfXAGls7DE3ECm3XT+50ZfT6+4TbDMmAJJoI4w3uFZyjO JBhwZSB5MsVbbBwst5Np8AIYEZA7xsJ7PjtOaOlLbjww7EdgJXQqAYpi+QmX62nuR65Y /Z3DwdmcUF/Fo43hVtgDTTOWG1wnWK2cqdqckSOeZeiirfiMy1RxzQ5qtziJrtNJpYIw PZeReBxFPHYUTFSnykNzS20BiUHajkJXNt2i5Bb/pGWSBevtE8jr9U2iS+kntT1YZEyd /+pXB9kPoxBR/tHV6wByRH/wxQwwa7z79ve8dTQwaZZYa1x8i+99+pZV7YvmWXZbXsvw YRVQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:dkim-signature :from; bh=e5hQRtxXF2n3IqOwpkB6g80ZgcgBQxirGOtZhX8RAZs=; b=wbQjXbKVQQTX0iZ6wQ4NrZ88uX9iBopmh/DLi+liruM1vVrwrYZMlhAG2kxQ2lpkgg OvRELKMrxvl+2smFsElRd4sxvjV67fj50kVrYJIpDRun3me6Xm5dNfeSBhMduAB8MIuW pf8ehEWP6Ghy4gUIG8wLgQkI/16Xd1pu5CFfODBYfAMnoK9BtaeSB4D5ubBXrnsxJKKl 193NodQsd3GjvY9LJSyE6QUbyf3mvC2zB0b2QGcoq0pvTqrR+G2p9GQwiWPuHWYY041y /Rwhj3nhCksOirpRnD08yVzel8J/XRhoGKfEjf1smKlN+UcC/242VVT9ArbFsPjUBVSJ GnAA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@weissschuh.net header.s=mail header.b=VdYuP7uY; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id h70-20020a638349000000b0050f8bd1880bsi2054692pge.740.2023.03.20.08.56.39; Mon, 20 Mar 2023 08:56:51 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@weissschuh.net header.s=mail header.b=VdYuP7uY; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232284AbjCTPv0 (ORCPT + 99 others); Mon, 20 Mar 2023 11:51:26 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58996 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233330AbjCTPtr (ORCPT ); Mon, 20 Mar 2023 11:49:47 -0400 Received: from todd.t-8ch.de (todd.t-8ch.de [159.69.126.157]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DE4078A77; Mon, 20 Mar 2023 08:41:24 -0700 (PDT) From: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=weissschuh.net; s=mail; t=1679326881; bh=8+nQaJm+ZpSS5pDVDYI8Ih7aP+obiBBNskXrcuawcY4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=VdYuP7uYCUpZyRNirukTM8/cDEaFkpqBlXmt2CKnGfoSb+HKuGYOax1JiCSV2ZDdt LbJkixmmNM134m39O+raBfqHfuG3c9Hj2n8LdjunxEFlpwBFEN48z5HfW4SjPpLL7X oHx1Qg7jnXszNuARoiFN+CyCpfAa384ZtFERU0y0= Date: Mon, 20 Mar 2023 15:41:05 +0000 Subject: [PATCH v2 5/8] tools/nolibc: tests: fold in no-stack-protector cflags MIME-Version: 1.0 Message-Id: <20230223-nolibc-stackprotector-v2-5-4c938e098d67@weissschuh.net> References: <20230223-nolibc-stackprotector-v2-0-4c938e098d67@weissschuh.net> In-Reply-To: <20230223-nolibc-stackprotector-v2-0-4c938e098d67@weissschuh.net> To: Willy Tarreau , Shuah Khan Cc: linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Mailer: b4 0.12.1 X-Developer-Signature: v=1; a=ed25519-sha256; t=1679326878; l=987; i=linux@weissschuh.net; s=20221212; h=from:subject:message-id; bh=8+nQaJm+ZpSS5pDVDYI8Ih7aP+obiBBNskXrcuawcY4=; b=TaXGkzUL3xHCtunu6pxuTjT6Der+r4LEofS5YgQayMdk3NgAUO2r6DsVBZrRzelmREo9bB9L1 nrNsis9gLYgDvKhmE0MsrOgYVZe3KOKZ1ROVCIsjF6flvn6rD3033hm X-Developer-Key: i=linux@weissschuh.net; a=ed25519; pk=KcycQgFPX2wGR5azS7RhpBqedglOZVgRPfdFSPB1LNw= X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1760902839471810154?= X-GMAIL-MSGID: =?utf-8?q?1760902839471810154?= For the cflags to enable stack protectors to work properly they need to be specified after -fno-stack-protector. To do this fold all cflags into a single variable and move -fno-stack-protector before the arch-specific cflags. Signed-off-by: Thomas Weißschuh --- tools/testing/selftests/nolibc/Makefile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/nolibc/Makefile b/tools/testing/selftests/nolibc/Makefile index c99bbcda7495..236c0364f5fb 100644 --- a/tools/testing/selftests/nolibc/Makefile +++ b/tools/testing/selftests/nolibc/Makefile @@ -77,8 +77,9 @@ Q=@ endif CFLAGS_s390 = -m64 -CFLAGS ?= -Os -fno-ident -fno-asynchronous-unwind-tables $(CFLAGS_$(ARCH)) -CFLAGS += $(call cc-option,-fno-stack-protector) +CFLAGS ?= -Os -fno-ident -fno-asynchronous-unwind-tables \ + $(call cc-option,-fno-stack-protector) \ + $(CFLAGS_$(ARCH)) LDFLAGS := -s help: From patchwork Mon Mar 20 15:41:06 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Patchwork-Id: 72236 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:604a:0:0:0:0:0 with SMTP id j10csp1293420wrt; Mon, 20 Mar 2023 08:57:38 -0700 (PDT) X-Google-Smtp-Source: AK7set9a9Ju/6cx+XKYFrWvRiWUkBL2DMrlUz2KeBr+cKCG7HBZkdd0JXfCNLQOPeJIqp04+yiM8 X-Received: by 2002:a62:604:0:b0:625:2ed6:9070 with SMTP id 4-20020a620604000000b006252ed69070mr12812710pfg.22.1679327858030; Mon, 20 Mar 2023 08:57:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679327858; cv=none; d=google.com; s=arc-20160816; b=1C1/gsO5H+6mHqNY8ub50Fs3Hnr2Fhdf7zgJBkKkg7zF1BbNgoA90Tk8SyZ7TDubtR vRWEP4JidH3ksI72gN6a7R6YbGTM+/vHUT+/r2eakwARLWzB2NoQVh80JOWHoAiaHLRy uJ5cCakF6oDIH1QJS5WjuTLQtJB/zZ+AwcvqVlpLTxktqGjMx0613qjvGByO6F2/r1Uv q5FfGmC6QhzxpdJN1afbl7CB9mN+JpVbxSKoy7yIfBlO1srj8MXlNCELoVKfYS0YD8Xd lL1AF+DCbNk51iFeJtxA+Wjgrcbbgs/jWM5QOJHffy2vJwEMC7MM3odjsp9P8kqbsbX0 TvNw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:dkim-signature :from; bh=MFTEFQRM3BFT57qK5ggAuT2s7tDtmG3hjT+rJK8U/ro=; b=NM4N5XS/C7CMahYvKIWWpj3TgrESEuQ8ERYuglM22TBlff4aSVlhOd4QOtpM5/gQ0b 5BUpguFwKz+HU2z56DKGb3fRGJMq08H3JrT2++aRlN1T+G3T/dpKquUVTObJbgYOxz+x GIwcdBegWOEaBD4GnXuOCHp59kIOUGGuDQsQdSZC7+Os2oIuQ1bnqCeGXo4cF00gc3pH qZ7Vt190rNMiKlcN4RXmfe9DU2RdeODgYmuWTNkVIKX7Lbo682hBvCSH7vhh8lxEU0PA H1kpTykQjfV/6wiPHypVy2UeIrYi9Tuin1Jnu6xX39msIaRPFYZUm4RroCiCp+kLOCcE +7rA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@weissschuh.net header.s=mail header.b=ATWiycxw; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id f5-20020a056a0022c500b005a8d684c05dsi11842591pfj.271.2023.03.20.08.57.25; Mon, 20 Mar 2023 08:57:38 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@weissschuh.net header.s=mail header.b=ATWiycxw; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231371AbjCTPvV (ORCPT + 99 others); Mon, 20 Mar 2023 11:51:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57748 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233335AbjCTPts (ORCPT ); Mon, 20 Mar 2023 11:49:48 -0400 Received: from todd.t-8ch.de (todd.t-8ch.de [IPv6:2a01:4f8:c010:41de::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 05ADB2FCEC; Mon, 20 Mar 2023 08:41:24 -0700 (PDT) From: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=weissschuh.net; s=mail; t=1679326882; bh=JyOrsnSClXzOy2qb2h3WcW0lX0xzEzpyA/yocZM6rxk=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=ATWiycxwuKiBrIWlMK6qq40IkPG4fH++buyOoo6EGOYoFOtSIGAzoZsAqXb+2dGJQ ZEsaZVM8N7TMR8AO7nan8A8YlRSv4SuFmUL/dpDSXCBUDA7W2CYyCUYR8urCh5DKeO //bGbQYqU1BLQYufbCKrxNIL1vihCbzzHJHDHQpo= Date: Mon, 20 Mar 2023 15:41:06 +0000 Subject: [PATCH v2 6/8] tools/nolibc: tests: add test for -fstack-protector MIME-Version: 1.0 Message-Id: <20230223-nolibc-stackprotector-v2-6-4c938e098d67@weissschuh.net> References: <20230223-nolibc-stackprotector-v2-0-4c938e098d67@weissschuh.net> In-Reply-To: <20230223-nolibc-stackprotector-v2-0-4c938e098d67@weissschuh.net> To: Willy Tarreau , Shuah Khan Cc: linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Mailer: b4 0.12.1 X-Developer-Signature: v=1; a=ed25519-sha256; t=1679326878; l=2836; i=linux@weissschuh.net; s=20221212; h=from:subject:message-id; bh=JyOrsnSClXzOy2qb2h3WcW0lX0xzEzpyA/yocZM6rxk=; b=a8YNdJ/4b1JkbNuPWAJxJ2gYEKeTzYJ/KBfT3JFHFpkMiK7scEvSx+YJxAFnH7vcPBtu7lnN1 1oEQfg/daTYBQT1LG3XdxgmNwz9NXGeuhjVPrKHGPlSaeDbU9zJpMMv X-Developer-Key: i=linux@weissschuh.net; a=ed25519; pk=KcycQgFPX2wGR5azS7RhpBqedglOZVgRPfdFSPB1LNw= X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1760902888048969948?= X-GMAIL-MSGID: =?utf-8?q?1760902888048969948?= Test the previously introduce stack protector functionality in nolibc. Signed-off-by: Thomas Weißschuh --- tools/testing/selftests/nolibc/Makefile | 3 ++ tools/testing/selftests/nolibc/nolibc-test.c | 62 +++++++++++++++++++++++++++- 2 files changed, 63 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/nolibc/Makefile b/tools/testing/selftests/nolibc/Makefile index 236c0364f5fb..b4f818547f35 100644 --- a/tools/testing/selftests/nolibc/Makefile +++ b/tools/testing/selftests/nolibc/Makefile @@ -76,6 +76,9 @@ else Q=@ endif +CFLAGS_STACKPROTECTOR = -DNOLIBC_STACKPROTECTOR \ + $(call cc-option,-mstack-protector-guard=global) \ + $(call cc-option,-fstack-protector-all) CFLAGS_s390 = -m64 CFLAGS ?= -Os -fno-ident -fno-asynchronous-unwind-tables \ $(call cc-option,-fno-stack-protector) \ diff --git a/tools/testing/selftests/nolibc/nolibc-test.c b/tools/testing/selftests/nolibc/nolibc-test.c index fb2d4872fac9..21bacc928bf7 100644 --- a/tools/testing/selftests/nolibc/nolibc-test.c +++ b/tools/testing/selftests/nolibc/nolibc-test.c @@ -667,6 +667,63 @@ int run_stdlib(int min, int max) return ret; } +#if defined(__clang__) +__attribute__((optnone)) +#elif defined(__GNUC__) +__attribute__((optimize("O0"))) +#endif +static int smash_stack(void) +{ + char buf[100]; + + for (size_t i = 0; i < 200; i++) + buf[i] = 'P'; + + return 1; +} + +static int run_protection(int min, int max) +{ + pid_t pid; + int llen = 0, status; + + llen += printf("0 -fstackprotector "); + +#if !defined(NOLIBC_STACKPROTECTOR) + llen += printf("not supported"); + pad_spc(llen, 64, "[SKIPPED]\n"); + return 0; +#endif + + pid = -1; + pid = fork(); + + switch (pid) { + case -1: + llen += printf("fork()"); + pad_spc(llen, 64, "[FAIL]\n"); + return 1; + + case 0: + close(STDOUT_FILENO); + close(STDERR_FILENO); + + smash_stack(); + return 1; + + default: + pid = waitpid(pid, &status, 0); + + if (pid == -1 || !WIFSIGNALED(status) || WTERMSIG(status) != SIGABRT) { + llen += printf("waitpid()"); + pad_spc(llen, 64, "[FAIL]\n"); + return 1; + } + pad_spc(llen, 64, " [OK]\n"); + return 0; + } +} + /* prepare what needs to be prepared for pid 1 (stdio, /dev, /proc, etc) */ int prepare(void) { @@ -719,8 +776,9 @@ int prepare(void) /* This is the definition of known test names, with their functions */ static const struct test test_names[] = { /* add new tests here */ - { .name = "syscall", .func = run_syscall }, - { .name = "stdlib", .func = run_stdlib }, + { .name = "syscall", .func = run_syscall }, + { .name = "stdlib", .func = run_stdlib }, + { .name = "protection", .func = run_protection }, { 0 } }; From patchwork Mon Mar 20 15:41:07 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Patchwork-Id: 72256 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:604a:0:0:0:0:0 with SMTP id j10csp1307327wrt; Mon, 20 Mar 2023 09:21:58 -0700 (PDT) X-Google-Smtp-Source: AK7set+K1AREYvHnr6nAEILgW9BVGP4vcAsnAFBoUvGO7Ki05f2TtHAe78vJr95dJvHCm61K6hd0 X-Received: by 2002:a17:902:e384:b0:1a1:b5ce:5d03 with SMTP id g4-20020a170902e38400b001a1b5ce5d03mr6561827ple.10.1679329318437; Mon, 20 Mar 2023 09:21:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679329318; cv=none; d=google.com; s=arc-20160816; b=uzy0FlQ+/R30aU7MQLCuW5y77kGvivAzcHiAJvF8jLFgOhFsOaC+CaCmT+OEAyrPxa jv3+5nvCuodTTOBpsEiljlzejwP5Sd/0JIBSjbdvTdmxrPvDm7ZgkrchrxMr6D/8nN7d tIBWN+ThfweSRMhfOAVw98W4Z3yx0YdktkTZ/p+KlM0q5iaE1pZ/ofhOudn8MF/2tF9M jdVfEIj2VHnPLXHl9AszB+QOvI8y7gNYAxRPDpZVP49SjuaR/Brx2goXMEjjrprLHwQU dn8fXEGjCXq8ux5meBVsEcBmxEwnZ7D58T+ERrS+bXtawF3KPgyORvP6p3XhusBgWDpd +oOQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:dkim-signature :from; bh=zVwgIjhqPZ7znrvK7IQEnBqFvI+Qj1uZ1Y3bVt0kUJM=; b=CQkApRCJyEg2Fr+704AUI5XsUvW3qeqM2b5Gurr5URXRCxpXQvoKVLz5VsoGf8lxG7 3tAE4V/x95qnxROjjPvc78nryDQlrMlPovh8X1cfHxm0mVnnxur4tQ5BetcyjvNhLfP/ C/rcAZ84WesUtUlCO3DzoAN02jxmmuaPFdFsmwxElOhN8lLJXtJqSiufWEGZTKyEnVpF 73qBH5HLkP9X9vwkfd5u2u9CghBUL804rkqikl6OeJJTBTDzuWUStQgJgyiow5WlBjpc pfZMgBJbXSvfGzNe1LKz/WRgjrpqJNLaiJEv+yCrKsuhpLx6wQr4onzXoZa866Sbx8R2 uriQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@weissschuh.net header.s=mail header.b=mJXCmWqS; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id j12-20020a170903024c00b0019cec506164si11636797plh.178.2023.03.20.09.21.43; Mon, 20 Mar 2023 09:21:58 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@weissschuh.net header.s=mail header.b=mJXCmWqS; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231888AbjCTPv3 (ORCPT + 99 others); Mon, 20 Mar 2023 11:51:29 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55102 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233339AbjCTPts (ORCPT ); Mon, 20 Mar 2023 11:49:48 -0400 Received: from todd.t-8ch.de (todd.t-8ch.de [159.69.126.157]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DEF79126E7; Mon, 20 Mar 2023 08:41:25 -0700 (PDT) From: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=weissschuh.net; s=mail; t=1679326882; bh=ALZVNlFzQbWC29byVLfkuxfsVLHyQCL0ajAaJz9Wghg=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=mJXCmWqS/4IZFQHCr46z0tZvRa9YXKQ4aUQNimmk4UpuirJ0BT03sbDdhpmMC90m1 rGSdZU9Q4HAVm00YEnR1cHqRKQA5USjJ1EynQgafORZqb9q1sywlB7ffbHIymSttrS 0jgV3+/Bi0nPpSoLuqwL9pUVncmhdtVy+ir3V3uQ= Date: Mon, 20 Mar 2023 15:41:07 +0000 Subject: [PATCH v2 7/8] tools/nolibc: i386: add stackprotector support MIME-Version: 1.0 Message-Id: <20230223-nolibc-stackprotector-v2-7-4c938e098d67@weissschuh.net> References: <20230223-nolibc-stackprotector-v2-0-4c938e098d67@weissschuh.net> In-Reply-To: <20230223-nolibc-stackprotector-v2-0-4c938e098d67@weissschuh.net> To: Willy Tarreau , Shuah Khan Cc: linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Mailer: b4 0.12.1 X-Developer-Signature: v=1; a=ed25519-sha256; t=1679326878; l=1952; i=linux@weissschuh.net; s=20221212; h=from:subject:message-id; bh=ALZVNlFzQbWC29byVLfkuxfsVLHyQCL0ajAaJz9Wghg=; b=El8yLqzdmLyDrDEodwNEvkP2cW1baetn4H+tMOSptTv+otrxoY/5EA9EDstQjzRl1YDgSNyIs XHuoOMWg2rrA9Ax1QVdNjRVKKf5ulR5Z/fYy6JotvCSIeRh4TwMMdnp X-Developer-Key: i=linux@weissschuh.net; a=ed25519; pk=KcycQgFPX2wGR5azS7RhpBqedglOZVgRPfdFSPB1LNw= X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1760904419586089881?= X-GMAIL-MSGID: =?utf-8?q?1760904419586089881?= Enable the new stackprotector support for i386. Signed-off-by: Thomas Weißschuh --- tools/include/nolibc/arch-i386.h | 7 ++++++- tools/testing/selftests/nolibc/Makefile | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/tools/include/nolibc/arch-i386.h b/tools/include/nolibc/arch-i386.h index e8d0cf545bf1..2d98d78fd3f3 100644 --- a/tools/include/nolibc/arch-i386.h +++ b/tools/include/nolibc/arch-i386.h @@ -181,6 +181,8 @@ struct sys_stat_struct { char **environ __attribute__((weak)); const unsigned long *_auxv __attribute__((weak)); +#define __ARCH_SUPPORTS_STACK_PROTECTOR + /* startup code */ /* * i386 System V ABI mandates: @@ -188,9 +190,12 @@ const unsigned long *_auxv __attribute__((weak)); * 2) The deepest stack frame should be set to zero * */ -void __attribute__((weak,noreturn,optimize("omit-frame-pointer"))) _start(void) +void __attribute__((weak,noreturn,optimize("omit-frame-pointer"),no_stack_protector)) _start(void) { __asm__ volatile ( +#ifdef NOLIBC_STACKPROTECTOR + "call __stack_chk_init\n" // initialize stack protector +#endif "pop %eax\n" // argc (first arg, %eax) "mov %esp, %ebx\n" // argv[] (second arg, %ebx) "lea 4(%ebx,%eax,4),%ecx\n" // then a NULL then envp (third arg, %ecx) diff --git a/tools/testing/selftests/nolibc/Makefile b/tools/testing/selftests/nolibc/Makefile index b4f818547f35..8f069ebdd124 100644 --- a/tools/testing/selftests/nolibc/Makefile +++ b/tools/testing/selftests/nolibc/Makefile @@ -79,6 +79,7 @@ endif CFLAGS_STACKPROTECTOR = -DNOLIBC_STACKPROTECTOR \ $(call cc-option,-mstack-protector-guard=global) \ $(call cc-option,-fstack-protector-all) +CFLAGS_i386 = $(CFLAGS_STACKPROTECTOR) CFLAGS_s390 = -m64 CFLAGS ?= -Os -fno-ident -fno-asynchronous-unwind-tables \ $(call cc-option,-fno-stack-protector) \ From patchwork Mon Mar 20 15:41:08 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Patchwork-Id: 72254 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:604a:0:0:0:0:0 with SMTP id j10csp1307023wrt; Mon, 20 Mar 2023 09:21:20 -0700 (PDT) X-Google-Smtp-Source: AK7set86QB7OhTN3oxKFeHoHKPYR9d9TTztiDYlwB9PoTBwSycyOkP6y5slKAcUMtQa6Fzi5qgfC X-Received: by 2002:a05:6a20:9307:b0:c2:f930:45e8 with SMTP id r7-20020a056a20930700b000c2f93045e8mr15555085pzh.46.1679329279832; Mon, 20 Mar 2023 09:21:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679329279; cv=none; d=google.com; s=arc-20160816; b=vNTnJf9m7HNmsgp+h4ZNKQU59qsxfK/ESo3YnJxhS3ig9yMAFjF8z+hi9HjmNwXxv9 RXeq807uCGim6aGKtfS4UUe7RCrWW/sG4/UWBQbzuvf9aR89eYsM5AB+Mtdn6K43EXnH pJBMjNZFKnG8RC85HXksDrH855EhWChG3m4NoZSFqB44xPwAaiFaq6met/E3zQNYYfvH DzXNN2i7k2Q9qCeC6DfstQaybwn8uyTMuDslFamqE1z3ZPmja3igK1ugV5JHmEcjoh5Q fTtrwEbflGKHrH8gELHkGm55JQeYkSg/Ioi/Mwxk81jxNbOvac9zOlYwbUrSR1LqAj9H 3aKQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:dkim-signature :from; bh=UH6iyJWVF557g3DlZkN924DZUTihkbxHvHIitRq/SDI=; b=oD7kEmrvZiQccCAVW8DaPIRCOkJ8M2+3me/IbKkPgR76QqxhAW7J7fuNYsuENWKYEp sH68n+/3KrDGhpYrZSe97aIYO2QQZlq1aC0+LBn2TRKSj2PhQP9KANVNTel6+0ILko1l qQahkIjogW/u8i1I5zI9PRQbvzfYg/n/1DRfhqkbIFQ1FGUHgN8zN8ZhBX0gFV7YHuVO T9ULYQGCWRffB2PpUgmpkxgwyzt64MhgRjJp/+E/I6NfN+VI5uUCdl54NZ4TFJhmA5SS uxqHZjh75BMU0qem2E+jRS9dL3LluflF4exoGakP94sM3lXxNK3e2B5tI/L6LkGytzdx XJKw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@weissschuh.net header.s=mail header.b=IEEumZMh; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id x37-20020a056a000be500b0062514cb8b77si8482789pfu.40.2023.03.20.09.21.04; Mon, 20 Mar 2023 09:21:19 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@weissschuh.net header.s=mail header.b=IEEumZMh; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232038AbjCTPvd (ORCPT + 99 others); Mon, 20 Mar 2023 11:51:33 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57792 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233344AbjCTPtt (ORCPT ); Mon, 20 Mar 2023 11:49:49 -0400 Received: from todd.t-8ch.de (todd.t-8ch.de [IPv6:2a01:4f8:c010:41de::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DF0012B9F7; Mon, 20 Mar 2023 08:41:25 -0700 (PDT) From: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=weissschuh.net; s=mail; t=1679326882; bh=i20Oh7UPtMkF7KR9AMHb1kh7uhEQ1eEVn8pe6hGS0IY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=IEEumZMhOJj7/5fO9M78jnYjwF6vw43+TOAY/TOfIzzevHlcJgYEvXOpVK4hK6WzL DYbYEfL2viDF9VD4rWWIpw6yBSn5zYJYUlTIWXC0fgSIrv1eEYwV0CA922VvWoljCG eIoaLVFeQNfCsVOAedKa5p8UBoO3TjLpsAssyeTc= Date: Mon, 20 Mar 2023 15:41:08 +0000 Subject: [PATCH v2 8/8] tools/nolibc: x86_64: add stackprotector support MIME-Version: 1.0 Message-Id: <20230223-nolibc-stackprotector-v2-8-4c938e098d67@weissschuh.net> References: <20230223-nolibc-stackprotector-v2-0-4c938e098d67@weissschuh.net> In-Reply-To: <20230223-nolibc-stackprotector-v2-0-4c938e098d67@weissschuh.net> To: Willy Tarreau , Shuah Khan Cc: linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Mailer: b4 0.12.1 X-Developer-Signature: v=1; a=ed25519-sha256; t=1679326878; l=1856; i=linux@weissschuh.net; s=20221212; h=from:subject:message-id; bh=i20Oh7UPtMkF7KR9AMHb1kh7uhEQ1eEVn8pe6hGS0IY=; b=yBKpZLIhD2oLBnMhKGSP33SljC5XJO6L5jLzsIMP1QRDWF8qpnRzP3lO5IRVQgThoA/S0AcOs KcMpHjuFCsHCZygA9AsMyhp/qPX/l1LhHvKCsQg759Tph36y0IVFjve X-Developer-Key: i=linux@weissschuh.net; a=ed25519; pk=KcycQgFPX2wGR5azS7RhpBqedglOZVgRPfdFSPB1LNw= X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1760904378755706284?= X-GMAIL-MSGID: =?utf-8?q?1760904378755706284?= Enable the new stackprotector support for x86_64. Signed-off-by: Thomas Weißschuh --- tools/include/nolibc/arch-x86_64.h | 5 +++++ tools/testing/selftests/nolibc/Makefile | 2 ++ 2 files changed, 7 insertions(+) diff --git a/tools/include/nolibc/arch-x86_64.h b/tools/include/nolibc/arch-x86_64.h index 17f6751208e7..f7f2a11d4c3b 100644 --- a/tools/include/nolibc/arch-x86_64.h +++ b/tools/include/nolibc/arch-x86_64.h @@ -181,6 +181,8 @@ struct sys_stat_struct { char **environ __attribute__((weak)); const unsigned long *_auxv __attribute__((weak)); +#define __ARCH_SUPPORTS_STACK_PROTECTOR + /* startup code */ /* * x86-64 System V ABI mandates: @@ -191,6 +193,9 @@ const unsigned long *_auxv __attribute__((weak)); void __attribute__((weak,noreturn,optimize("omit-frame-pointer"))) _start(void) { __asm__ volatile ( +#ifdef NOLIBC_STACKPROTECTOR + "call __stack_chk_init\n" // initialize stack protector +#endif "pop %rdi\n" // argc (first arg, %rdi) "mov %rsp, %rsi\n" // argv[] (second arg, %rsi) "lea 8(%rsi,%rdi,8),%rdx\n" // then a NULL then envp (third arg, %rdx) diff --git a/tools/testing/selftests/nolibc/Makefile b/tools/testing/selftests/nolibc/Makefile index 8f069ebdd124..543555f4cbdc 100644 --- a/tools/testing/selftests/nolibc/Makefile +++ b/tools/testing/selftests/nolibc/Makefile @@ -80,6 +80,8 @@ CFLAGS_STACKPROTECTOR = -DNOLIBC_STACKPROTECTOR \ $(call cc-option,-mstack-protector-guard=global) \ $(call cc-option,-fstack-protector-all) CFLAGS_i386 = $(CFLAGS_STACKPROTECTOR) +CFLAGS_x86_64 = $(CFLAGS_STACKPROTECTOR) +CFLAGS_x86 = $(CFLAGS_STACKPROTECTOR) CFLAGS_s390 = -m64 CFLAGS ?= -Os -fno-ident -fno-asynchronous-unwind-tables \ $(call cc-option,-fno-stack-protector) \