From patchwork Sat Jul 15 18:17:43 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhangjin Wu X-Patchwork-Id: 120817 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp288910vqt; Sat, 15 Jul 2023 11:27:10 -0700 (PDT) X-Google-Smtp-Source: APBJJlHizoUC8dSQUX3Ct4KxrH8E0LDF8smXw+j8vtn/nmoiU+AgKeOd6C6xr46ojB/EBKs7fzHM X-Received: by 2002:a05:6a20:3948:b0:126:23d:cd03 with SMTP id r8-20020a056a20394800b00126023dcd03mr8594846pzg.9.1689445630274; Sat, 15 Jul 2023 11:27:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689445630; cv=none; d=google.com; s=arc-20160816; b=Sth8ynK3vTQzpxy/iBp89jTfAQvrY6JXBoMdrNbLwZLuy4phTzjJiKkxBoXFy71r2r nEMN6qwEzkp+xNnGVwOK1n498i194l2lQ0/nrRCUaZakNzZPwRDmfv6MOiyfKMFVYbSh gUrhmFqz1g3xsncxkj92OchYZp821mmfoWhWCbshEHx/105uLF0hsaxTb4iV+ZiD50Tf MmKvBJtf3wBncVUPW1Zp9Gk6ZYgUqiqQD4mvvpmyiTmA2FZaKekfeTizCWfeO7H3v+8D CA0yQf47S/dUJRIjzPKv1mLyYZ7ON9Gk66CgwqK4jtNBKeCwDIGUEPzXqJeRfV+kX/eI QvAw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:feedback-id:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from; bh=GhPhnh0AgqA3Ns0CILlQbUdOmUrEVirMlR9Du2O15Fs=; fh=sXngqCw1oXONrSSImRxZmGyzcK67QhJYp1RgY40tBsg=; b=iFYhIu87kxK1NFnWqQN1bu5VNq4Ln4eHbVcQFZ0+2Lg5z6qtObRRY3XqIf14+xoVvZ nfm71vJ8MFNfXPWI5U4Vkaz0WxMZrHH1JrY3WDfPesXOZ+z1ZtloTm4CD9hF1DCh9MHc IjKxOovEvTJYRM446ITW+FHyS/q5lxTBfhcGSNHVjcBbYg7JJ4bOThwlydJRZniLY8lB CLhZumBcHDvoYM9ClI2LEWgWU8Jr6MiGrGfCvGuxqD+ruO5hSzUG7pWEJNTQW1iCLzf/ 9hQL6gXeXnuNbqxErqCkKYQpqd5gbTU9gQkOa5xooXFcgr8bBDlxN8Hg8FiHay0uHmcw HT4A== ARC-Authentication-Results: i=1; mx.google.com; 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 e192-20020a6369c9000000b0054ff42dff19si8972819pgc.121.2023.07.15.11.26.56; Sat, 15 Jul 2023 11:27:10 -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; 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 S229994AbjGOSSB (ORCPT + 99 others); Sat, 15 Jul 2023 14:18:01 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39430 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229500AbjGOSR7 (ORCPT ); Sat, 15 Jul 2023 14:17:59 -0400 Received: from bg4.exmail.qq.com (bg4.exmail.qq.com [43.154.54.12]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6547130DE; Sat, 15 Jul 2023 11:17:57 -0700 (PDT) X-QQ-mid: bizesmtp78t1689445068tl6jg8yu Received: from linux-lab-host.localdomain ( [119.123.131.162]) by bizesmtp.qq.com (ESMTP) with id ; Sun, 16 Jul 2023 02:17:47 +0800 (CST) X-QQ-SSF: 01200000002000D0W000B00A0000000 X-QQ-FEAT: hJ5650VbgwCCez5gf50lmXVeXP9ES1Pvanf2lA55JmcMT04izh+3rdGz77p6I hSAa/Ws4CvB3sOLsPu9mrZ0H68R5p11yl5G4D4MGNRkcrouaOoArg2E0DhISOFuvc/lRtRt FhachWDNECszHq0rdwnte3/JfaiWvUsMg30PSyRBdccBn8hcFRLB//IMSBU1GIFmoczyAay 2zJWFIXaGQX0nO8TQK9OHjh9uZBJEJw5FhcJZ1cHkQQ4GMiVTUSUU9rF2YH3Uii2zUsXQt4 SLel7kdBtlH+m56NNFiWvOxfERCSHeu8MVY4HQUUeWvjmopgq6azgd3wEo4E6H/nqvcRIhg /fg+mJeiDVdR3buhHEQD6SkdCGcjk2MjGxuq2jqsbwcnga/IhtliW6jDQsB4g== X-QQ-GoodBg: 0 X-BIZMAIL-ID: 17201871288852386837 From: Zhangjin Wu To: w@1wt.eu Cc: arnd@arndb.de, falcon@tinylab.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, thomas@t-8ch.de Subject: [PATCH v4 01/18] tools/nolibc: arch-*.h: add missing space after ',' Date: Sun, 16 Jul 2023 02:17:43 +0800 Message-Id: <4269a025b6b6aebed1a20fe83bb70f2a42c2f6be.1689444638.git.falcon@tinylab.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:tinylab.org:qybglogicsvrgz:qybglogicsvrgz5a-1 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE 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: INBOX X-GMAIL-THRID: 1771512140955025275 X-GMAIL-MSGID: 1771512140955025275 Fix up such errors reported by scripts/checkpatch.pl: ERROR: space required after that ',' (ctx:VxV) #148: FILE: tools/include/nolibc/arch-aarch64.h:148: +void __attribute__((weak,noreturn,optimize("omit-frame-pointer"))) __no_stack_protector _start(void) ^ ERROR: space required after that ',' (ctx:VxV) #148: FILE: tools/include/nolibc/arch-aarch64.h:148: +void __attribute__((weak,noreturn,optimize("omit-frame-pointer"))) __no_stack_protector _start(void) ^ Signed-off-by: Zhangjin Wu --- tools/include/nolibc/arch-aarch64.h | 2 +- tools/include/nolibc/arch-arm.h | 2 +- tools/include/nolibc/arch-i386.h | 2 +- tools/include/nolibc/arch-loongarch.h | 2 +- tools/include/nolibc/arch-mips.h | 2 +- tools/include/nolibc/arch-riscv.h | 2 +- tools/include/nolibc/arch-s390.h | 2 +- tools/include/nolibc/arch-x86_64.h | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/tools/include/nolibc/arch-aarch64.h b/tools/include/nolibc/arch-aarch64.h index 6227b77a4a09..6151be6cd7a9 100644 --- a/tools/include/nolibc/arch-aarch64.h +++ b/tools/include/nolibc/arch-aarch64.h @@ -175,7 +175,7 @@ char **environ __attribute__((weak)); const unsigned long *_auxv __attribute__((weak)); /* startup code */ -void __attribute__((weak,noreturn,optimize("omit-frame-pointer"))) __no_stack_protector _start(void) +void __attribute__((weak, noreturn, optimize("omit-frame-pointer"))) __no_stack_protector _start(void) { __asm__ volatile ( #ifdef _NOLIBC_STACKPROTECTOR diff --git a/tools/include/nolibc/arch-arm.h b/tools/include/nolibc/arch-arm.h index 4d4887a5f04b..5b12b6e1c83e 100644 --- a/tools/include/nolibc/arch-arm.h +++ b/tools/include/nolibc/arch-arm.h @@ -225,7 +225,7 @@ char **environ __attribute__((weak)); const unsigned long *_auxv __attribute__((weak)); /* startup code */ -void __attribute__((weak,noreturn,optimize("omit-frame-pointer"))) __no_stack_protector _start(void) +void __attribute__((weak, noreturn, optimize("omit-frame-pointer"))) __no_stack_protector _start(void) { __asm__ volatile ( #ifdef _NOLIBC_STACKPROTECTOR diff --git a/tools/include/nolibc/arch-i386.h b/tools/include/nolibc/arch-i386.h index 4c6b7c04e2e7..35680b4a25d4 100644 --- a/tools/include/nolibc/arch-i386.h +++ b/tools/include/nolibc/arch-i386.h @@ -190,7 +190,7 @@ const unsigned long *_auxv __attribute__((weak)); * 2) The deepest stack frame should be set to zero * */ -void __attribute__((weak,noreturn,optimize("omit-frame-pointer"))) __no_stack_protector _start(void) +void __attribute__((weak, noreturn, optimize("omit-frame-pointer"))) __no_stack_protector _start(void) { __asm__ volatile ( #ifdef _NOLIBC_STACKPROTECTOR diff --git a/tools/include/nolibc/arch-loongarch.h b/tools/include/nolibc/arch-loongarch.h index 8aa7724fe38e..ada5a69e3fcc 100644 --- a/tools/include/nolibc/arch-loongarch.h +++ b/tools/include/nolibc/arch-loongarch.h @@ -167,7 +167,7 @@ const unsigned long *_auxv __attribute__((weak)); #endif /* startup code */ -void __attribute__((weak,noreturn,optimize("omit-frame-pointer"))) __no_stack_protector _start(void) +void __attribute__((weak, noreturn, optimize("omit-frame-pointer"))) __no_stack_protector _start(void) { __asm__ volatile ( #ifdef _NOLIBC_STACKPROTECTOR diff --git a/tools/include/nolibc/arch-mips.h b/tools/include/nolibc/arch-mips.h index a2bfdf57b957..dd0f12131b55 100644 --- a/tools/include/nolibc/arch-mips.h +++ b/tools/include/nolibc/arch-mips.h @@ -205,7 +205,7 @@ char **environ __attribute__((weak)); const unsigned long *_auxv __attribute__((weak)); /* startup code, note that it's called __start on MIPS */ -void __attribute__((weak,noreturn,optimize("omit-frame-pointer"))) __no_stack_protector __start(void) +void __attribute__((weak, noreturn, optimize("omit-frame-pointer"))) __no_stack_protector __start(void) { __asm__ volatile ( /*".set nomips16\n"*/ diff --git a/tools/include/nolibc/arch-riscv.h b/tools/include/nolibc/arch-riscv.h index cd958b2f4b1b..1dd7083c2ac8 100644 --- a/tools/include/nolibc/arch-riscv.h +++ b/tools/include/nolibc/arch-riscv.h @@ -180,7 +180,7 @@ char **environ __attribute__((weak)); const unsigned long *_auxv __attribute__((weak)); /* startup code */ -void __attribute__((weak,noreturn,optimize("omit-frame-pointer"))) __no_stack_protector _start(void) +void __attribute__((weak, noreturn, optimize("omit-frame-pointer"))) __no_stack_protector _start(void) { __asm__ volatile ( ".option push\n" diff --git a/tools/include/nolibc/arch-s390.h b/tools/include/nolibc/arch-s390.h index a644ecd361c0..8254caff8bfa 100644 --- a/tools/include/nolibc/arch-s390.h +++ b/tools/include/nolibc/arch-s390.h @@ -166,7 +166,7 @@ char **environ __attribute__((weak)); const unsigned long *_auxv __attribute__((weak)); /* startup code */ -void __attribute__((weak,noreturn,optimize("omit-frame-pointer"))) __no_stack_protector _start(void) +void __attribute__((weak, noreturn, optimize("omit-frame-pointer"))) __no_stack_protector _start(void) { __asm__ volatile ( "lg %r2,0(%r15)\n" /* argument count */ diff --git a/tools/include/nolibc/arch-x86_64.h b/tools/include/nolibc/arch-x86_64.h index e69113742a99..fb00ab2e9274 100644 --- a/tools/include/nolibc/arch-x86_64.h +++ b/tools/include/nolibc/arch-x86_64.h @@ -190,7 +190,7 @@ const unsigned long *_auxv __attribute__((weak)); * 2) The deepest stack frame should be zero (the %rbp). * */ -void __attribute__((weak,noreturn,optimize("omit-frame-pointer"))) __no_stack_protector _start(void) +void __attribute__((weak, noreturn, optimize("omit-frame-pointer"))) __no_stack_protector _start(void) { __asm__ volatile ( #ifdef _NOLIBC_STACKPROTECTOR From patchwork Sat Jul 15 18:18:54 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Zhangjin Wu X-Patchwork-Id: 120816 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp288717vqt; Sat, 15 Jul 2023 11:26:31 -0700 (PDT) X-Google-Smtp-Source: APBJJlFTppVpcFM5sPU1mDexZiaulEyHo3gM+6Geu2P5eoadsVUCX9LfhnXRxMLOw/GezUc6+BNi X-Received: by 2002:a05:6a20:4312:b0:130:835b:e34e with SMTP id h18-20020a056a20431200b00130835be34emr8023112pzk.48.1689445591306; Sat, 15 Jul 2023 11:26:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689445591; cv=none; d=google.com; s=arc-20160816; b=F95/7w9V8SSuR6aQJIuyx92FzGiSS5gQkZPxaL1mv/6ACgD1ppAaVLJBE48fDkMVrC uh0eFi5acrDFuHdvX67mUXyt9jI39kJH0KzRhVv1u6y3OG9sitR/h9tmVT6GkWGyjv5a TczTmuENUu6gwn+Q80SzlbyT/ZrKyZCVfU6klFRj0IevdBaTG7RRwOJ7NhhHg+/LD/UL RQN0VoKwz47Uz1a2HeFMDthS3KAf23fIdED5JqVQcDENsF95tU4UaS6Qwuhv4+gNwdH/ 3HaeZDhiMRww4014O8ncWgrT9l8vPvVZc+yphb7EYKmV3XApMnucE4SXaU4i6SCbwsGa mofg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:feedback-id:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from; bh=q+PXpRiN0Z+F1QPNa04fcst93CArXvRbdW7UOUD8vqc=; fh=gMOegYQP2NYJlMRryxqVkjdc16YOKj1hjFCkzY6Wkow=; b=Ox8qs5hY8ytv9ra6rmvbeGLaBmXAOSgoSkVWTwgXOOAMwGkpToZ6EJnfwrAb7NTDqX MQN+aDA1X5SzqepMg+kWiHAuASl9/koiMetCxl2m05jAeYkaZlrZ9kKhZ8P9culyIV52 qSowpJRGQM2XYYOMYp8v4aAFXEUkioCYYxP/2VXoxj++fqcYsuZ9wtyrH4rRGuD/0svn YK6FZvyklN8LoCtHoKPX4HE7G0khmumG+rm0p6kj+UAuGKdOI8Zqf5bNtkbaDPUtHGbj S+TIiOpg4xcullYfFnMxKPsy+P/Hb3WYcn12PvZkBhLhPnI+4Q6RmyY+ECtWsTl+faP0 djqA== ARC-Authentication-Results: i=1; mx.google.com; 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 bu3-20020a056a00410300b00676cd4f7c1esi8793392pfb.390.2023.07.15.11.26.18; Sat, 15 Jul 2023 11:26:31 -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; 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 S229775AbjGOSTI (ORCPT + 99 others); Sat, 15 Jul 2023 14:19:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39842 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229500AbjGOSTH (ORCPT ); Sat, 15 Jul 2023 14:19:07 -0400 Received: from bg4.exmail.qq.com (bg4.exmail.qq.com [43.154.54.12]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4DDF426AF; Sat, 15 Jul 2023 11:19:05 -0700 (PDT) X-QQ-mid: bizesmtp82t1689445135tgk85grb Received: from linux-lab-host.localdomain ( [119.123.131.162]) by bizesmtp.qq.com (ESMTP) with id ; Sun, 16 Jul 2023 02:18:54 +0800 (CST) X-QQ-SSF: 01200000002000D0W000B00A0000000 X-QQ-FEAT: 7jw2iSiCazq340DjDdEZiMhlBe2vl+0NITWIEc5WkzpS4tH5riGZQoC3SIEqa SsnIvE5sirfAViFzUf4xtboEfVBzLVmCgo2VzbvbND5R9PvmD4iX3xV1ZEA+boiNZE8of4h ELzEHCOXeDggBwc6UDlbbjCfKcEiL432bL7HQqN/erfXNmi6yHC8hyroz4DhxjViDYqZXa3 79VFtvadw2lfISIZp+TWh/Xz16Z15HiJdR6V6IgUNgeX5GIq9fs7rLcczeFopDZCkRrpkGs 6aPZTGSs6RtjkEH5//KOpARzRzGXrZ6qkNsKHWqfoczMIdqskxL/rzRR/5pIxcMvkStBbio pQIRac8+WKwWg1b0F2fDLuRmKBo/1HAnKv0klQ8whW2ITk6KvVSri3sXp7GtmPpPxb1vI8T X-QQ-GoodBg: 0 X-BIZMAIL-ID: 12656723689235740385 From: Zhangjin Wu To: w@1wt.eu Cc: arnd@arndb.de, falcon@tinylab.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, thomas@t-8ch.de, =?utf-8?q?Thomas_Wei?= =?utf-8?q?=C3=9Fschuh?= Subject: [PATCH v4 02/18] tools/nolibc: fix up startup failures for -O0 under gcc < 11.1.0 Date: Sun, 16 Jul 2023 02:18:54 +0800 Message-Id: X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:tinylab.org:qybglogicsvrgz:qybglogicsvrgz5a-1 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED 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: INBOX X-GMAIL-THRID: 1771512100213272241 X-GMAIL-MSGID: 1771512100213272241 As gcc doc [1] shows: Most optimizations are completely disabled at -O0 or if an -O level is not set on the command line, even if individual optimization flags are specified. Test result [2] shows, gcc>=11.1.0 deviates from the above description, but before gcc 11.1.0, "-O0" still forcely uses frame pointer in the _start function even if the individual optimize("omit-frame-pointer") flag is specified. The frame pointer related operations will change the stack pointer (e.g. In x86_64, an extra "push %rbp" will be inserted at the beginning of _start) and make it differs from the one we expected, as a result, break the whole startup function. To fix up this issue, as suggested by Thomas, the individual "Os" and "omit-frame-pointer" optimize flags are used together on _start function to disable frame pointer completely even if the -O0 is set on the command line. [1]: https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html [2]: https://lore.kernel.org/lkml/20230714094723.140603-1-falcon@tinylab.org/ Suggested-by: Thomas Weißschuh Link: https://lore.kernel.org/lkml/34b21ba5-7b59-4b3b-9ed6-ef9a3a5e06f7@t-8ch.de/ Fixes: 7f8548589661 ("tools/nolibc: make compiler and assembler agree on the section around _start") Signed-off-by: Zhangjin Wu --- tools/include/nolibc/arch-aarch64.h | 2 +- tools/include/nolibc/arch-arm.h | 2 +- tools/include/nolibc/arch-i386.h | 2 +- tools/include/nolibc/arch-loongarch.h | 2 +- tools/include/nolibc/arch-mips.h | 2 +- tools/include/nolibc/arch-riscv.h | 2 +- tools/include/nolibc/arch-s390.h | 2 +- tools/include/nolibc/arch-x86_64.h | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/tools/include/nolibc/arch-aarch64.h b/tools/include/nolibc/arch-aarch64.h index 6151be6cd7a9..21e9482a4235 100644 --- a/tools/include/nolibc/arch-aarch64.h +++ b/tools/include/nolibc/arch-aarch64.h @@ -175,7 +175,7 @@ char **environ __attribute__((weak)); const unsigned long *_auxv __attribute__((weak)); /* startup code */ -void __attribute__((weak, noreturn, optimize("omit-frame-pointer"))) __no_stack_protector _start(void) +void __attribute__((weak, noreturn, optimize("Os", "omit-frame-pointer"))) __no_stack_protector _start(void) { __asm__ volatile ( #ifdef _NOLIBC_STACKPROTECTOR diff --git a/tools/include/nolibc/arch-arm.h b/tools/include/nolibc/arch-arm.h index 5b12b6e1c83e..4451bef5f94d 100644 --- a/tools/include/nolibc/arch-arm.h +++ b/tools/include/nolibc/arch-arm.h @@ -225,7 +225,7 @@ char **environ __attribute__((weak)); const unsigned long *_auxv __attribute__((weak)); /* startup code */ -void __attribute__((weak, noreturn, optimize("omit-frame-pointer"))) __no_stack_protector _start(void) +void __attribute__((weak, noreturn, optimize("Os", "omit-frame-pointer"))) __no_stack_protector _start(void) { __asm__ volatile ( #ifdef _NOLIBC_STACKPROTECTOR diff --git a/tools/include/nolibc/arch-i386.h b/tools/include/nolibc/arch-i386.h index 35680b4a25d4..4c94a81e860f 100644 --- a/tools/include/nolibc/arch-i386.h +++ b/tools/include/nolibc/arch-i386.h @@ -190,7 +190,7 @@ const unsigned long *_auxv __attribute__((weak)); * 2) The deepest stack frame should be set to zero * */ -void __attribute__((weak, noreturn, optimize("omit-frame-pointer"))) __no_stack_protector _start(void) +void __attribute__((weak, noreturn, optimize("Os", "omit-frame-pointer"))) __no_stack_protector _start(void) { __asm__ volatile ( #ifdef _NOLIBC_STACKPROTECTOR diff --git a/tools/include/nolibc/arch-loongarch.h b/tools/include/nolibc/arch-loongarch.h index ada5a69e3fcc..590155a4e543 100644 --- a/tools/include/nolibc/arch-loongarch.h +++ b/tools/include/nolibc/arch-loongarch.h @@ -167,7 +167,7 @@ const unsigned long *_auxv __attribute__((weak)); #endif /* startup code */ -void __attribute__((weak, noreturn, optimize("omit-frame-pointer"))) __no_stack_protector _start(void) +void __attribute__((weak, noreturn, optimize("Os", "omit-frame-pointer"))) __no_stack_protector _start(void) { __asm__ volatile ( #ifdef _NOLIBC_STACKPROTECTOR diff --git a/tools/include/nolibc/arch-mips.h b/tools/include/nolibc/arch-mips.h index dd0f12131b55..d3f0bf4c4245 100644 --- a/tools/include/nolibc/arch-mips.h +++ b/tools/include/nolibc/arch-mips.h @@ -205,7 +205,7 @@ char **environ __attribute__((weak)); const unsigned long *_auxv __attribute__((weak)); /* startup code, note that it's called __start on MIPS */ -void __attribute__((weak, noreturn, optimize("omit-frame-pointer"))) __no_stack_protector __start(void) +void __attribute__((weak, noreturn, optimize("Os", "omit-frame-pointer"))) __no_stack_protector __start(void) { __asm__ volatile ( /*".set nomips16\n"*/ diff --git a/tools/include/nolibc/arch-riscv.h b/tools/include/nolibc/arch-riscv.h index 1dd7083c2ac8..322c96f4acdb 100644 --- a/tools/include/nolibc/arch-riscv.h +++ b/tools/include/nolibc/arch-riscv.h @@ -180,7 +180,7 @@ char **environ __attribute__((weak)); const unsigned long *_auxv __attribute__((weak)); /* startup code */ -void __attribute__((weak, noreturn, optimize("omit-frame-pointer"))) __no_stack_protector _start(void) +void __attribute__((weak, noreturn, optimize("Os", "omit-frame-pointer"))) __no_stack_protector _start(void) { __asm__ volatile ( ".option push\n" diff --git a/tools/include/nolibc/arch-s390.h b/tools/include/nolibc/arch-s390.h index 8254caff8bfa..587cc91295fa 100644 --- a/tools/include/nolibc/arch-s390.h +++ b/tools/include/nolibc/arch-s390.h @@ -166,7 +166,7 @@ char **environ __attribute__((weak)); const unsigned long *_auxv __attribute__((weak)); /* startup code */ -void __attribute__((weak, noreturn, optimize("omit-frame-pointer"))) __no_stack_protector _start(void) +void __attribute__((weak, noreturn, optimize("Os", "omit-frame-pointer"))) __no_stack_protector _start(void) { __asm__ volatile ( "lg %r2,0(%r15)\n" /* argument count */ diff --git a/tools/include/nolibc/arch-x86_64.h b/tools/include/nolibc/arch-x86_64.h index fb00ab2e9274..5e950a04bc77 100644 --- a/tools/include/nolibc/arch-x86_64.h +++ b/tools/include/nolibc/arch-x86_64.h @@ -190,7 +190,7 @@ const unsigned long *_auxv __attribute__((weak)); * 2) The deepest stack frame should be zero (the %rbp). * */ -void __attribute__((weak, noreturn, optimize("omit-frame-pointer"))) __no_stack_protector _start(void) +void __attribute__((weak, noreturn, optimize("Os", "omit-frame-pointer"))) __no_stack_protector _start(void) { __asm__ volatile ( #ifdef _NOLIBC_STACKPROTECTOR From patchwork Sat Jul 15 18:20:01 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhangjin Wu X-Patchwork-Id: 120819 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp292084vqt; Sat, 15 Jul 2023 11:37:15 -0700 (PDT) X-Google-Smtp-Source: APBJJlE2tDKHbAIFfUESlyiVAyQkMdQAnHu9OYjXJZyqY6D4/t0nlzlg31JeJVLrJS9500ea+sfa X-Received: by 2002:a17:902:dac3:b0:1b8:a56b:989d with SMTP id q3-20020a170902dac300b001b8a56b989dmr9448700plx.6.1689446235336; Sat, 15 Jul 2023 11:37:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689446235; cv=none; d=google.com; s=arc-20160816; b=eX2MFG+7P2QclbyEuKlfrzqBQLmuiTrzViB+kO6OiusAwUGKe68+T9pX6EuNdhYfWN JqiG/rrPrWFOGdJvIOs4RrnX3gtgg+Fcs4o7Apeza/G7CM7yVQqqV7KlI85U1LYB6Pmm XRLLHiXgDqIWrH/m7DXkw7fNGKaWxR04miub4/ngoF7TrLJd8LSkwGy2agDlKpn6Tx3w 6Wa34MVytwx8WXIKwU6DbqF7wFgXLJ1/tpDBOohTPrNIGB7LbzwNIP93hJPoRXbjqPOT jrAQ4gPnUTyYWlzutfvbIhugi7x3hsWfnBC1HyzQhQ0i/5Q3g7U7NpUm9KPHb9rYViEP jGhA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:feedback-id:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from; bh=u1HJ+290FxNQgCGTE/PvQIZCkYfC5gGTVMX14zojVvI=; fh=sXngqCw1oXONrSSImRxZmGyzcK67QhJYp1RgY40tBsg=; b=Ph5T6oL3BVUyCSmRbv0JykqqfMKvIBmdp9T2OeAkhjn9Clr7S7N7YDARqJLk4BTVM0 sB+65smeb3tI4xk2rhhbdnOs11xeR/Gi5C9NpVDxPR4gy+hwpr2C4x+mGUB/OObjoo5P IoHnk6hc0YYn6dPguA2RooKzgbzKh+Z173UUgJlCSsv45zwoOx1LCrthQuXbqJYFXQfO O3EAJlWZRgyaNBOWKFSG2ATExzfjb7X01QfQleTD1vLCagOe7FrTfrid+J1FMMPLiUE4 HeU92dahKXS2Gl4ZQph3pF1IrwQlOGthFMTI3KIvE0fDTT0EZgGU37pZduB0oqrOrG2i 2ELw== ARC-Authentication-Results: i=1; mx.google.com; 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 z9-20020a170903018900b001b86deba2fbsi9431804plg.605.2023.07.15.11.37.02; Sat, 15 Jul 2023 11:37:15 -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; 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 S229767AbjGOSUQ (ORCPT + 99 others); Sat, 15 Jul 2023 14:20:16 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40606 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229472AbjGOSUP (ORCPT ); Sat, 15 Jul 2023 14:20:15 -0400 Received: from bg4.exmail.qq.com (bg4.exmail.qq.com [43.155.65.254]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 949D326AF; Sat, 15 Jul 2023 11:20:12 -0700 (PDT) X-QQ-mid: bizesmtp87t1689445202toqmpl8r Received: from linux-lab-host.localdomain ( [119.123.131.162]) by bizesmtp.qq.com (ESMTP) with id ; Sun, 16 Jul 2023 02:20:01 +0800 (CST) X-QQ-SSF: 01200000002000D0W000B00A0000000 X-QQ-FEAT: D2GZf6M6C/hENRXV3XkI+PdVdkIPSzGmBBJqKdXA6wY+q9LL/+Gzrn1JyzyBL fWcZ+IvsrvJD25X3SkH/C61eshZVWqoikN1P9Jn0q2dA70evWDGyujS+juP7IRd92m6qO45 6GWeLmKlZPi4PTlRO1Hm5cuNcRegal6F2Iw1hgdyXnH+tGftjWImMk5+hKDVn0yGkrSRV9s Qwu+0FIZa2yL2B6yWoeOETGYr4MG8qCajM6OJXeFYT/Mheg4Pf5Ty7/Qh1QX696SESZA3i9 wSq/XrAFEKCJvy+8zXSlBj+pfekH1/EIEKFfagcH2wtAF42o/5O2cMXsQL/R6QBfj0UZYOG 89Q27GrcC1HkRAR5DPFmCuFK+ACycKoQY/a2o7Pw46gk/Guhsg1lFkVXpZr6YeVrsbJkPX6 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 6319169823704416527 From: Zhangjin Wu To: w@1wt.eu Cc: arnd@arndb.de, falcon@tinylab.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, thomas@t-8ch.de Subject: [PATCH v4 03/18] tools/nolibc: remove the old sys_stat support Date: Sun, 16 Jul 2023 02:20:01 +0800 Message-Id: <56f2be73a0badf3dbc8c5d58478f7b14dde57a05.1689444638.git.falcon@tinylab.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:tinylab.org:qybglogicsvrgz:qybglogicsvrgz5a-1 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE, URIBL_BLOCKED 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: INBOX X-GMAIL-THRID: 1771512775892222121 X-GMAIL-MSGID: 1771512775892222121 The statx manpage [1] shows that it has been supported from Linux 4.11 and glibc 2.28, the Linux support can be checked for all of the architectures with this command: $ git grep -r statx v4.11 arch/ include/uapi/asm-generic/unistd.h \ | grep -E "aarch64|arm|mips|s390|x86|:include/uapi" Besides riscv and loongarch, all of the nolibc supported architectures have added sys_statx from Linux v4.11. riscv is mainlined to v4.15, loongarch is mainlined to v5.19, both of them use the generic unistd.h, so, they have added sys_statx from their first mainline versions. The current oldest stable branch is v4.14, only reserving sys_statx still preserves compatibility with all of the supported stable branches, So, let's remove the old arch related and dependent sys_stat support completely. This is friendly to the future new architecture porting. [1]: https://man7.org/linux/man-pages/man2/statx.2.html Signed-off-by: Zhangjin Wu --- tools/include/nolibc/arch-aarch64.h | 28 ------------- tools/include/nolibc/arch-arm.h | 37 ----------------- tools/include/nolibc/arch-i386.h | 26 ------------ tools/include/nolibc/arch-mips.h | 28 ------------- tools/include/nolibc/arch-riscv.h | 23 ----------- tools/include/nolibc/arch-s390.h | 25 ------------ tools/include/nolibc/arch-x86_64.h | 27 ------------- tools/include/nolibc/sys.h | 63 +++++------------------------ tools/include/nolibc/types.h | 4 +- 9 files changed, 13 insertions(+), 248 deletions(-) diff --git a/tools/include/nolibc/arch-aarch64.h b/tools/include/nolibc/arch-aarch64.h index 21e9482a4235..3c0a5f47b3e8 100644 --- a/tools/include/nolibc/arch-aarch64.h +++ b/tools/include/nolibc/arch-aarch64.h @@ -9,34 +9,6 @@ #include "compiler.h" -/* The struct returned by the newfstatat() syscall. Differs slightly from the - * x86_64's stat one by field ordering, so be careful. - */ -struct sys_stat_struct { - unsigned long st_dev; - unsigned long st_ino; - unsigned int st_mode; - unsigned int st_nlink; - unsigned int st_uid; - unsigned int st_gid; - - unsigned long st_rdev; - unsigned long __pad1; - long st_size; - int st_blksize; - int __pad2; - - long st_blocks; - long st_atime; - unsigned long st_atime_nsec; - long st_mtime; - - unsigned long st_mtime_nsec; - long st_ctime; - unsigned long st_ctime_nsec; - unsigned int __unused[2]; -}; - /* Syscalls for AARCH64 : * - registers are 64-bit * - stack is 16-byte aligned diff --git a/tools/include/nolibc/arch-arm.h b/tools/include/nolibc/arch-arm.h index 4451bef5f94d..a06dad789a22 100644 --- a/tools/include/nolibc/arch-arm.h +++ b/tools/include/nolibc/arch-arm.h @@ -9,43 +9,6 @@ #include "compiler.h" -/* The struct returned by the stat() syscall, 32-bit only, the syscall returns - * exactly 56 bytes (stops before the unused array). In big endian, the format - * differs as devices are returned as short only. - */ -struct sys_stat_struct { -#if defined(__ARMEB__) - unsigned short st_dev; - unsigned short __pad1; -#else - unsigned long st_dev; -#endif - unsigned long st_ino; - unsigned short st_mode; - unsigned short st_nlink; - unsigned short st_uid; - unsigned short st_gid; - -#if defined(__ARMEB__) - unsigned short st_rdev; - unsigned short __pad2; -#else - unsigned long st_rdev; -#endif - unsigned long st_size; - unsigned long st_blksize; - unsigned long st_blocks; - - unsigned long st_atime; - unsigned long st_atime_nsec; - unsigned long st_mtime; - unsigned long st_mtime_nsec; - - unsigned long st_ctime; - unsigned long st_ctime_nsec; - unsigned long __unused[2]; -}; - /* Syscalls for ARM in ARM or Thumb modes : * - registers are 32-bit * - stack is 8-byte aligned diff --git a/tools/include/nolibc/arch-i386.h b/tools/include/nolibc/arch-i386.h index 4c94a81e860f..fe0b73f032c3 100644 --- a/tools/include/nolibc/arch-i386.h +++ b/tools/include/nolibc/arch-i386.h @@ -9,32 +9,6 @@ #include "compiler.h" -/* The struct returned by the stat() syscall, 32-bit only, the syscall returns - * exactly 56 bytes (stops before the unused array). - */ -struct sys_stat_struct { - unsigned long st_dev; - unsigned long st_ino; - unsigned short st_mode; - unsigned short st_nlink; - unsigned short st_uid; - unsigned short st_gid; - - unsigned long st_rdev; - unsigned long st_size; - unsigned long st_blksize; - unsigned long st_blocks; - - unsigned long st_atime; - unsigned long st_atime_nsec; - unsigned long st_mtime; - unsigned long st_mtime_nsec; - - unsigned long st_ctime; - unsigned long st_ctime_nsec; - unsigned long __unused[2]; -}; - /* Syscalls for i386 : * - mostly similar to x86_64 * - registers are 32-bit diff --git a/tools/include/nolibc/arch-mips.h b/tools/include/nolibc/arch-mips.h index d3f0bf4c4245..7242fc9de04f 100644 --- a/tools/include/nolibc/arch-mips.h +++ b/tools/include/nolibc/arch-mips.h @@ -9,34 +9,6 @@ #include "compiler.h" -/* The struct returned by the stat() syscall. 88 bytes are returned by the - * syscall. - */ -struct sys_stat_struct { - unsigned int st_dev; - long st_pad1[3]; - unsigned long st_ino; - unsigned int st_mode; - unsigned int st_nlink; - unsigned int st_uid; - unsigned int st_gid; - unsigned int st_rdev; - long st_pad2[2]; - long st_size; - long st_pad3; - - long st_atime; - long st_atime_nsec; - long st_mtime; - long st_mtime_nsec; - - long st_ctime; - long st_ctime_nsec; - long st_blksize; - long st_blocks; - long st_pad4[14]; -}; - /* Syscalls for MIPS ABI O32 : * - WARNING! there's always a delayed slot! * - WARNING again, the syntax is different, registers take a '$' and numbers diff --git a/tools/include/nolibc/arch-riscv.h b/tools/include/nolibc/arch-riscv.h index 322c96f4acdb..d49f5ecbf815 100644 --- a/tools/include/nolibc/arch-riscv.h +++ b/tools/include/nolibc/arch-riscv.h @@ -9,29 +9,6 @@ #include "compiler.h" -struct sys_stat_struct { - unsigned long st_dev; /* Device. */ - unsigned long st_ino; /* File serial number. */ - unsigned int st_mode; /* File mode. */ - unsigned int st_nlink; /* Link count. */ - unsigned int st_uid; /* User ID of the file's owner. */ - unsigned int st_gid; /* Group ID of the file's group. */ - unsigned long st_rdev; /* Device number, if device. */ - unsigned long __pad1; - long st_size; /* Size of file, in bytes. */ - int st_blksize; /* Optimal block size for I/O. */ - int __pad2; - long st_blocks; /* Number 512-byte blocks allocated. */ - long st_atime; /* Time of last access. */ - unsigned long st_atime_nsec; - long st_mtime; /* Time of last modification. */ - unsigned long st_mtime_nsec; - long st_ctime; /* Time of last status change. */ - unsigned long st_ctime_nsec; - unsigned int __unused4; - unsigned int __unused5; -}; - #if __riscv_xlen == 64 #define PTRLOG "3" #define SZREG "8" diff --git a/tools/include/nolibc/arch-s390.h b/tools/include/nolibc/arch-s390.h index 587cc91295fa..3b94ae0cb1d1 100644 --- a/tools/include/nolibc/arch-s390.h +++ b/tools/include/nolibc/arch-s390.h @@ -10,31 +10,6 @@ #include "compiler.h" -/* The struct returned by the stat() syscall, equivalent to stat64(). The - * syscall returns 116 bytes and stops in the middle of __unused. - */ - -struct sys_stat_struct { - unsigned long st_dev; - unsigned long st_ino; - unsigned long st_nlink; - unsigned int st_mode; - unsigned int st_uid; - unsigned int st_gid; - unsigned int __pad1; - unsigned long st_rdev; - unsigned long st_size; - unsigned long st_atime; - unsigned long st_atime_nsec; - unsigned long st_mtime; - unsigned long st_mtime_nsec; - unsigned long st_ctime; - unsigned long st_ctime_nsec; - unsigned long st_blksize; - long st_blocks; - unsigned long __unused[3]; -}; - /* Syscalls for s390: * - registers are 64-bit * - syscall number is passed in r1 diff --git a/tools/include/nolibc/arch-x86_64.h b/tools/include/nolibc/arch-x86_64.h index 5e950a04bc77..6b494ca471ef 100644 --- a/tools/include/nolibc/arch-x86_64.h +++ b/tools/include/nolibc/arch-x86_64.h @@ -9,33 +9,6 @@ #include "compiler.h" -/* The struct returned by the stat() syscall, equivalent to stat64(). The - * syscall returns 116 bytes and stops in the middle of __unused. - */ -struct sys_stat_struct { - unsigned long st_dev; - unsigned long st_ino; - unsigned long st_nlink; - unsigned int st_mode; - unsigned int st_uid; - - unsigned int st_gid; - unsigned int __pad0; - unsigned long st_rdev; - long st_size; - long st_blksize; - - long st_blocks; - unsigned long st_atime; - unsigned long st_atime_nsec; - unsigned long st_mtime; - - unsigned long st_mtime_nsec; - unsigned long st_ctime; - unsigned long st_ctime_nsec; - long __unused[3]; -}; - /* Syscalls for x86_64 : * - registers are 64-bit * - syscall number is passed in rax diff --git a/tools/include/nolibc/sys.h b/tools/include/nolibc/sys.h index dee56894a811..8bfe7db20b80 100644 --- a/tools/include/nolibc/sys.h +++ b/tools/include/nolibc/sys.h @@ -943,15 +943,19 @@ pid_t setsid(void) return __sysret(sys_setsid()); } -#if defined(__NR_statx) /* * int statx(int fd, const char *path, int flags, unsigned int mask, struct statx *buf); + * int stat(const char *path, struct stat *buf); */ static __attribute__((unused)) int sys_statx(int fd, const char *path, int flags, unsigned int mask, struct statx *buf) { +#ifdef __NR_statx return my_syscall5(__NR_statx, fd, path, flags, mask, buf); +#else + return -ENOSYS; +#endif } static __attribute__((unused)) @@ -959,24 +963,18 @@ int statx(int fd, const char *path, int flags, unsigned int mask, struct statx * { return __sysret(sys_statx(fd, path, flags, mask, buf)); } -#endif -/* - * int stat(const char *path, struct stat *buf); - * Warning: the struct stat's layout is arch-dependent. - */ -#if defined(__NR_statx) && !defined(__NR_newfstatat) && !defined(__NR_stat) -/* - * Maybe we can just use statx() when available for all architectures? - */ static __attribute__((unused)) -int sys_stat(const char *path, struct stat *buf) +int stat(const char *path, struct stat *buf) { struct statx statx; long ret; - ret = sys_statx(AT_FDCWD, path, AT_NO_AUTOMOUNT, STATX_BASIC_STATS, &statx); + ret = __sysret(sys_statx(AT_FDCWD, path, AT_NO_AUTOMOUNT, STATX_BASIC_STATS, &statx)); + if (ret == -1) + return ret; + buf->st_dev = ((statx.stx_dev_minor & 0xff) | (statx.stx_dev_major << 8) | ((statx.stx_dev_minor & ~0xff) << 12)); @@ -997,47 +995,8 @@ int sys_stat(const char *path, struct stat *buf) buf->st_mtim.tv_nsec = statx.stx_mtime.tv_nsec; buf->st_ctim.tv_sec = statx.stx_ctime.tv_sec; buf->st_ctim.tv_nsec = statx.stx_ctime.tv_nsec; - return ret; -} -#else -static __attribute__((unused)) -int sys_stat(const char *path, struct stat *buf) -{ - struct sys_stat_struct stat; - long ret; - -#ifdef __NR_newfstatat - /* only solution for arm64 */ - ret = my_syscall4(__NR_newfstatat, AT_FDCWD, path, &stat, 0); -#elif defined(__NR_stat) - ret = my_syscall2(__NR_stat, path, &stat); -#else - return -ENOSYS; -#endif - buf->st_dev = stat.st_dev; - buf->st_ino = stat.st_ino; - buf->st_mode = stat.st_mode; - buf->st_nlink = stat.st_nlink; - buf->st_uid = stat.st_uid; - buf->st_gid = stat.st_gid; - buf->st_rdev = stat.st_rdev; - buf->st_size = stat.st_size; - buf->st_blksize = stat.st_blksize; - buf->st_blocks = stat.st_blocks; - buf->st_atim.tv_sec = stat.st_atime; - buf->st_atim.tv_nsec = stat.st_atime_nsec; - buf->st_mtim.tv_sec = stat.st_mtime; - buf->st_mtim.tv_nsec = stat.st_mtime_nsec; - buf->st_ctim.tv_sec = stat.st_ctime; - buf->st_ctim.tv_nsec = stat.st_ctime_nsec; - return ret; -} -#endif -static __attribute__((unused)) -int stat(const char *path, struct stat *buf) -{ - return __sysret(sys_stat(path, buf)); + return 0; } diff --git a/tools/include/nolibc/types.h b/tools/include/nolibc/types.h index 23963e48d8ee..8cfc4c860fa4 100644 --- a/tools/include/nolibc/types.h +++ b/tools/include/nolibc/types.h @@ -15,8 +15,8 @@ /* Only the generic macros and types may be defined here. The arch-specific - * ones such as the O_RDONLY and related macros used by fcntl() and open(), or - * the layout of sys_stat_struct must not be defined here. + * ones such as the O_RDONLY and related macros used by fcntl() and open() + * must not be defined here. */ /* stat flags (WARNING, octal here). We need to check for an existing From patchwork Sat Jul 15 18:21:08 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Zhangjin Wu X-Patchwork-Id: 120826 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp297411vqt; Sat, 15 Jul 2023 11:54:44 -0700 (PDT) X-Google-Smtp-Source: APBJJlEMxllq1ya2LNft7HvwBUtfXcoK+SPOZC0ICSiiMARk6sHPOzOdEmto5bQtdzFVgeTGKOL1 X-Received: by 2002:a05:6a00:24c8:b0:678:5d3c:33e8 with SMTP id d8-20020a056a0024c800b006785d3c33e8mr12325070pfv.18.1689447283853; Sat, 15 Jul 2023 11:54:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689447283; cv=none; d=google.com; s=arc-20160816; b=NmXeEnQQrskgTi0kFrN2upBJxP/Q7wgrIH2VFNbh2ocHkUa4XOUgWHdMjn0tQOQRM3 yfTiy7QYTClvmy+yU9s8HGJj4OfvzaRLKYnxTXREfvZi03l7KqHJipAQxVf99nGatXkI tEwcoOfEofZ4m+m3N7Vw4jLg36H4M3w7oHKpdz49DA6tEwaHuJPlLBzipQee17pKSsSE ipdQp1zciVHFIKyk3xmbxA15vv3dyg6PYatEGn/ShG2DaMutPgFfdc2L8hOlCWFS62UC lXY0CXhVVrFWvAyEH3diSuF3J4boAB7+suspZun3fhN7054IEGClmIxgB83I7CzZVk1p bEBQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:feedback-id:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from; bh=8DUNyfeArAemBgCxWytjSYt35iEK3DeGW7GzIwOo5Qk=; fh=gMOegYQP2NYJlMRryxqVkjdc16YOKj1hjFCkzY6Wkow=; b=NrQp4sc/Te2KUjsGJSpj0cdP5G2mplpwrRtwCDW4JM/J8xgna699BGCeuH89vE3mpb SWQSWNdk+7qpkYmgTlPDOUeLS+ef6NbkhbFIyMLSxRNJncsa8D5wZEbB4IpAzd9I9d3S 0NjjUZL7Pu1OMoLIxChe5BmWc6q1ZW8JIAlrKCxU6W1wd3jk8hE9y0qqLN1OxVnQ5GxN Mbbj40xIWNRb2Ibl3gJr9LsuPLZEf2DIhlriHdSW0vamyZFccEQwoBCLXLb3kBI6G+dm mCqEeKAgBb+6uxhKkujrdHgxatft9e5u0u7tSG5B+1rtArcoboR6vvDi/Kgu2FSfP58C jwJQ== ARC-Authentication-Results: i=1; mx.google.com; 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 ct11-20020a056a000f8b00b00682574b6ef1si9015313pfb.381.2023.07.15.11.54.29; Sat, 15 Jul 2023 11:54: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; 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 S229872AbjGOSVV (ORCPT + 99 others); Sat, 15 Jul 2023 14:21:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41030 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229472AbjGOSVU (ORCPT ); Sat, 15 Jul 2023 14:21:20 -0400 Received: from bg4.exmail.qq.com (bg4.exmail.qq.com [43.155.65.254]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6C28226AF; Sat, 15 Jul 2023 11:21:18 -0700 (PDT) X-QQ-mid: bizesmtp84t1689445269tlee84vg Received: from linux-lab-host.localdomain ( [119.123.131.162]) by bizesmtp.qq.com (ESMTP) with id ; Sun, 16 Jul 2023 02:21:08 +0800 (CST) X-QQ-SSF: 01200000002000D0W000B00A0000000 X-QQ-FEAT: QHkcO4X2U8joJupPCpNMTgviFG27Seoc0xKyOo5tFeYezFAx8mwUHDv7HcNY0 3aWJHz5rQCJpUYy6v4dJOAq+9yn8TBEdXJ/NSwL6AeYNiwJ/9+eYQgoBmOVn4/HB8x1KKsO zO0nTlUoxSYkGp29661ioMq8gyZHI8+ePwaIjxU9NIXUmKwKCdA/oVfl+3CTPP4j8j+gRbg B0ey6jZvcKpSjhU/BqYp9b3Ale7Pa1ftpOnJ6qdfN1hWz6rGRnvugW/fzwYo5txRbLQzigM rvUadcYQG56iEf/GjtzdanmTeuhVuf7uR4sTuXhuiMAj1LZROfmVWkTioXnWYkMC7cRrayh kwKLkKy8TediP/gyu7h5BSi8k7UOwYoGb5v4WR12eycX/UJOJKK4E86I+7rcCYxrI+Wx8ad X-QQ-GoodBg: 0 X-BIZMAIL-ID: 2703713777350334701 From: Zhangjin Wu To: w@1wt.eu Cc: arnd@arndb.de, falcon@tinylab.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, thomas@t-8ch.de, =?utf-8?q?Thomas_Wei?= =?utf-8?q?=C3=9Fschuh?= Subject: [PATCH v4 04/18] tools/nolibc: add new crt.h with _start_c Date: Sun, 16 Jul 2023 02:21:08 +0800 Message-Id: X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:tinylab.org:qybglogicsvrgz:qybglogicsvrgz5a-1 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE 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: INBOX X-GMAIL-THRID: 1771513875324204693 X-GMAIL-MSGID: 1771513875324204693 As the environ and _auxv support added for nolibc, the assembly _start function becomes more and more complex and therefore makes the porting of nolibc to new architectures harder and harder. To simplify portability, this C version of _start_c() is added to do most of the assembly start operations in C, which reduces the complexity a lot and will eventually simplify the porting of nolibc to the new architectures. The new _start_c() only requires a stack pointer argument, it will find argc, argv, envp/environ and _auxv for us, and then call main(), finally, it exit() with main's return status. With this new _start_c(), the future new architectures only require to add very few assembly instructions. As suggested by Thomas, users may use a different signature of main (e.g. void main(void)), a _nolibc_main alias is added for main to silence the warning about potential conflicting types. As suggested by Willy, the code is carefully polished for both smaller size and better readability with local variables and the right types. Suggested-by: Willy Tarreau Link: https://lore.kernel.org/lkml/20230715095729.GC24086@1wt.eu/ Suggested-by: Thomas Weißschuh Link: https://lore.kernel.org/lkml/90fdd255-32f4-4caf-90ff-06456b53dac3@t-8ch.de/ Signed-off-by: Zhangjin Wu --- tools/include/nolibc/Makefile | 1 + tools/include/nolibc/crt.h | 57 +++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 tools/include/nolibc/crt.h diff --git a/tools/include/nolibc/Makefile b/tools/include/nolibc/Makefile index 64d67b080744..909b6eb500fe 100644 --- a/tools/include/nolibc/Makefile +++ b/tools/include/nolibc/Makefile @@ -27,6 +27,7 @@ nolibc_arch := $(patsubst arm64,aarch64,$(ARCH)) arch_file := arch-$(nolibc_arch).h all_files := \ compiler.h \ + crt.h \ ctype.h \ errno.h \ nolibc.h \ diff --git a/tools/include/nolibc/crt.h b/tools/include/nolibc/crt.h new file mode 100644 index 000000000000..92a2a0478cb1 --- /dev/null +++ b/tools/include/nolibc/crt.h @@ -0,0 +1,57 @@ +/* SPDX-License-Identifier: LGPL-2.1 OR MIT */ +/* + * C Run Time support for NOLIBC + * Copyright (C) 2023 Zhangjin Wu + */ + +#ifndef _NOLIBC_CRT_H +#define _NOLIBC_CRT_H + +char **environ __attribute__((weak)); +const unsigned long *_auxv __attribute__((weak)); + +static void exit(int); + +void _start_c(long *sp) +{ + long argc; + char **argv; + char **envp; + const unsigned long *auxv; + /* silence potential warning: conflicting types for 'main' */ + int _nolibc_main(int, char **, char **) __asm__ ("main"); + + /* + * sp : argc <-- argument count, required by main() + * argv: argv[0] <-- argument vector, required by main() + * argv[1] + * ... + * argv[argc-1] + * null + * environ: environ[0] <-- environment variables, required by main() and getenv() + * environ[1] + * ... + * null + * _auxv: _auxv[0] <-- auxiliary vector, required by getauxval() + * _auxv[1] + * ... + * null + */ + + /* assign argc and argv */ + argc = *sp; + argv = (void *)(sp + 1); + + /* find environ */ + environ = envp = argv + argc + 1; + + /* find _auxv */ + for (auxv = (void *)envp; *auxv++;) + ; + _auxv = auxv; + + /* go to application */ + exit(_nolibc_main(argc, argv, envp)); +} + +#endif /* _NOLIBC_CRT_H */ From patchwork Sat Jul 15 18:22:15 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhangjin Wu X-Patchwork-Id: 120830 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp297482vqt; Sat, 15 Jul 2023 11:54:58 -0700 (PDT) X-Google-Smtp-Source: APBJJlEW8mQCD0qa3XToOAOrKOuJRjZAy+B6MO/OeGTecPG7+YVvjv/15WfulLR/aUUWBXgGkQI/ X-Received: by 2002:a17:906:6817:b0:992:1b2:4090 with SMTP id k23-20020a170906681700b0099201b24090mr6089224ejr.64.1689447297685; Sat, 15 Jul 2023 11:54:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689447297; cv=none; d=google.com; s=arc-20160816; b=ldPD8mKC6VMLJRzwiRifGhboT4ydlEM7R3xGaZVcDSd1kH/sIcFPCmoBfW5WXTMC7G b2/ahnvBTFhvherlD8Cq14IvDk1lDWFaSr3PJTXOKXrFKGM9127ys0E92IX8LTnzsJjR aMI97Pvx5BYppTT1bfbu4F6atX50qmSe6cFapbukzovWDU+IFLCfHdiO/4Sk6zarQbMy e8oHIznUrAzU3Yz/TA5DmE8G2gqU4uz647zsB9hMTcdaDaEHoXU+JzVfoOQbF7SdFcKl OKlTfbljYQDDgFtqCJe4WIncUKk8VyuavluB3okpKoqXG1iBmukqjMh7zWoDWLcMBwXL GGqQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:feedback-id:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from; bh=ODY9KmAhFGAn95ciey0dPd3PwmG7CLkHuL40F/IvTkw=; fh=sXngqCw1oXONrSSImRxZmGyzcK67QhJYp1RgY40tBsg=; b=ptUWOE4VlQ58dqUxOUhIPSnyjxB7j/fP0G2G8mPyeLubpoVPvuIHfgId0hU+ROW/xP O7joShQOhpKBgNCUsiikLp+dNfRd1qhUSmzxXREHc181kkGFTZ3Qj4dSjYrogT9yabNH wM/3qrCJISt6shs/x+XUrM9Lxj8klWiDgiTrrLxxZ1/SJbecsNGaO2IAZmjEx4LYUqQQ c2L3kC+If1MjGDHNz7wzNJve0Y4SNvTS0Dcf83AM3rDR46RuFkPiQx1NIwpj5m8GS/9u d4eO1AYbvFx6/EEd7+KVY2firrt0mTqaRo5Jr8/Yk+hj5yILyUp4qkR6WpjmV557xINc guug== ARC-Authentication-Results: i=1; mx.google.com; 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 i9-20020a170906850900b0098e444cba76si10299222ejx.91.2023.07.15.11.54.30; Sat, 15 Jul 2023 11:54:57 -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; 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 S229974AbjGOSW2 (ORCPT + 99 others); Sat, 15 Jul 2023 14:22:28 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41490 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229472AbjGOSW1 (ORCPT ); Sat, 15 Jul 2023 14:22:27 -0400 Received: from bg4.exmail.qq.com (bg4.exmail.qq.com [43.154.54.12]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6EBD726AF; Sat, 15 Jul 2023 11:22:25 -0700 (PDT) X-QQ-mid: bizesmtp85t1689445336th79xll2 Received: from linux-lab-host.localdomain ( [119.123.131.162]) by bizesmtp.qq.com (ESMTP) with id ; Sun, 16 Jul 2023 02:22:15 +0800 (CST) X-QQ-SSF: 01200000002000D0W000B00A0000000 X-QQ-FEAT: 3M0okmaRx3gatoYt99Gz1/q2kqkvuelsEDwFaEoa/fIfIzbezdNVYl44zta39 +9Mkt5CDuGi7yZ2m+8kVUsmZP8VMJ0/DmOyIYYpPxkVO9/aT+kX2HsKFBNC99J10jtCJveT gPL0WetTKuh/GQl32ai0hVWemT2PKcVdhPF2/jW7NWScK8L+h6JZc3GJqFnGkq2WfvTfKgT XEuEP8rxflfmz9NzLbWr76sGy8V5AOA5PvHr8ANLqFP7ASLvcFPe1hhfoX1CmC1t9uT3ygM bP+b3SLYe5CQjg718rL7Vns/jDSkHUl1JjpMkOIfvN7cY0pfYA4uw7jqbl8NtzWDPtxphJM SwqCVseIyJjVKIrX8W9yomICM+q7Yh+eNbzP/oL6YKGWhb6sDx8q8yJumfhXQ== X-QQ-GoodBg: 0 X-BIZMAIL-ID: 11069775468019924728 From: Zhangjin Wu To: w@1wt.eu Cc: arnd@arndb.de, falcon@tinylab.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, thomas@t-8ch.de Subject: [PATCH v4 05/18] tools/nolibc: stackprotector.h: add empty __stack_chk_init for !_NOLIBC_STACKPROTECTOR Date: Sun, 16 Jul 2023 02:22:15 +0800 Message-Id: X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:tinylab.org:qybglogicsvrgz:qybglogicsvrgz5a-1 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE 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: INBOX X-GMAIL-THRID: 1771513889830940262 X-GMAIL-MSGID: 1771513889830940262 Let's define an empty __stack_chk_init for the !_NOLIBC_STACKPROTECTOR branch. This allows to remove #ifdef around every call of __stack_chk_init(). Signed-off-by: Zhangjin Wu --- tools/include/nolibc/stackprotector.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/include/nolibc/stackprotector.h b/tools/include/nolibc/stackprotector.h index 88f7b2d098ff..b620f2b9578d 100644 --- a/tools/include/nolibc/stackprotector.h +++ b/tools/include/nolibc/stackprotector.h @@ -45,6 +45,8 @@ void __stack_chk_init(void) if (__stack_chk_guard != (uintptr_t) &__stack_chk_guard) __stack_chk_guard ^= (uintptr_t) &__stack_chk_guard; } +#else /* !defined(_NOLIBC_STACKPROTECTOR) */ +__inline__ void __stack_chk_init(void) {} #endif /* defined(_NOLIBC_STACKPROTECTOR) */ #endif /* _NOLIBC_STACKPROTECTOR_H */ From patchwork Sat Jul 15 18:23:21 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Zhangjin Wu X-Patchwork-Id: 120823 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp297398vqt; Sat, 15 Jul 2023 11:54:42 -0700 (PDT) X-Google-Smtp-Source: APBJJlHWhLIp6STsPmzn9N/tz+tPFOt0mb8CJ+ZW2Xo3I9H8T7U9m7O0PksJ6LSZD2wptXWn1zjA X-Received: by 2002:a17:903:11cc:b0:1b3:c4c1:ec4f with SMTP id q12-20020a17090311cc00b001b3c4c1ec4fmr10617665plh.37.1689447282042; Sat, 15 Jul 2023 11:54:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689447282; cv=none; d=google.com; s=arc-20160816; b=O+tGhUNRYH5DtU6Fh5h3lRJ+PJgp2Ynx9l7qXuzrBLeLydHATBqO0Ak2eaj00XVjXh Tscll19jebPjQ7d6zRgmDJEoSJIsOsLMO1kXyMC5E/99r6P5D3CkaZq3O5IEjbQyHbT4 6vFaTUacRNcofEsOIgBnyJgjQIBnqLk7ft/OKYmLVDUEoEXM8lrMzM3E7gnewxlneXHt 0pUugHCExvowv1JngjhSnCVifnhaP5gSRbx6usFGImxOnmzV/33ybXOSN5ZqALC86iDD MjKDHDSDgXzvdnws81CfyY/rrRmbq0Ufor81fE/e5XHlgS7aO5mXWOAzftSCTl3A2ogO TycA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:feedback-id:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from; bh=7GmEyQJA9FCUITPw3DRSJ410vIiuYEVq1gSqfOYATF8=; fh=gMOegYQP2NYJlMRryxqVkjdc16YOKj1hjFCkzY6Wkow=; b=l14hgJicPggn556A8OvLGEFMskTH2nHRDQtgJDA/HWwttpfydHoWIeem4e2ZMOx3Zp N8We9bgypqXX6PAer/dnq/f9BRQI9sOJl8HC2tVPV9UVTtjXkuILHzpT2R3Se4nNxmdt M+umDyxfoQBM2TGVgIfGnYPEh+dSwtIl4gUpcEh1eHy9GlXDlyvtMp1MBoV0b8xOisgV /b23AdWj18NifYTGElW1vq+7N1WV9HZHVt/Qd5KoQRF/9j2nrHKODaVUipl8vB6EzZec BmdW/1qmQcD6gJIHqMjusVt+ekAjwMxTXzDzyRquXQVF/FP6peYTam+mnXL4iRWhih8v QX1g== ARC-Authentication-Results: i=1; mx.google.com; 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 kg14-20020a170903060e00b001b9d5e34e57si9042472plb.415.2023.07.15.11.54.17; Sat, 15 Jul 2023 11:54:42 -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; 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 S229789AbjGOSXg (ORCPT + 99 others); Sat, 15 Jul 2023 14:23:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41920 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229472AbjGOSXf (ORCPT ); Sat, 15 Jul 2023 14:23:35 -0400 Received: from bg4.exmail.qq.com (bg4.exmail.qq.com [43.155.65.254]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6D0FE26AF; Sat, 15 Jul 2023 11:23:33 -0700 (PDT) X-QQ-mid: bizesmtp74t1689445403tdi2n85s Received: from linux-lab-host.localdomain ( [119.123.131.162]) by bizesmtp.qq.com (ESMTP) with id ; Sun, 16 Jul 2023 02:23:21 +0800 (CST) X-QQ-SSF: 01200000000000D0W000000A0000000 X-QQ-FEAT: aRJAvSRewFZh1UoATmMpA0iwFRanbp2F60/aVC49NkfTvP7x0J/z/gdxkXHge vY1xI9vDDBjjW77K2GoiDV40/WdGKKXYBmjWQK2QLuCmNdAX1eF6eSeBtQFDpIlkuCxz676 WRFG3BSpwpOEi4GyAFAONeMD7YxiGjpvAIynYQKjdH1FDY1LfAzSnX2f0y3zz11DSwFvamB opIi6gVA62ZlDUHarOihZvXREhPD6vRJfwy5kpmosIq++AVdmwgA4kRrKLIgzVLshHoVINy KHnCfmQ0jeV2iEhU7QOS2c/3ddumrHmvWTvx8Qsdz4p9G6xvPMKTTGSg3Iv2xdbdCAfxvn0 +BmCMGH1MA9ov65bYvh8JIBHgEa2H4MB907Ek/gdhyZCUMTk3zVVHyZ0UvByr6PA8CN+OuL X-QQ-GoodBg: 0 X-BIZMAIL-ID: 3644606421767073713 From: Zhangjin Wu To: w@1wt.eu Cc: arnd@arndb.de, falcon@tinylab.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, thomas@t-8ch.de, =?utf-8?q?Thomas_Wei?= =?utf-8?q?=C3=9Fschuh?= Subject: [PATCH v4 06/18] tools/nolibc: crt.h: initialize stack protector Date: Sun, 16 Jul 2023 02:23:21 +0800 Message-Id: <2d286a88c325ab7e445029be6ab99eb810003e62.1689444638.git.falcon@tinylab.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:tinylab.org:qybglogicsvrgz:qybglogicsvrgz5a-1 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE 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: INBOX X-GMAIL-THRID: 1771513872908575793 X-GMAIL-MSGID: 1771513872908575793 As suggested by Thomas, It is able to move the stackprotector initialization from the assembly _start to the beginning of the new _start_c(). Let's call __stack_chk_init() in _start_c() as a preparation. Suggested-by: Thomas Weißschuh Link: https://lore.kernel.org/lkml/a00284a6-54b1-498c-92aa-44997fa78403@t-8ch.de/ Signed-off-by: Zhangjin Wu --- tools/include/nolibc/crt.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tools/include/nolibc/crt.h b/tools/include/nolibc/crt.h index 92a2a0478cb1..32e128b0fb62 100644 --- a/tools/include/nolibc/crt.h +++ b/tools/include/nolibc/crt.h @@ -10,6 +10,7 @@ char **environ __attribute__((weak)); const unsigned long *_auxv __attribute__((weak)); +void __stack_chk_init(void); static void exit(int); void _start_c(long *sp) @@ -21,6 +22,9 @@ void _start_c(long *sp) /* silence potential warning: conflicting types for 'main' */ int _nolibc_main(int, char **, char **) __asm__ ("main"); + /* initialize stack protector */ + __stack_chk_init(); + /* * sp : argc <-- argument count, required by main() * argv: argv[0] <-- argument vector, required by main() From patchwork Sat Jul 15 18:24:29 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhangjin Wu X-Patchwork-Id: 120818 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp291404vqt; Sat, 15 Jul 2023 11:35:11 -0700 (PDT) X-Google-Smtp-Source: APBJJlHbFOkLQeZfhXjQftm0LPFGr3m1zX/cQ9HpF+cdShyLWgMR4TDLqxG5/NkM78DwSzpgLom/ X-Received: by 2002:a17:902:da88:b0:1b8:4e00:96b with SMTP id j8-20020a170902da8800b001b84e00096bmr9512085plx.9.1689446110855; Sat, 15 Jul 2023 11:35:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689446110; cv=none; d=google.com; s=arc-20160816; b=HXqTkVIbRPv6ubEWcrXe5qqM+HsPduiZFiAsQC/m/jRSd9w982pSjBgaVc6ebg3HFE 3oM5kxuq4q0DdKR21oU0Gj3dbu6+GWxpRK/cTwG1tIR/SNKhMCTbhUTauXh0HwaN+PCh dIjwHZfGrEAbj0atXTfjtT+qvMEpweDyGp7JhyblmQUWsESsyjonoCRRsXYYzbWeFQ8t iO718xwhxwz31av8mfni5alBLWxOKPlDWOUEVnLaaF1W9NFyo6nPyax6j5iCVDlm6/6Z pM8/cBRXbYh0a6qXqUaITmU9zoVaxJb84hPn9SzoAPUJjNfqV/iNmtMwTpmOinh8knsm GkYA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:feedback-id:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from; bh=tSHjdQG0CUgS18cFk/L+gkOLn5w21cQ5T0iVjB9NtdU=; fh=sXngqCw1oXONrSSImRxZmGyzcK67QhJYp1RgY40tBsg=; b=ZqE3PU028pJ9IhokZRh95MeBMLTHq7ezjU7rWUVBagwiftS3s5W0PobfhiIf5Yxn3Q u5khRxSiyLZNIdBwWjzeHYe4nMG6TBXU+G5w0j/Y6WKmiS4DRY2rpeozoI5fhu2sK1U4 FCoVfeYlparwGlFJjGunBXyEtopITds+UUAoUwOqvygd6S0mI3uqNfIQvvjz0tMrycuU +UbCAUBftt1l8091kXeycBrXteVOU8tZBJVlRUtTHr51bOZEjZo6/PqYVzgbJcABQxy1 OupsHvQ7ZatmTvdCwpSpt9H63vEJe5CLK1+Qn0LTEdu1SRnQTfiejO/ln9D0+Pm6exWR AuXw== ARC-Authentication-Results: i=1; mx.google.com; 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 m1-20020a170902768100b001aaea258805si8977020pll.134.2023.07.15.11.34.57; Sat, 15 Jul 2023 11:35:10 -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; 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 S229809AbjGOSYm (ORCPT + 99 others); Sat, 15 Jul 2023 14:24:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42354 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229472AbjGOSYl (ORCPT ); Sat, 15 Jul 2023 14:24:41 -0400 Received: from bg4.exmail.qq.com (bg4.exmail.qq.com [43.155.65.254]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 47C3126AF; Sat, 15 Jul 2023 11:24:39 -0700 (PDT) X-QQ-mid: bizesmtp66t1689445470tmh7la4l Received: from linux-lab-host.localdomain ( [119.123.131.162]) by bizesmtp.qq.com (ESMTP) with id ; Sun, 16 Jul 2023 02:24:29 +0800 (CST) X-QQ-SSF: 01200000002000D0W000B00A0000000 X-QQ-FEAT: XBN7tc9DADLd+8HjQGb0FOWlOVPqo5Ahl4SrFFvntkNjTbYnk6cZ4spbHoNlE oi7hFMRBk9vB/IF5nDv1ubzWujRzBVzSaUAU3tsTlmDlhiEgfrWUeXeCaK7a8NaHGY3oaFv HNc/y/DivXfWCkWcezk1+++8WCaUbrICbieLR1R/TbU/p/2geyJUuX3ClF/KKToZKd0x/ub c+ILyKS1XwMF8wn2NIoDufokixLCrj5g/9RC+KW1/W1U97MT/j9C/Qcb89cICTlybihlO0b JA+MUErYgOOljYQQ0OrgMI6DXToHIF4LRKnd5q2f4BSpmDaYGstKIIaIlIQT1/U/GP9eIGn wMQacP38nQH7gRoU8tNhXc3H8jZjo/EJvCOqyKh3fKy6xgduGTMefaGjcCvPg== X-QQ-GoodBg: 0 X-BIZMAIL-ID: 6138912096365051430 From: Zhangjin Wu To: w@1wt.eu Cc: arnd@arndb.de, falcon@tinylab.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, thomas@t-8ch.de Subject: [PATCH v4 07/18] tools/nolibc: arm: shrink _start with _start_c Date: Sun, 16 Jul 2023 02:24:29 +0800 Message-Id: <5cdded9a3bd45b035ab25cba1996745d7009f02e.1689444638.git.falcon@tinylab.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:tinylab.org:qybglogicsvrgz:qybglogicsvrgz5a-1 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE 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: INBOX X-GMAIL-THRID: 1771512645423177174 X-GMAIL-MSGID: 1771512645423177174 move most of the _start operations to _start_c(), include the stackprotector initialization. Signed-off-by: Zhangjin Wu --- tools/include/nolibc/arch-arm.h | 44 ++++----------------------------- 1 file changed, 5 insertions(+), 39 deletions(-) diff --git a/tools/include/nolibc/arch-arm.h b/tools/include/nolibc/arch-arm.h index a06dad789a22..cae4afa7c1c7 100644 --- a/tools/include/nolibc/arch-arm.h +++ b/tools/include/nolibc/arch-arm.h @@ -8,6 +8,7 @@ #define _NOLIBC_ARCH_ARM_H #include "compiler.h" +#include "crt.h" /* Syscalls for ARM in ARM or Thumb modes : * - registers are 32-bit @@ -183,49 +184,14 @@ _arg1; \ }) - -char **environ __attribute__((weak)); -const unsigned long *_auxv __attribute__((weak)); - /* startup code */ void __attribute__((weak, noreturn, optimize("Os", "omit-frame-pointer"))) __no_stack_protector _start(void) { __asm__ volatile ( -#ifdef _NOLIBC_STACKPROTECTOR - "bl __stack_chk_init\n" /* initialize stack protector */ -#endif - "pop {%r0}\n" /* argc was in the stack */ - "mov %r1, %sp\n" /* argv = sp */ - - "add %r2, %r0, $1\n" /* envp = (argc + 1) ... */ - "lsl %r2, %r2, $2\n" /* * 4 ... */ - "add %r2, %r2, %r1\n" /* + argv */ - "ldr %r3, 1f\n" /* r3 = &environ (see below) */ - "str %r2, [r3]\n" /* store envp into environ */ - - "mov r4, r2\n" /* search for auxv (follows NULL after last env) */ - "0:\n" - "mov r5, r4\n" /* r5 = r4 */ - "add r4, r4, #4\n" /* r4 += 4 */ - "ldr r5,[r5]\n" /* r5 = *r5 = *(r4-4) */ - "cmp r5, #0\n" /* and stop at NULL after last env */ - "bne 0b\n" - "ldr %r3, 2f\n" /* r3 = &_auxv (low bits) */ - "str r4, [r3]\n" /* store r4 into _auxv */ - - "mov %r3, $8\n" /* AAPCS : sp must be 8-byte aligned in the */ - "neg %r3, %r3\n" /* callee, and bl doesn't push (lr=pc) */ - "and %r3, %r3, %r1\n" /* so we do sp = r1(=sp) & r3(=-8); */ - "mov %sp, %r3\n" - - "bl main\n" /* main() returns the status code, we'll exit with it. */ - "movs r7, $1\n" /* NR_exit == 1 */ - "svc $0x00\n" - ".align 2\n" /* below are the pointers to a few variables */ - "1:\n" - ".word environ\n" - "2:\n" - ".word _auxv\n" + "mov %r0, sp\n" /* save stack pointer to %r0, as arg1 of _start_c */ + "and ip, %r0, #-8\n" /* sp must be 8-byte aligned in the callee */ + "mov sp, ip\n" + "bl _start_c\n" /* transfer to c runtime */ ); __builtin_unreachable(); } From patchwork Sat Jul 15 18:25:35 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhangjin Wu X-Patchwork-Id: 120825 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp297407vqt; Sat, 15 Jul 2023 11:54:43 -0700 (PDT) X-Google-Smtp-Source: APBJJlFgH2SsxyCT5FhHwBPySwpcmteQbC8ZXjhdUAcaTas+VALF3gfWddgVAEvPs/t1nPd3AQTO X-Received: by 2002:a05:6a00:391f:b0:668:6723:547b with SMTP id fh31-20020a056a00391f00b006686723547bmr7080387pfb.2.1689447282788; Sat, 15 Jul 2023 11:54:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689447282; cv=none; d=google.com; s=arc-20160816; b=xFFV1c+qce9UqJdQcxzmUvitY4iONsZtFFTsa4ot+UML/yxytXuS3mNO2xGIDaPSND fNVQDEMlxn75U4YsRNlvK6x+etFr0y2ru6Xf1xBQNee+3ZD4ULPIP3RG5B180oMZ5vSF MWnhaHSlGm6ROlHCgZDronkuMAv35memRH98/3bmZ/bB89WJVMD280mtczfsV0Xpz3SP A9cUkAn23XvVfDe4NmEgY5SHM2sH/0ivRPPsPRv30yc4l0qmJlfLC3d2EzwNB/vSFoXX xoNuPLcTLki/0TW/JQJTqKv/Rd9A/J1QzRtHJ4796Ybkgv1abadnaTqaj3ZEJvuukOya ZBvw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:feedback-id:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from; bh=1D7bONskL0BGvCHLFxNAHXOBXnUTKZXP2btSUDQXU9s=; fh=sXngqCw1oXONrSSImRxZmGyzcK67QhJYp1RgY40tBsg=; b=HeXYmiOjwDTlOM0BwiNvksTfOa9O7QtiYfnRTJTSkpw7/JxNla19noVyhyqbKgebeO 0f+sTstrc5Lm3T4SJ/O5pwB3QAlXRlZLMOITObJJdR2I59tNZPuVbs/v/hgKfCvpYOfY F2d0g8bL4EK4sb3c41j3DuQkYtQ7zETVpGSk0XotFwSc5TwgZRQUb/ADO69mj7ewtui2 D4n/cmdl29rypKA9lP5aDcQkg7z3QzUhE8VjsB+SjBbDD+80W/g8KI2PBRiIPaHuDlcb /S5EZFZFmdTULd1KfnsZInYGLqVMM3CKFDmLdaFUsAeZzCdKB14JInj4ZT3MolY4Ookl et5A== ARC-Authentication-Results: i=1; mx.google.com; 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 ct22-20020a056a000f9600b00666e42caa20si9140679pfb.203.2023.07.15.11.54.23; Sat, 15 Jul 2023 11:54:42 -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; 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 S230149AbjGOSZs (ORCPT + 99 others); Sat, 15 Jul 2023 14:25:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42846 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229632AbjGOSZr (ORCPT ); Sat, 15 Jul 2023 14:25:47 -0400 Received: from bg4.exmail.qq.com (bg4.exmail.qq.com [43.155.65.254]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 823E426AF; Sat, 15 Jul 2023 11:25:45 -0700 (PDT) X-QQ-mid: bizesmtp83t1689445536t51qccr6 Received: from linux-lab-host.localdomain ( [119.123.131.162]) by bizesmtp.qq.com (ESMTP) with id ; Sun, 16 Jul 2023 02:25:35 +0800 (CST) X-QQ-SSF: 01200000002000D0W000B00A0000000 X-QQ-FEAT: swyrzWPvyR0SVLPCIEBJ3FmK4mjB4Ruu7LCKEoOO7zFGry7kYeP8QMiknFBUy KZ5rwT0Hyd+JTw6yPdX7imxsSinX/whs1WBDcP07QNC57ycIEg+nix3fRUBaGuVIVJ4jFqA /860YEgXbfBbMtrbFrWr0fEMqYjttIOIV3qeKA+0lHtvpRo4WAPrJC99Tu8CvAeBHWClF36 dUt/6EDh6U16Sjf1LVDr/ip4ayxNn6mvdkIVFCz5WyVGRF+YkD9uX8K6CSLmnUj7oTPt1Y+ G8Sz2ZYMhX8vYmrsvdzk9AD6Ut7KlIBblnbJ2J4hS5K3xZmmxIkcdEbOPuoNrjR3WbzdRpr viYBFGyVLaRSqku7CGp8xOqTpnt4P5wAr5Fh5AGH6kmlWi+qIxh9O92zOCDOA== X-QQ-GoodBg: 0 X-BIZMAIL-ID: 2756831456612781110 From: Zhangjin Wu To: w@1wt.eu Cc: arnd@arndb.de, falcon@tinylab.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, thomas@t-8ch.de Subject: [PATCH v4 08/18] tools/nolibc: aarch64: shrink _start with _start_c Date: Sun, 16 Jul 2023 02:25:35 +0800 Message-Id: <8fe5cfc24f0782bce1f4e1aac6e13ffbf0e3ece9.1689444638.git.falcon@tinylab.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:tinylab.org:qybglogicsvrgz:qybglogicsvrgz5a-1 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE 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: INBOX X-GMAIL-THRID: 1771513873948068629 X-GMAIL-MSGID: 1771513873948068629 move most of the _start operations to _start_c(), include the stackprotector initialization. Signed-off-by: Zhangjin Wu --- tools/include/nolibc/arch-aarch64.h | 27 ++++----------------------- 1 file changed, 4 insertions(+), 23 deletions(-) diff --git a/tools/include/nolibc/arch-aarch64.h b/tools/include/nolibc/arch-aarch64.h index 3c0a5f47b3e8..6c33c46848e3 100644 --- a/tools/include/nolibc/arch-aarch64.h +++ b/tools/include/nolibc/arch-aarch64.h @@ -8,6 +8,7 @@ #define _NOLIBC_ARCH_AARCH64_H #include "compiler.h" +#include "crt.h" /* Syscalls for AARCH64 : * - registers are 64-bit @@ -143,33 +144,13 @@ _arg1; \ }) -char **environ __attribute__((weak)); -const unsigned long *_auxv __attribute__((weak)); - /* startup code */ void __attribute__((weak, noreturn, optimize("Os", "omit-frame-pointer"))) __no_stack_protector _start(void) { __asm__ volatile ( -#ifdef _NOLIBC_STACKPROTECTOR - "bl __stack_chk_init\n" /* initialize stack protector */ -#endif - "ldr x0, [sp]\n" /* argc (x0) was in the stack */ - "add x1, sp, 8\n" /* argv (x1) = sp */ - "lsl x2, x0, 3\n" /* envp (x2) = 8*argc ... */ - "add x2, x2, 8\n" /* + 8 (skip null) */ - "add x2, x2, x1\n" /* + argv */ - "adrp x3, environ\n" /* x3 = &environ (high bits) */ - "str x2, [x3, #:lo12:environ]\n" /* store envp into environ */ - "mov x4, x2\n" /* search for auxv (follows NULL after last env) */ - "0:\n" - "ldr x5, [x4], 8\n" /* x5 = *x4; x4 += 8 */ - "cbnz x5, 0b\n" /* and stop at NULL after last env */ - "adrp x3, _auxv\n" /* x3 = &_auxv (high bits) */ - "str x4, [x3, #:lo12:_auxv]\n" /* store x4 into _auxv */ - "and sp, x1, -16\n" /* sp must be 16-byte aligned in the callee */ - "bl main\n" /* main() returns the status code, we'll exit with it. */ - "mov x8, 93\n" /* NR_exit == 93 */ - "svc #0\n" + "mov x0, sp\n" /* save stack pointer to x0, as arg1 of _start_c */ + "and sp, x0, -16\n" /* sp must be 16-byte aligned in the callee */ + "bl _start_c\n" /* transfer to c runtime */ ); __builtin_unreachable(); } From patchwork Sat Jul 15 18:26:42 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhangjin Wu X-Patchwork-Id: 120827 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp297418vqt; Sat, 15 Jul 2023 11:54:46 -0700 (PDT) X-Google-Smtp-Source: APBJJlHDg2fuG2+UYg+adpj8ieGDBy4sjeicF5E6yiaYx5TsN5UcWvdzJNpKWoCUFX0dr7RwQAdO X-Received: by 2002:a05:6a20:3c9f:b0:123:4ffe:4018 with SMTP id b31-20020a056a203c9f00b001234ffe4018mr9692788pzj.60.1689447286575; Sat, 15 Jul 2023 11:54:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689447286; cv=none; d=google.com; s=arc-20160816; b=Z/C1CjUhkR4efLJ6nRsLTfWMVE0BoGpjgi4K9fYalaYG+NoAw0vq+RWmvumJyBOB3t EmceGVIme5eq5BhCoBawxgaOZQux9fjOyDPgpLrwbSM0Ph5XKU3+931N/tAmrjvp34RE XHpqIjyoF9QWACE95tyA/1/C8DOelnztZsv+cIkOV96EP2tbEERboxja6MieR2EmoWzj Msu8fza2YBdwHdS1o8E+GxqyDUkaWZVuJVA7KfJL3hyBbduKrvZizsvlMHZqI+FO2yzM KxoM8tUaQcdmU80FHZ9y+G9JHNwuo21vLBfHaudY5jxrPv62bm4n5chIRKFOhSxuV6Xe Mmrg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:feedback-id:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from; bh=Ri+32k5BLHcj6VLE0O8nMiqJj4+vQCtfe8ROm0ik6HM=; fh=sXngqCw1oXONrSSImRxZmGyzcK67QhJYp1RgY40tBsg=; b=hGw8QrEKmyjxXJ/ODaPSrbXM253HjD+WJcQnL5JAZA5Fzc/4Az1sA1bQeulLoIwAAf kbVl25uPfmzzxgy4pUi7CSoJ7xziTvMNXikiL588f8t9VzEEx4CZoPBrzlEIbKfxVFwx 3Hf4oeHUBIM0lSPp7xLUgGoi9x4bkRnIFTaRh2h2y4KFKM/x67mid1BmXS/aTePjqkRX OZio6vTs/l7r2Chc7Us0ExJWAPnc0ig4Ugg601uvoyNZuJIoBK1FLCuO2QpyyWVGf/2R P6gdPw1HTprgoIapGsjCSbsOMBxr0sXdTa6NohOgcGc599eiXXO1hnzN24DLQr9WtBmh c3LA== ARC-Authentication-Results: i=1; mx.google.com; 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 b3-20020a056a00114300b006687255a465si9189719pfm.298.2023.07.15.11.54.30; Sat, 15 Jul 2023 11:54:46 -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; 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 S230177AbjGOS04 (ORCPT + 99 others); Sat, 15 Jul 2023 14:26:56 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43658 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229632AbjGOS0y (ORCPT ); Sat, 15 Jul 2023 14:26:54 -0400 Received: from bg4.exmail.qq.com (bg4.exmail.qq.com [43.154.54.12]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8D77A1B6; Sat, 15 Jul 2023 11:26:52 -0700 (PDT) X-QQ-mid: bizesmtp82t1689445603tsgi0gsl Received: from linux-lab-host.localdomain ( [119.123.131.162]) by bizesmtp.qq.com (ESMTP) with id ; Sun, 16 Jul 2023 02:26:42 +0800 (CST) X-QQ-SSF: 01200000002000D0W000B00A0000000 X-QQ-FEAT: qOAV9bwDT/kSqlse5e4lug4VHat/aabuEX5Xe9QzvVHXgMbvO7tddyAjjH/68 xTd05Ua+5kRzIU5qS1j5MKyAqWhZyjT91W5Oi6Bmglyi5TVZajNBXqoYE/oDVBrueWFhwz7 WMmg8VfRnNbuOfHL5euQK/qBWuOCcOKUEizedUGzSr795imKLa69WK2Wlx6gLhqllep1ALC iOlC5LPc8IjWcCrdAvX0M3Jcryn00W04sAN04OWwN2Bv0DC/aUns7qmZvcyjbgJJQ5SFLko 9DCcTYm/Fj7VatdK1Aqi8fnm3SPUhp/Ze4x8Hq2vJXBF8eUrFVql7n5ja1/V/f62aPvSIhr 7ZpmSgWV0UxpglS68tAFjWNsHsEpkFSdxtEpx6yHUG0tkLZ5RJ7KYCYUtzMNg== X-QQ-GoodBg: 0 X-BIZMAIL-ID: 1089036118975101126 From: Zhangjin Wu To: w@1wt.eu Cc: arnd@arndb.de, falcon@tinylab.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, thomas@t-8ch.de Subject: [PATCH v4 09/18] tools/nolibc: i386: shrink _start with _start_c Date: Sun, 16 Jul 2023 02:26:42 +0800 Message-Id: X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:tinylab.org:qybglogicsvrgz:qybglogicsvrgz5a-1 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE 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: INBOX X-GMAIL-THRID: 1771513878053991144 X-GMAIL-MSGID: 1771513878053991144 move most of the _start operations to _start_c(), include the stackprotector initialization. Signed-off-by: Zhangjin Wu --- tools/include/nolibc/arch-i386.h | 34 +++++++------------------------- 1 file changed, 7 insertions(+), 27 deletions(-) diff --git a/tools/include/nolibc/arch-i386.h b/tools/include/nolibc/arch-i386.h index fe0b73f032c3..64415b9fac77 100644 --- a/tools/include/nolibc/arch-i386.h +++ b/tools/include/nolibc/arch-i386.h @@ -8,6 +8,7 @@ #define _NOLIBC_ARCH_I386_H #include "compiler.h" +#include "crt.h" /* Syscalls for i386 : * - mostly similar to x86_64 @@ -154,9 +155,6 @@ _eax; \ }) -char **environ __attribute__((weak)); -const unsigned long *_auxv __attribute__((weak)); - /* startup code */ /* * i386 System V ABI mandates: @@ -167,30 +165,12 @@ const unsigned long *_auxv __attribute__((weak)); void __attribute__((weak, noreturn, optimize("Os", "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) */ - "mov %ecx, environ\n" /* save environ */ - "xor %ebp, %ebp\n" /* zero the stack frame */ - "mov %ecx, %edx\n" /* search for auxv (follows NULL after last env) */ - "0:\n" - "add $4, %edx\n" /* search for auxv using edx, it follows the */ - "cmp -4(%edx), %ebp\n" /* ... NULL after last env (ebp is zero here) */ - "jnz 0b\n" - "mov %edx, _auxv\n" /* save it into _auxv */ - "and $-16, %esp\n" /* x86 ABI : esp must be 16-byte aligned before */ - "sub $4, %esp\n" /* the call instruction (args are aligned) */ - "push %ecx\n" /* push all registers on the stack so that we */ - "push %ebx\n" /* support both regparm and plain stack modes */ - "push %eax\n" - "call main\n" /* main() returns the status code in %eax */ - "mov %eax, %ebx\n" /* retrieve exit code (32-bit int) */ - "movl $1, %eax\n" /* NR_exit == 1 */ - "int $0x80\n" /* exit now */ - "hlt\n" /* ensure it does not */ + "xor %ebp, %ebp\n" /* zero the stack frame */ + "mov %esp, %eax\n" /* save stack pointer to %eax, as arg1 of _start_c */ + "and $-16, %esp\n" /* last pushed argument must be 16-byte aligned */ + "push %eax\n" /* push arg1 on stack to support plain stack modes too */ + "call _start_c\n" /* transfer to c runtime */ + "hlt\n" /* ensure it does not return */ ); __builtin_unreachable(); } From patchwork Sat Jul 15 18:27:49 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhangjin Wu X-Patchwork-Id: 120822 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp297399vqt; Sat, 15 Jul 2023 11:54:42 -0700 (PDT) X-Google-Smtp-Source: APBJJlE7/sShulQouPwRWpO0mj13h8VtRDEcb944W0rbcXIQqYEWU/6pSGEys4GEwRvuscgdegS/ X-Received: by 2002:a05:6a20:160a:b0:12e:65f8:10dd with SMTP id l10-20020a056a20160a00b0012e65f810ddmr6855133pzj.53.1689447281890; Sat, 15 Jul 2023 11:54:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689447281; cv=none; d=google.com; s=arc-20160816; b=HuQIc75TRli44td0VNcVsQisBshvFo1LNoXs4h77x4HHiLrU+eUYs4G3AG+mm/1SsI ro29ItCKAgVkmgXp8V1uDGmhzLZySWV37ntHKoyUZJkSdlEfdUZ5jvM1T8kAbr5FVIjH 96wPVUmRty+LVoiN6QcuB4X5dzXV1frSX3L46reffNDIILFdrQ23uhJfZBP7lo7Yoo3n teejzcoJU6vTNC+AjZNQA/DBnStc7RVFxLAks1BN6G8l7WVepE/etGxx9EHPJXObbVvw dimD+KzItDY5B374sGfbH+es+AksZ8IygyLh2GOJ7yTlArR+OUCt4BIGkcOSd++jzPrK fMYg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:feedback-id:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from; bh=X6hUp2qEs+HvR6xvwIITiURm0cMBniZlb9KZdXkJpQw=; fh=sXngqCw1oXONrSSImRxZmGyzcK67QhJYp1RgY40tBsg=; b=ukjp8a7mAjSVVy9w1TnLFlXWYB+uBmW+QENzb1Cb0lEPResQUGLJMJTDE+YbDLudYy zAl78rTuhIm7NwuPZNOTpdg8/M7onjktNZv54taoc//BTtKkiI1lvoCWpRS89DioY4dZ BrD+pnd7TXRxVyrBD9Kni6+GewZMlc2AhExjaPhB3o248/p7GNosJ/IaTQZYQxU/jXiM hkKJgx6JpYek0F6q4MT6M3cp81p4ZQnYUNDqL9eaw+8mrLMKQ3iZSZqfdISjG0m6ey+g h5pWFrZ77tAFvvNlZFk65kxWDieF0XydxzLbXJnKDW5/K9tmEKDmOP+Fg2pStYR0v/cq s6IA== ARC-Authentication-Results: i=1; mx.google.com; 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 y62-20020a638a41000000b00553ebb05d16si4519374pgd.12.2023.07.15.11.54.21; Sat, 15 Jul 2023 11:54:41 -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; 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 S230199AbjGOS2E (ORCPT + 99 others); Sat, 15 Jul 2023 14:28:04 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44054 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230297AbjGOS2A (ORCPT ); Sat, 15 Jul 2023 14:28:00 -0400 Received: from bg4.exmail.qq.com (bg4.exmail.qq.com [43.154.54.12]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EF80F1B6; Sat, 15 Jul 2023 11:27:58 -0700 (PDT) X-QQ-mid: bizesmtp73t1689445670tnf9mugr Received: from linux-lab-host.localdomain ( [119.123.131.162]) by bizesmtp.qq.com (ESMTP) with id ; Sun, 16 Jul 2023 02:27:49 +0800 (CST) X-QQ-SSF: 01200000002000D0W000B00A0000000 X-QQ-FEAT: tB2bQ4otxw0mXiN/0bzMGk5SK8lnpxJLlWDnpOCFWjqq9NHVt1hoTOYTRsVDa B7K7JtHYkKM/27cruda3LF6r/VgHxf/IyAlEZFBbHjbXkfnXDArngcd+7PbRcOMfb9aSsC4 FxzF4pgQ14uFgPs35gIJLL3KnnRiw0osyvKJ8QBlbsFAT1XGQ2qsIuQVEBAqyI6LuUJwBUc /xlEXTc6GK/Cg9uNDdiEqR+RIb5H/BLoId0iAnkzM2B/CFQok+4YDrX5mtBqEez9mvDQkiX CBEYYajq9/Lnp1/+1APvjMnZ3l6ue8s2C0bosl90yqddAv0eZ+cWWGYqJU7M6frSI7mtW92 fyMZb46mOVmFYVIPSg3/ohPg+a9nggYSmQh4hVGOgR4Q1B5CK/1te456RU45g== X-QQ-GoodBg: 0 X-BIZMAIL-ID: 370488260156682455 From: Zhangjin Wu To: w@1wt.eu Cc: arnd@arndb.de, falcon@tinylab.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, thomas@t-8ch.de Subject: [PATCH v4 10/18] tools/nolibc: x86_64: shrink _start with _start_c Date: Sun, 16 Jul 2023 02:27:49 +0800 Message-Id: <9f3ad3ebbad1b939825cbc6f0c87b4d327b70469.1689444638.git.falcon@tinylab.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:tinylab.org:qybglogicsvrgz:qybglogicsvrgz5a-1 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE 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: INBOX X-GMAIL-THRID: 1771513873004938351 X-GMAIL-MSGID: 1771513873004938351 move most of the _start operations to _start_c(), include the stackprotector initialization. Signed-off-by: Zhangjin Wu --- tools/include/nolibc/arch-x86_64.h | 29 ++++++----------------------- 1 file changed, 6 insertions(+), 23 deletions(-) diff --git a/tools/include/nolibc/arch-x86_64.h b/tools/include/nolibc/arch-x86_64.h index 6b494ca471ef..e5ccb926c903 100644 --- a/tools/include/nolibc/arch-x86_64.h +++ b/tools/include/nolibc/arch-x86_64.h @@ -8,6 +8,7 @@ #define _NOLIBC_ARCH_X86_64_H #include "compiler.h" +#include "crt.h" /* Syscalls for x86_64 : * - registers are 64-bit @@ -153,9 +154,6 @@ _ret; \ }) -char **environ __attribute__((weak)); -const unsigned long *_auxv __attribute__((weak)); - /* startup code */ /* * x86-64 System V ABI mandates: @@ -166,26 +164,11 @@ const unsigned long *_auxv __attribute__((weak)); void __attribute__((weak, noreturn, optimize("Os", "omit-frame-pointer"))) __no_stack_protector _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) */ - "mov %rdx, environ\n" /* save environ */ - "xor %ebp, %ebp\n" /* zero the stack frame */ - "mov %rdx, %rax\n" /* search for auxv (follows NULL after last env) */ - "0:\n" - "add $8, %rax\n" /* search for auxv using rax, it follows the */ - "cmp -8(%rax), %rbp\n" /* ... NULL after last env (rbp is zero here) */ - "jnz 0b\n" - "mov %rax, _auxv\n" /* save it into _auxv */ - "and $-16, %rsp\n" /* x86 ABI : esp must be 16-byte aligned before call */ - "call main\n" /* main() returns the status code, we'll exit with it. */ - "mov %eax, %edi\n" /* retrieve exit code (32 bit) */ - "mov $60, %eax\n" /* NR_exit == 60 */ - "syscall\n" /* really exit */ - "hlt\n" /* ensure it does not return */ + "xor %ebp, %ebp\n" /* zero the stack frame */ + "mov %rsp, %rdi\n" /* save stack pointer to %rdi, as arg1 of _start_c */ + "and $-16, %rsp\n" /* %rsp must be 16-byte aligned before call */ + "call _start_c\n" /* transfer to c runtime */ + "hlt\n" /* ensure it does not return */ ); __builtin_unreachable(); } From patchwork Sat Jul 15 18:28:55 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhangjin Wu X-Patchwork-Id: 120820 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp297333vqt; Sat, 15 Jul 2023 11:54:30 -0700 (PDT) X-Google-Smtp-Source: APBJJlFCPbiOx4/Gc26/ALmzMzc6sKoTPl5VXo8eRptnTQkVyS0Xs2wmLVqu+ap2G8hkYDeTqQ3g X-Received: by 2002:a17:90a:654b:b0:253:3eb5:3ade with SMTP id f11-20020a17090a654b00b002533eb53ademr7680745pjs.8.1689447270525; Sat, 15 Jul 2023 11:54:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689447270; cv=none; d=google.com; s=arc-20160816; b=q7K38RkMH77O36jcjgOFcr40w/c/PVlzJswLEQ5SxenRLU4fqDZ33JnhJD854uzunO UY6iN3tOg9919grpXM92MxD8EGu6PsfTWksiGmAlPcIqmr/SJjBgjQY4SnYs1YlPmF5t Lwm2M9yoZVbYLj0C2+OWygEqR7lrI2nrVhT/Jr8Gaoc8kOb4CiL5c6UnlwABWKl5iVKp rscK2v0Ffny8I5PMTPdwJW4gQjDVjMNUTYJKmVOWVPznir9wcSQ70UerwEB6EhlFIFlS 6+ZOS4Act1AJinQgcZ10M2wWp/M40LqUDK1CaTlC7o4rdREVwAVAUsp7AAxwhewqsjct 3FIA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:feedback-id:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from; bh=HrvHSzilPFEMTV/8qu7qA+fQQyHaPJBO2+WLd4sNvTQ=; fh=sXngqCw1oXONrSSImRxZmGyzcK67QhJYp1RgY40tBsg=; b=JnvPfkVZQBPDwWMgxzTRKAv4uKiajq1fk5mdisVHsNWzMqIVfkj+GmxLQzE+zBr6Ld gj+u2rXn7G6fH3TbcEq6Mf/EF9mx0ifb8cN6R1TuExRNsN3UOTVmaReKVjk06YIRZ2Fm b/VAKo5f28hvi4F0Z3zgJ1wZB3pbV7+fJQwT2ixlNDqnUmG+4mYHff3QlVIfi/JWECNg n4RAZGFdDIX6NmGXyAlfSIWR8BhsJgaitxLt9Ij+VeUs1DawlOrzjyuxewVhnrBWr+/T eSQkb71elyHPaWS4KMKr0fM110iXTk5s8atNIM6xN/CrbfRAurXoCjZ1Xxxr1IMF0Ol+ XkVQ== ARC-Authentication-Results: i=1; mx.google.com; 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 b4-20020a17090a6e0400b00265ca1c461asi3260006pjk.175.2023.07.15.11.54.09; Sat, 15 Jul 2023 11:54:30 -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; 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 S230207AbjGOS3I (ORCPT + 99 others); Sat, 15 Jul 2023 14:29:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44538 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229881AbjGOS3H (ORCPT ); Sat, 15 Jul 2023 14:29:07 -0400 Received: from bg4.exmail.qq.com (bg4.exmail.qq.com [43.155.65.254]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F1F641B6; Sat, 15 Jul 2023 11:29:05 -0700 (PDT) X-QQ-mid: bizesmtp86t1689445737tf40gpis Received: from linux-lab-host.localdomain ( [119.123.131.162]) by bizesmtp.qq.com (ESMTP) with id ; Sun, 16 Jul 2023 02:28:55 +0800 (CST) X-QQ-SSF: 01200000002000D0W000B00A0000000 X-QQ-FEAT: XBN7tc9DADIQjIsqRzL4vnYwH3N5Sgo1e7zNB/4n2AgqX677h/fDkeZyT9mYf p0IixsvqeeAt2UvN1ybU7s1krWgel5YrPsv0SO+G8CtUR+CxOxQBYSTlEokUqIe5X/4+rSf hIN7zBwwCEH+2PIPM0F7507O5d9Ii5cJNCuD9iFA0WdguPU42KgAe7lOawK0TSSQtRdk/E2 +6KU6MM+DvJ38yUlS33v31iJVG4KE4XkaewvjxfpT3uvN0XM586BYLh2aau7FRIToHhSJft 6Ru92wNpGVe5kMevRWzeslGC5QBOTxRgLZ7/uLtAcsYPIXQ2vrVpffuK70dw3wFIVnJvxj5 DXuSoh11+1feWBMIGr3kFanD01bvmqYSGOcrZGhL8gEMBIaK8NzPHKbigIOsw== X-QQ-GoodBg: 0 X-BIZMAIL-ID: 16748570457034606427 From: Zhangjin Wu To: w@1wt.eu Cc: arnd@arndb.de, falcon@tinylab.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, thomas@t-8ch.de Subject: [PATCH v4 11/18] tools/nolibc: mips: shrink _start with _start_c Date: Sun, 16 Jul 2023 02:28:55 +0800 Message-Id: <107f96c69d54a39e1a161aca25d36289e343c1a1.1689444638.git.falcon@tinylab.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:tinylab.org:qybglogicsvrgz:qybglogicsvrgz5a-1 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE 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: INBOX X-GMAIL-THRID: 1771513861007059497 X-GMAIL-MSGID: 1771513861007059497 move most of the _start operations to _start_c(), include the stackprotector initialization. Also clean up the instructions in delayed slots. Signed-off-by: Zhangjin Wu --- tools/include/nolibc/arch-mips.h | 46 ++++++-------------------------- 1 file changed, 8 insertions(+), 38 deletions(-) diff --git a/tools/include/nolibc/arch-mips.h b/tools/include/nolibc/arch-mips.h index 7242fc9de04f..4ab6fa54beee 100644 --- a/tools/include/nolibc/arch-mips.h +++ b/tools/include/nolibc/arch-mips.h @@ -8,6 +8,7 @@ #define _NOLIBC_ARCH_MIPS_H #include "compiler.h" +#include "crt.h" /* Syscalls for MIPS ABI O32 : * - WARNING! there's always a delayed slot! @@ -173,50 +174,19 @@ _arg4 ? -_num : _num; \ }) -char **environ __attribute__((weak)); -const unsigned long *_auxv __attribute__((weak)); - /* startup code, note that it's called __start on MIPS */ void __attribute__((weak, noreturn, optimize("Os", "omit-frame-pointer"))) __no_stack_protector __start(void) { __asm__ volatile ( - /*".set nomips16\n"*/ ".set push\n" - ".set noreorder\n" + ".set noreorder\n" ".option pic0\n" -#ifdef _NOLIBC_STACKPROTECTOR - "jal __stack_chk_init\n" /* initialize stack protector */ - "nop\n" /* delayed slot */ -#endif - /*".ent __start\n"*/ - /*"__start:\n"*/ - "lw $a0,($sp)\n" /* argc was in the stack */ - "addiu $a1, $sp, 4\n" /* argv = sp + 4 */ - "sll $a2, $a0, 2\n" /* a2 = argc * 4 */ - "add $a2, $a2, $a1\n" /* envp = argv + 4*argc ... */ - "addiu $a2, $a2, 4\n" /* ... + 4 */ - "lui $a3, %hi(environ)\n" /* load environ into a3 (hi) */ - "addiu $a3, %lo(environ)\n" /* load environ into a3 (lo) */ - "sw $a2,($a3)\n" /* store envp(a2) into environ */ - - "move $t0, $a2\n" /* iterate t0 over envp, look for NULL */ - "0:" /* do { */ - "lw $a3, ($t0)\n" /* a3=*(t0); */ - "bne $a3, $0, 0b\n" /* } while (a3); */ - "addiu $t0, $t0, 4\n" /* delayed slot: t0+=4; */ - "lui $a3, %hi(_auxv)\n" /* load _auxv into a3 (hi) */ - "addiu $a3, %lo(_auxv)\n" /* load _auxv into a3 (lo) */ - "sw $t0, ($a3)\n" /* store t0 into _auxv */ - - "li $t0, -8\n" - "and $sp, $sp, $t0\n" /* sp must be 8-byte aligned */ - "addiu $sp,$sp,-16\n" /* the callee expects to save a0..a3 there! */ - "jal main\n" /* main() returns the status code, we'll exit with it. */ - "nop\n" /* delayed slot */ - "move $a0, $v0\n" /* retrieve 32-bit exit code from v0 */ - "li $v0, 4001\n" /* NR_exit == 4001 */ - "syscall\n" - /*".end __start\n"*/ + "move $a0, $sp\n" /* save stack pointer to $a0, as arg1 of _start_c */ + "li $t0, -8\n" + "and $sp, $sp, $t0\n" /* $sp must be 8-byte aligned */ + "addiu $sp, $sp, -16\n" /* the callee expects to save a0..a3 there */ + "jal _start_c\n" /* transfer to c runtime */ + " nop\n" /* delayed slot */ ".set pop\n" ); __builtin_unreachable(); From patchwork Sat Jul 15 18:30:02 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhangjin Wu X-Patchwork-Id: 120821 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp297335vqt; Sat, 15 Jul 2023 11:54:30 -0700 (PDT) X-Google-Smtp-Source: APBJJlGiAu0J2c1DJcR6K2W3FQNUV6WxTBHRRzGZ1HQkMg++waQ0g29165++T9gUU2BWNGk84n1o X-Received: by 2002:a17:903:41c8:b0:1b9:f7f4:5687 with SMTP id u8-20020a17090341c800b001b9f7f45687mr8500580ple.24.1689447270524; Sat, 15 Jul 2023 11:54:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689447270; cv=none; d=google.com; s=arc-20160816; b=w8yzuSXNlLRh+tzav5W4aTuDs8rLfbaZu4pRminOkuTXmpvL4pj/lsEbJjxESlEGQ/ xuRiM2QAH+ekcKDNjdimCaG7vNIzE2ZyCKSdIumqdibtjWeJbNrO014HhSPeC+CHkr+H X3En1gmnyQxPbsUM1GP8NSBWXmfgmnR2jKoMClHYv9OUgLbMjqilrR03NSC3P73Q4fBU to5NVrGXWF6It2pKSauCKcS7uy55XSs7c3iZo9nl63ry7P1cuIWgYhFsHXQ3i1POQRIp kbrDxPGK42U2AjK1nnFbJDfleCq6g1Szepmn/dG/vmOXRy4GN/ZMr6I9VfZAgvn1zzxF CQyg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:feedback-id:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from; bh=umnCNWdxUArtgspFL5UTjtxIIejUUbj50mf3/GGk6kI=; fh=sXngqCw1oXONrSSImRxZmGyzcK67QhJYp1RgY40tBsg=; b=SDZp/HJBV10kx/Akj/g0FjP10asX3wLGioLn46yMG+gyG7jiiF1aMPrwXp61ZUBwuA oJuPd2i5DyD+2mqgR+E8aFU2FOkoSdDsfe2E17aghvUSmkQGojItWlEBOo6DgDfYnuAh TccLfk2knjlO9I0tOXGiGDX7LR3lf/GulC07Us7dykVyxPGm0IsJQgzXVjmv3hR5jEuQ qswET+wnZWZRHh3vtQhvRxaG3290W3ymo3+szR3qZWbecP3wQQMACb0qWZIf9QR2pvHL E7Qh3TEHy/vqvk8Ldy7J0LfhoHyEIWrkFtenPQSsfgNoomGgLrknNiuEttGrymHZpr1U z23A== ARC-Authentication-Results: i=1; mx.google.com; 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 u12-20020a17090341cc00b001b9ea5f0feesi9623226ple.453.2023.07.15.11.54.11; Sat, 15 Jul 2023 11:54:30 -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; 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 S230224AbjGOSaU (ORCPT + 99 others); Sat, 15 Jul 2023 14:30:20 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44956 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229554AbjGOSaS (ORCPT ); Sat, 15 Jul 2023 14:30:18 -0400 Received: from bg4.exmail.qq.com (bg4.exmail.qq.com [43.154.54.12]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D75AF1B6; Sat, 15 Jul 2023 11:30:16 -0700 (PDT) X-QQ-mid: bizesmtp71t1689445807thyjdi8x Received: from linux-lab-host.localdomain ( [119.123.131.162]) by bizesmtp.qq.com (ESMTP) with id ; Sun, 16 Jul 2023 02:30:06 +0800 (CST) X-QQ-SSF: 01200000002000D0W000B00A0000000 X-QQ-FEAT: jXjag1m6xl5hbKADKfFI+Ze4/oDA7vadapGQ3Gd5tlk2Y2xyyaOcC2vX9MLLt M98Kzt+1gJYyaUOttYeMP8Ad6NpIRQtXcjBjKB3MQAcQ57/F+NAybSMgyqWqToXw/tnspYB qybvZZzsObs5I5+wqER/YYTaJzKBF5xW8/5JV0u9ruaWmBO7JNuHlPFsWC0quHZ16c8lC0M 48z1psgOzMPo9JRG6wI55/Ph+1V/ykP3KCYZ5pEkv5QeotEVYwQwb8+pe8OJqv1j8xoBK/1 jb5UQn3XwRRuSZUJuxhDg7jp9W/f+tm+Kb7ulvFb8RyWtCTUJcVsN9NT3T/YV52lYJP7Y5v rMgld/CG1hlWnDbffCZRHpYC75QKHGXeCk8Jh6W/8cAlTizyWyZIc6M9SZyikp/FCXpoNFF X-QQ-GoodBg: 0 X-BIZMAIL-ID: 6242663990711852581 From: Zhangjin Wu To: w@1wt.eu Cc: arnd@arndb.de, falcon@tinylab.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, thomas@t-8ch.de Subject: [PATCH v4 12/18] tools/nolibc: loongarch: shrink _start with _start_c Date: Sun, 16 Jul 2023 02:30:02 +0800 Message-Id: <774441edc010cc55f11546635dc04fc5604dc29a.1689444638.git.falcon@tinylab.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:tinylab.org:qybglogicsvrgz:qybglogicsvrgz5a-1 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE 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: INBOX X-GMAIL-THRID: 1771513861532906600 X-GMAIL-MSGID: 1771513861532906600 move most of the _start operations to _start_c(), include the stackprotector initialization. Signed-off-by: Zhangjin Wu --- tools/include/nolibc/arch-loongarch.h | 44 +++------------------------ 1 file changed, 4 insertions(+), 40 deletions(-) diff --git a/tools/include/nolibc/arch-loongarch.h b/tools/include/nolibc/arch-loongarch.h index 590155a4e543..bf98f6220195 100644 --- a/tools/include/nolibc/arch-loongarch.h +++ b/tools/include/nolibc/arch-loongarch.h @@ -8,6 +8,7 @@ #define _NOLIBC_ARCH_LOONGARCH_H #include "compiler.h" +#include "crt.h" /* Syscalls for LoongArch : * - stack is 16-byte aligned @@ -143,26 +144,9 @@ _arg1; \ }) -char **environ __attribute__((weak)); -const unsigned long *_auxv __attribute__((weak)); - #if __loongarch_grlen == 32 -#define LONGLOG "2" -#define SZREG "4" -#define REG_L "ld.w" -#define LONG_S "st.w" -#define LONG_ADD "add.w" -#define LONG_ADDI "addi.w" -#define LONG_SLL "slli.w" #define LONG_BSTRINS "bstrins.w" #else /* __loongarch_grlen == 64 */ -#define LONGLOG "3" -#define SZREG "8" -#define REG_L "ld.d" -#define LONG_S "st.d" -#define LONG_ADD "add.d" -#define LONG_ADDI "addi.d" -#define LONG_SLL "slli.d" #define LONG_BSTRINS "bstrins.d" #endif @@ -170,29 +154,9 @@ const unsigned long *_auxv __attribute__((weak)); void __attribute__((weak, noreturn, optimize("Os", "omit-frame-pointer"))) __no_stack_protector _start(void) { __asm__ volatile ( -#ifdef _NOLIBC_STACKPROTECTOR - "bl __stack_chk_init\n" /* initialize stack protector */ -#endif - REG_L " $a0, $sp, 0\n" /* argc (a0) was in the stack */ - LONG_ADDI " $a1, $sp, "SZREG"\n" /* argv (a1) = sp + SZREG */ - LONG_SLL " $a2, $a0, "LONGLOG"\n" /* envp (a2) = SZREG*argc ... */ - LONG_ADDI " $a2, $a2, "SZREG"\n" /* + SZREG (skip null) */ - LONG_ADD " $a2, $a2, $a1\n" /* + argv */ - - "move $a3, $a2\n" /* iterate a3 over envp to find auxv (after NULL) */ - "0:\n" /* do { */ - REG_L " $a4, $a3, 0\n" /* a4 = *a3; */ - LONG_ADDI " $a3, $a3, "SZREG"\n" /* a3 += sizeof(void*); */ - "bne $a4, $zero, 0b\n" /* } while (a4); */ - "la.pcrel $a4, _auxv\n" /* a4 = &_auxv */ - LONG_S " $a3, $a4, 0\n" /* store a3 into _auxv */ - - "la.pcrel $a3, environ\n" /* a3 = &environ */ - LONG_S " $a2, $a3, 0\n" /* store envp(a2) into environ */ - LONG_BSTRINS " $sp, $zero, 3, 0\n" /* sp must be 16-byte aligned */ - "bl main\n" /* main() returns the status code, we'll exit with it. */ - "li.w $a7, 93\n" /* NR_exit == 93 */ - "syscall 0\n" + "move $a0, $sp\n" /* save stack pointer to $a0, as arg1 of _start_c */ + LONG_BSTRINS " $sp, $zero, 3, 0\n" /* $sp must be 16-byte aligned */ + "bl _start_c\n" /* transfer to c runtime */ ); __builtin_unreachable(); } From patchwork Sat Jul 15 18:31:12 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhangjin Wu X-Patchwork-Id: 120842 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp306913vqt; Sat, 15 Jul 2023 12:20:12 -0700 (PDT) X-Google-Smtp-Source: APBJJlHBMcGZAd5PEdtmJ3bPLF6Kh2xNYMj4fiJRxbLcYlF67ujdgZqSyd9sER8FGKZ8L1tuglS1 X-Received: by 2002:a17:90a:de12:b0:263:949:7ab9 with SMTP id m18-20020a17090ade1200b0026309497ab9mr4980127pjv.24.1689448812529; Sat, 15 Jul 2023 12:20:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689448812; cv=none; d=google.com; s=arc-20160816; b=mlVQfm8TC3U0c1PejyokV+I4KyW3oVXcDQsUkmIIgwFgPrhW1Mjf0uHOKpWb+tIGfk pPyPQvjemg6DXVNF4DxPzohNJF7zwF7cRop9v88mz4ilibBvEBRqV4Mya6ss97m0no/t K55JBwrylZ1qi8aVIswmN72TYvcAgQaEmZ49qcSWeEIK3CCvZYS54QTOjzjZ3BZbrm+W /mCzoYqpwdRZ2dOLLxHxmdULrEq4ikInlzsn7p0MKCIqllPgKhniCinaSJbETCh5SsMe 9JQkjj6gJaFxXuwZlL3POuB4mc6UAglSVmpJ5ZrsTDJ5+rZxMIXRb32CjGgh+iX4yzjh uZWw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:feedback-id:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from; bh=GmrY2q89khQvrRPyIpaKknvykeSJCxrdt9x2kPYVOzc=; fh=sXngqCw1oXONrSSImRxZmGyzcK67QhJYp1RgY40tBsg=; b=OBStWUcGLC1/0ub80f0l/WTNrumlaZEeL0eGMs02ueSxpDeke7G18xJ1Si/cJqcBmG yAt3zQdUiWEa0kggteDw5IXEyNTVelYoNigxU++SJC7xyBFB2kKmuSl3jMevbPhHZEJB VWh5hohOou7IiNHM9yHKtcQc8FWv5ECCcNcHqzti3xNXuZinhgzKYIu8NTA1P10B6FUF k1PCvkcyeovxNeylXB0ZwpgbxhAGVkfhXS7r9dl2CuZ25ZWkYdjC8ARiBj2OgAOMGGTL abpMd4KrzBCrReuVsNK6GQwBIOjDvrQapHp4920a4ggaqzH1pTt566056rMzx25a2uqT pHdg== ARC-Authentication-Results: i=1; mx.google.com; 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 ot4-20020a17090b3b4400b0026384c02c03si3446900pjb.140.2023.07.15.12.19.56; Sat, 15 Jul 2023 12:20: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; 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 S230240AbjGOSb0 (ORCPT + 99 others); Sat, 15 Jul 2023 14:31:26 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45402 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229554AbjGOSbZ (ORCPT ); Sat, 15 Jul 2023 14:31:25 -0400 Received: from bg4.exmail.qq.com (bg4.exmail.qq.com [43.154.54.12]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1A07D1B6; Sat, 15 Jul 2023 11:31:22 -0700 (PDT) X-QQ-mid: bizesmtp72t1689445874tvr47aga Received: from linux-lab-host.localdomain ( [119.123.131.162]) by bizesmtp.qq.com (ESMTP) with id ; Sun, 16 Jul 2023 02:31:13 +0800 (CST) X-QQ-SSF: 01200000002000D0W000B00A0000000 X-QQ-FEAT: D2GZf6M6C/iOJuK1ehyY8lqNdJkrB5J9lu3rL9aR9HRkOz88df4imZA2U7I6G 0Il34kU2d7bL4oRr/nER1ZJ3nEaIjN3KJI+uPw+tv2VfFzfVDMKLfPeqldu2cxVCJr0wLhR olsxbn4a4T8kp0BB60X35yXYfscStOLXqo2cnW78m6PspB3j7WtoJLnjkesU3CF6GJq+As6 HrC6f0jOTQOzAztT+gOZccyiLWEzFj1U79wR/a1SoyQ8BuWkvNFwWFDLSzt/k/oAgrE48kz Q4zgYWKpdatXgGzBM18bfQPETzgxh4gGwIGAu7PSI25ABvcBMj2aGtagBUmTem8MdSK4CTx btHlWP07Yv2ukJQpCIbg+yc7hN3cZnaCw6yCvXjFs6R4esUJIe1HExspSHEPQ== X-QQ-GoodBg: 0 X-BIZMAIL-ID: 4600884106439397780 From: Zhangjin Wu To: w@1wt.eu Cc: arnd@arndb.de, falcon@tinylab.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, thomas@t-8ch.de Subject: [PATCH v4 13/18] tools/nolibc: riscv: shrink _start with _start_c Date: Sun, 16 Jul 2023 02:31:12 +0800 Message-Id: X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:tinylab.org:qybglogicsvrgz:qybglogicsvrgz5a-1 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE 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: INBOX X-GMAIL-THRID: 1771515477882581775 X-GMAIL-MSGID: 1771515477882581775 move most of the _start operations to _start_c(), include the stackprotector initialization. Signed-off-by: Zhangjin Wu --- tools/include/nolibc/arch-riscv.h | 44 ++++--------------------------- 1 file changed, 5 insertions(+), 39 deletions(-) diff --git a/tools/include/nolibc/arch-riscv.h b/tools/include/nolibc/arch-riscv.h index d49f5ecbf815..950cc2283fd7 100644 --- a/tools/include/nolibc/arch-riscv.h +++ b/tools/include/nolibc/arch-riscv.h @@ -8,18 +8,7 @@ #define _NOLIBC_ARCH_RISCV_H #include "compiler.h" - -#if __riscv_xlen == 64 -#define PTRLOG "3" -#define SZREG "8" -#define REG_L "ld" -#define REG_S "sd" -#elif __riscv_xlen == 32 -#define PTRLOG "2" -#define SZREG "4" -#define REG_L "lw" -#define REG_S "sw" -#endif +#include "crt.h" /* Syscalls for RISCV : * - stack is 16-byte aligned @@ -153,40 +142,17 @@ _arg1; \ }) -char **environ __attribute__((weak)); -const unsigned long *_auxv __attribute__((weak)); - /* startup code */ void __attribute__((weak, noreturn, optimize("Os", "omit-frame-pointer"))) __no_stack_protector _start(void) { __asm__ volatile ( ".option push\n" ".option norelax\n" - "lla gp, __global_pointer$\n" + "lla gp, __global_pointer$\n" ".option pop\n" -#ifdef _NOLIBC_STACKPROTECTOR - "call __stack_chk_init\n" /* initialize stack protector */ -#endif - REG_L" a0, 0(sp)\n" /* argc (a0) was in the stack */ - "add a1, sp, "SZREG"\n" /* argv (a1) = sp */ - "slli a2, a0, "PTRLOG"\n" /* envp (a2) = SZREG*argc ... */ - "add a2, a2, "SZREG"\n" /* + SZREG (skip null) */ - "add a2,a2,a1\n" /* + argv */ - - "add a3, a2, zero\n" /* iterate a3 over envp to find auxv (after NULL) */ - "0:\n" /* do { */ - REG_L" a4, 0(a3)\n" /* a4 = *a3; */ - "add a3, a3, "SZREG"\n" /* a3 += sizeof(void*); */ - "bne a4, zero, 0b\n" /* } while (a4); */ - "lui a4, %hi(_auxv)\n" /* a4 = &_auxv (high bits) */ - REG_S" a3, %lo(_auxv)(a4)\n" /* store a3 into _auxv */ - - "lui a3, %hi(environ)\n" /* a3 = &environ (high bits) */ - REG_S" a2,%lo(environ)(a3)\n"/* store envp(a2) into environ */ - "andi sp,a1,-16\n" /* sp must be 16-byte aligned */ - "call main\n" /* main() returns the status code, we'll exit with it. */ - "li a7, 93\n" /* NR_exit == 93 */ - "ecall\n" + "mv a0, sp\n" /* save stack pointer to a0, as arg1 of _start_c */ + "andi sp, a0, -16\n" /* sp must be 16-byte aligned */ + "call _start_c\n" /* transfer to c runtime */ ); __builtin_unreachable(); } From patchwork Sat Jul 15 18:32:19 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhangjin Wu X-Patchwork-Id: 120828 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp297460vqt; Sat, 15 Jul 2023 11:54:54 -0700 (PDT) X-Google-Smtp-Source: APBJJlHy5b6UhlC/ldJ9KJt9P6o2JLLgXs+ZPzLTnVvK4PLziaxgujY0veFbKEzx45nrKLQiohXJ X-Received: by 2002:a05:6a21:6d9b:b0:134:4003:3ed2 with SMTP id wl27-20020a056a216d9b00b0013440033ed2mr2799786pzb.47.1689447293724; Sat, 15 Jul 2023 11:54:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689447293; cv=none; d=google.com; s=arc-20160816; b=uD3cJj2KvWP1u1jlt4egWeN25XrS9SNPta6cv79B27e121CbTP1kUiAVGNWIBPb0Ly mXrnZ+vIxmqMio6lZZSgCmmqVrBkphmo7D7a6ektAlrbbYimlRZH4cXHWHwJPqpqJztG wSFYap7MsizrJxbU7DGzBOeb0gEIkUYTWiEHNxHA7B96kkLArV+kDdEXTn3JtnaJsc4r YaCn9jEc9+BQ0szJv5haENn+CiwXDzzOWNCXiYR3WqBf73kI28x72fOsz6ljYf8MCmfU cHEadnwaW0cz5rlYebG8FaMeBX+HW04KLQCWabg5MoXju22HhXtsLU3Hwbk2zhS2GdZO +iYg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:feedback-id:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from; bh=p/0edMe811760LLInD2SnbYhnXgb9BDnYwYGoq8T7so=; fh=sXngqCw1oXONrSSImRxZmGyzcK67QhJYp1RgY40tBsg=; b=o5MU7wIkKByW3LmHTyisZUj8kAC8zFWJ0gx2hloLaYwaO7Uf+UwlnJYHSqkt75dH4o QyLaYnXfIr5Gxd3IAElWZzM/xBmyauAX6kqjTolUuQVI326O3jRC1ljrkB8H13HUGrdn 2l5/NwKvDSoQsn+scvAw1gU/iv2PC+MatS7LHoWSgPvag3f7QavkK8khXximQQCa16y1 M4O4j7UtrhZpkmn2Y333sOpbYU9ltBQpgXUwu66ndJmThnmTL28dGzxLwamPc2a2D0Wa E1NXUkrlZyj/k+n/B1XuOUaYEl+DKQjnT/dxSflvnRh9lwo5zFuIs0UbfqBbN8NCRtnX JF7w== ARC-Authentication-Results: i=1; mx.google.com; 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 s32-20020a632160000000b00557673fdd1asi8849070pgm.313.2023.07.15.11.54.39; Sat, 15 Jul 2023 11:54:53 -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; 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 S230251AbjGOScc (ORCPT + 99 others); Sat, 15 Jul 2023 14:32:32 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45856 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229500AbjGOScb (ORCPT ); Sat, 15 Jul 2023 14:32:31 -0400 Received: from bg4.exmail.qq.com (bg4.exmail.qq.com [43.155.65.254]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1F5C3128; Sat, 15 Jul 2023 11:32:29 -0700 (PDT) X-QQ-mid: bizesmtp81t1689445940t49g9iqv Received: from linux-lab-host.localdomain ( [119.123.131.162]) by bizesmtp.qq.com (ESMTP) with id ; Sun, 16 Jul 2023 02:32:19 +0800 (CST) X-QQ-SSF: 01200000002000D0W000B00A0000000 X-QQ-FEAT: cbck7jzG4wYaptTQhwzZFthYKAzk5jPcBUHuTClY8xYh5acSDs8WuXVfLRvL+ /avhl2UfJP/XzZsUK1omAOUr5CrMEao6kdRmxzPsY1s70sGqwxUZcPyk6zU9OKyczEwxiM6 g3I132Lkvu/9eVk/zoMaY4pUcjAxwHJLUnLC2oiD1q3XcsC1M5VOFsY6f2brfAfzBZtGgLB 1td7aXmrQvNBx9A+Ii+eRlhenUpi9SZPPaDjkc8DIdCReqVvFzbtqXYkDEtqK4e7fdACpzZ VwTUEB/fgbaj4B+bSPhYBnbIRIU3ll5m2A34dYZVWxw13GhL4rq2qqu7KgRkGXROuCwEYTU NVKbwR5vwz7MAdF1l+Yn8unvNpBFSBnQDgQoSSeUvK1F9wexsB8ikB0bQLoF/xDFTTuNZ3T X-QQ-GoodBg: 0 X-BIZMAIL-ID: 18280837454231615752 From: Zhangjin Wu To: w@1wt.eu Cc: arnd@arndb.de, falcon@tinylab.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, thomas@t-8ch.de Subject: [PATCH v4 14/18] tools/nolibc: s390: shrink _start with _start_c Date: Sun, 16 Jul 2023 02:32:19 +0800 Message-Id: <2d87c72b6957f678944b858f6f1fc703cf18d5fa.1689444638.git.falcon@tinylab.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:tinylab.org:qybglogicsvrgz:qybglogicsvrgz5a-1 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE 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: INBOX X-GMAIL-THRID: 1771513885341401802 X-GMAIL-MSGID: 1771513885341401802 move most of the _start operations to _start_c(), include the stackprotector initialization. Signed-off-by: Zhangjin Wu --- tools/include/nolibc/arch-s390.h | 36 +++++--------------------------- 1 file changed, 5 insertions(+), 31 deletions(-) diff --git a/tools/include/nolibc/arch-s390.h b/tools/include/nolibc/arch-s390.h index 3b94ae0cb1d1..5d60fd43f883 100644 --- a/tools/include/nolibc/arch-s390.h +++ b/tools/include/nolibc/arch-s390.h @@ -9,6 +9,7 @@ #include #include "compiler.h" +#include "crt.h" /* Syscalls for s390: * - registers are 64-bit @@ -137,41 +138,14 @@ _arg1; \ }) -char **environ __attribute__((weak)); -const unsigned long *_auxv __attribute__((weak)); - /* startup code */ void __attribute__((weak, noreturn, optimize("Os", "omit-frame-pointer"))) __no_stack_protector _start(void) { __asm__ volatile ( - "lg %r2,0(%r15)\n" /* argument count */ - "la %r3,8(%r15)\n" /* argument pointers */ - - "xgr %r0,%r0\n" /* r0 will be our NULL value */ - /* search for envp */ - "lgr %r4,%r3\n" /* start at argv */ - "0:\n" - "clg %r0,0(%r4)\n" /* entry zero? */ - "la %r4,8(%r4)\n" /* advance pointer */ - "jnz 0b\n" /* no -> test next pointer */ - /* yes -> r4 now contains start of envp */ - "larl %r1,environ\n" - "stg %r4,0(%r1)\n" - - /* search for auxv */ - "lgr %r5,%r4\n" /* start at envp */ - "1:\n" - "clg %r0,0(%r5)\n" /* entry zero? */ - "la %r5,8(%r5)\n" /* advance pointer */ - "jnz 1b\n" /* no -> test next pointer */ - "larl %r1,_auxv\n" /* yes -> store value in _auxv */ - "stg %r5,0(%r1)\n" - - "aghi %r15,-160\n" /* allocate new stackframe */ - "xc 0(8,%r15),0(%r15)\n" /* clear backchain */ - "brasl %r14,main\n" /* ret value of main is arg to exit */ - "lghi %r1,1\n" /* __NR_exit */ - "svc 0\n" + "lgr %r2, %r15\n" /* save stack pointer to %r2, as arg1 of _start_c */ + "aghi %r15, -160\n" /* allocate new stackframe */ + "xc 0(8,%r15), 0(%r15)\n" /* clear backchain */ + "brasl %r14, _start_c\n" /* transfer to c runtime */ ); __builtin_unreachable(); } From patchwork Sat Jul 15 18:33:26 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhangjin Wu X-Patchwork-Id: 120829 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp297471vqt; Sat, 15 Jul 2023 11:54:56 -0700 (PDT) X-Google-Smtp-Source: APBJJlFc6kCRaQvY21hanIps0nxuj+Uwn9z4yMVikQu2E91PZUO+8OxI2idkOhlPNdcmFQ4gOQo0 X-Received: by 2002:a05:6a00:2488:b0:673:5d1e:6657 with SMTP id c8-20020a056a00248800b006735d1e6657mr9040914pfv.7.1689447295663; Sat, 15 Jul 2023 11:54:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689447295; cv=none; d=google.com; s=arc-20160816; b=SSft8MdNi3X3xTa+wYzMniEabFSmF1D2IDhhUlZPUmrKPKOYVGvpTPzetyYW8mjqiR B2+NpavfTrErRmmsdAUfkV6ogyrI8tUiH9rsVYkotB4VBTJMItpNjQ//9oNhORCr3GD7 uuVrbMOXmeKxJdZhY4N3z5+mt2n47JSm81jP5egZPyIkveAzKW1c8brDF/zxEjM/qSkw 1l+BDnQvOpBo+zRkfLyw1TSqKDeg6kCOtBtTUn4wXY0SREtazp3jHEiEmtCaNvExdR3q lr4l4GYiSYsrNMa0LD1nBfab2+OoL4sX5CWzS+dIRmC09hlCbtenAFKAbC+3tiOWhIWq QoGw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:feedback-id:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from; bh=KROJRe3+XJtb1VMit7ekiZ92BlwcEiBn0atSmDACXFc=; fh=sXngqCw1oXONrSSImRxZmGyzcK67QhJYp1RgY40tBsg=; b=CJQDrfpymau4ujwb3HavPa/hApUTZiqLbNlAdwE71G7ZIXaIToujo0CyseHvlYl8jl S1R4kxFnT273Jn5HKN4cB04U6gGFk6A19D6V5vfZJwHnc3qNyRxlAhZ4PoeoscWX0pXQ fiZG/ZhwVVtXioC3WnkuWzaxq4eOTLgg6Knph+PC+T3rtcRxhV4vyiEQ16OY2TEVtaHz OlfdaFARmQExjKjD9UbLTkh2a6qfncvxUWl4i8g+8tN/p636uafjrRzBon9QZe6O5lgj hpC8pTVZsOgXCjOnIyupB5HmiFfTjx7nW1iZfJJ0UJREH1EcPVPtA6nnm/LXYwTWs1lG 0hKw== ARC-Authentication-Results: i=1; mx.google.com; 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-20020a63f745000000b0055b6a784893si8874687pgk.520.2023.07.15.11.54.41; Sat, 15 Jul 2023 11:54:55 -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; 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 S230280AbjGOSdj (ORCPT + 99 others); Sat, 15 Jul 2023 14:33:39 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46296 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229500AbjGOSdi (ORCPT ); Sat, 15 Jul 2023 14:33:38 -0400 Received: from bg4.exmail.qq.com (bg4.exmail.qq.com [43.155.65.254]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3F97F128; Sat, 15 Jul 2023 11:33:36 -0700 (PDT) X-QQ-mid: bizesmtp89t1689446007tccdiej5 Received: from linux-lab-host.localdomain ( [119.123.131.162]) by bizesmtp.qq.com (ESMTP) with id ; Sun, 16 Jul 2023 02:33:26 +0800 (CST) X-QQ-SSF: 01200000002000D0W000B00A0000000 X-QQ-FEAT: ILHsT53NKPio8QXj0SePF8Uv6ufub1HmV7VAtAE5IfpljIxcz2xHRSfOkvFRE 5ynY8onEmktjHch/b7w6INeCszX3aPulK5C4mOh+SXNOCRZm2VDiidEH38O5BpM9Ul1NMf6 ARoHScpuEtEDapuBc52c5iWL+AtOnU8ZUXCmTb2b8JLRKm7/qNHyazikg62xSHOdGxJUrjW LMjT8h89SzQxiO+JJHHH3NUXQInpRbZh4v0KeTbgFuPSj1m+5yOkJuHyClou5G4RM5KiyXo 8WbgPMHR81+3koV2C3KK8kPgBuXMtOX7syK20zYWrUAU6VbZKyj4qKcTxku13hB72JAmDUH u9+rqgqk2w5fuNV2+VZ2sQ7rFxMwhwEAMlnYEZqtfPPu63bDbJGo/nlyTEQzmLNXKqs9Hy4 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 3122993213598175928 From: Zhangjin Wu To: w@1wt.eu Cc: arnd@arndb.de, falcon@tinylab.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, thomas@t-8ch.de Subject: [PATCH v4 15/18] selftests/nolibc: add EXPECT_PTRGE, EXPECT_PTRGT, EXPECT_PTRLE, EXPECT_PTRLT Date: Sun, 16 Jul 2023 02:33:26 +0800 Message-Id: X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:tinylab.org:qybglogicsvrgz:qybglogicsvrgz5a-1 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE 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: INBOX X-GMAIL-THRID: 1771513887682833763 X-GMAIL-MSGID: 1771513887682833763 4 new pointer compare macros are added, they are similar to the integer compare macros. Signed-off-by: Zhangjin Wu --- tools/testing/selftests/nolibc/nolibc-test.c | 50 ++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/tools/testing/selftests/nolibc/nolibc-test.c b/tools/testing/selftests/nolibc/nolibc-test.c index dfadd07ee7d9..3ff706078fbd 100644 --- a/tools/testing/selftests/nolibc/nolibc-test.c +++ b/tools/testing/selftests/nolibc/nolibc-test.c @@ -410,6 +410,56 @@ static int expect_ptrne(const void *expr, int llen, const void *cmp) return ret; } +#define EXPECT_PTRGE(cond, expr, cmp) \ + do { if (!(cond)) result(llen, SKIPPED); else ret += expect_ptrge(expr, llen, cmp); } while (0) + +static int expect_ptrge(const void *expr, int llen, const void *cmp) +{ + int ret = !(expr >= cmp); + + llen += printf(" = <%p> ", expr); + result(llen, ret ? FAIL : OK); + return ret; +} + +#define EXPECT_PTRGT(cond, expr, cmp) \ + do { if (!(cond)) result(llen, SKIPPED); else ret += expect_ptrgt(expr, llen, cmp); } while (0) + +static int expect_ptrgt(const void *expr, int llen, const void *cmp) +{ + int ret = !(expr > cmp); + + llen += printf(" = <%p> ", expr); + result(llen, ret ? FAIL : OK); + return ret; +} + + +#define EXPECT_PTRLE(cond, expr, cmp) \ + do { if (!(cond)) result(llen, SKIPPED); else ret += expect_ptrle(expr, llen, cmp); } while (0) + +static int expect_ptrle(const void *expr, int llen, const void *cmp) +{ + int ret = !(expr <= cmp); + + llen += printf(" = <%p> ", expr); + result(llen, ret ? FAIL : OK); + return ret; +} + + +#define EXPECT_PTRLT(cond, expr, cmp) \ + do { if (!(cond)) result(llen, SKIPPED); else ret += expect_ptrlt(expr, llen, cmp); } while (0) + +static int expect_ptrlt(const void *expr, int llen, const void *cmp) +{ + int ret = !(expr < cmp); + + llen += printf(" = <%p> ", expr); + result(llen, ret ? FAIL : OK); + return ret; +} + #define EXPECT_PTRER2(cond, expr, expret, experr1, experr2) \ do { if (!(cond)) result(llen, SKIPPED); else ret += expect_ptrerr2(expr, expret, experr1, experr2, llen); } while (0) From patchwork Sat Jul 15 18:34:32 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhangjin Wu X-Patchwork-Id: 120824 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp297405vqt; Sat, 15 Jul 2023 11:54:42 -0700 (PDT) X-Google-Smtp-Source: APBJJlGX8z7YuAr+r2CFJtTipdBvROJVEMjK+HEoSkVnRvye3p6LGXexNOXA5gQyHbUFBo6Hn/Kv X-Received: by 2002:a05:6a20:7f90:b0:133:8229:196e with SMTP id d16-20020a056a207f9000b001338229196emr8706556pzj.35.1689447282541; Sat, 15 Jul 2023 11:54:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689447282; cv=none; d=google.com; s=arc-20160816; b=bkC6EQi4Wg6F9OSyq5oPszQplnCU4NbRpn23SXxxvtJEAbcJaC4OKVb/xlZT/MIMxw 06yc5D/+5vOMMyHvSo/4nqnq6aD1DxS+FtipPnUw/vLkc1UqX5IF7jT07IRB26C+DTpt aUAH2fmhueOInpAFjJkS7KOnFVLK+ojIQaJraG9+rgw2vroz3TvSEu4P+xH5cPETIdRq MViSaqS/jYDte6PtSbFDRAwVCI9Y2rftNih93LAt9uM4wfduEOAKN8o0HqeV9NrZFsmp 7rbVex6RpOctnBMMhlFMpI4TWLHYx3pSlqnDa49I6c2pQ9ninMEeymhF07Eo0QEB/1KZ sRPQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:feedback-id:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from; bh=xM2wp6uISDuurLs+zAuEAJX8yThVn8wLsBiWLDF3wo4=; fh=sXngqCw1oXONrSSImRxZmGyzcK67QhJYp1RgY40tBsg=; b=KdAZTsUo9VyFNUnBgjLCxN/tp/6pYi/47R/HMPUgz+2SWb5fMRT/U7RPIp2GYi57EB DT728uE7kH40IHawsCue3kIuK28WHSi5UChyvDKTXuiFwM7vecxcudHhR0z2Dpaw5KcN pwbnzYDTc+pzxto6/WEWH8hGPsw/wlhvyUJjKNjKifg63BzhDdPkdqRqG2GnK2RNtusZ KuhXaTXgT478Dh48I5S2gS8+8seCJK3C0P2MCJm6JRUhAxG1UbS7VCM0FUbXzHyQgW0E WFAbcRG4SWIjOgX+FsRTVgcODs9UDcl+0/cpzRFeDOOpIKjlc8Y8Kib9Ik2N20fvLb6J /7bg== ARC-Authentication-Results: i=1; mx.google.com; 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 y66-20020a626445000000b0067e34495f2dsi8871599pfb.143.2023.07.15.11.54.25; Sat, 15 Jul 2023 11:54:42 -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; 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 S230037AbjGOSeq (ORCPT + 99 others); Sat, 15 Jul 2023 14:34:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47136 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229500AbjGOSep (ORCPT ); Sat, 15 Jul 2023 14:34:45 -0400 Received: from bg4.exmail.qq.com (bg4.exmail.qq.com [43.155.65.254]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D0ACE271E; Sat, 15 Jul 2023 11:34:43 -0700 (PDT) X-QQ-mid: bizesmtp86t1689446074thn87dje Received: from linux-lab-host.localdomain ( [119.123.131.162]) by bizesmtp.qq.com (ESMTP) with id ; Sun, 16 Jul 2023 02:34:33 +0800 (CST) X-QQ-SSF: 01200000002000D0W000B00A0000000 X-QQ-FEAT: wPivafIDGPNnE4pgBteeGjfO4VitGccVNTEgGVrjyg0S3lkSPswFvUfEC3oYD lR/yUIvjnDtW9NVv0uFM2R+RdQk8VwJyFfBHaiQxbmxNK7GvzScYpqPtEbdH8hf8UaZ6ocU W9OIDjPXpG7lEOK8SZdxqOMXUWqRFMvzFxOtqBN1CcbXNmz1bj3D3b6vZ5/stbHDzDaynkm mb6T48L4NKMzGDgW3F46hFNKVVZQ2NGVpPn4kM7dWVJ38RkRIEOXwQJRAiEHS3xi8FNJeYl xZaLvacE8y2isu6V+Z7ViWKjJFmvUKQmedpKBzUtE89FJGx4mJn3Ssw1KhDN3XIFJoAs0vW jhrKySOJPajkDqNyEwWGXqPNd8pl0FJRIHjdZooVyEoUkvrDuX38US3435PeLzETAE2q1hT X-QQ-GoodBg: 0 X-BIZMAIL-ID: 1900254662054636365 From: Zhangjin Wu To: w@1wt.eu Cc: arnd@arndb.de, falcon@tinylab.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, thomas@t-8ch.de Subject: [PATCH v4 16/18] selftests/nolibc: add testcases for startup code Date: Sun, 16 Jul 2023 02:34:32 +0800 Message-Id: X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:tinylab.org:qybglogicsvrgz:qybglogicsvrgz5a-1 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE 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: INBOX X-GMAIL-THRID: 1771513873385569719 X-GMAIL-MSGID: 1771513873385569719 The startup code is critical to get the right argc, argv, envp/environ and _auxv, let's add a startup test group and the corresponding testcases. The "environ" test case is also moved from the stdlib test group to this new startup test group and it is renamed to "environ_envp". Since argv0 has been used by many other test cases, let's add testcases to gurantee it too. Signed-off-by: Zhangjin Wu --- tools/testing/selftests/nolibc/nolibc-test.c | 56 +++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/nolibc/nolibc-test.c b/tools/testing/selftests/nolibc/nolibc-test.c index 3ff706078fbd..03b1d30f5507 100644 --- a/tools/testing/selftests/nolibc/nolibc-test.c +++ b/tools/testing/selftests/nolibc/nolibc-test.c @@ -15,6 +15,7 @@ #include #ifndef _NOLIBC_STDIO_H /* standard libcs need more includes */ +#include #include #include #include @@ -47,6 +48,12 @@ /* will be used to test initialization of environ */ static char **test_envp; +/* will be used to test initialization of argv */ +static char **test_argv; + +/* will be used to test initialization of argc */ +static int test_argc; + /* will be used by some test cases as readable file, please don't write it */ static const char *argv0; @@ -561,6 +568,51 @@ static int expect_strne(const char *expr, int llen, const char *cmp) #define CASE_TEST(name) \ case __LINE__: llen += printf("%d %s", test, #name); +int run_startup(int min, int max) +{ + int test; + int ret = 0; + /* kernel at least passes HOME and TERM, shell passes more */ + int env_total = 2; + /* checking NULL for argv/argv0, environ and _auxv is not enough, let's compare with sbrk(0) or &end */ + extern char end; + char *brk = sbrk(0) != (void *)-1 ? sbrk(0) : &end; + /* differ from nolibc, both glibc and musl have no global _auxv */ + const unsigned long *test_auxv = (void *)-1; +#ifdef NOLIBC + test_auxv = _auxv; +#endif + + for (test = min; test >= 0 && test <= max; test++) { + int llen = 0; /* line length */ + + /* avoid leaving empty lines below, this will insert holes into + * test numbers. + */ + switch (test + __LINE__ + 1) { + CASE_TEST(argc); EXPECT_GE(1, test_argc, 1); break; + CASE_TEST(argv_addr); EXPECT_PTRGT(1, test_argv, brk); break; + CASE_TEST(argv_environ); EXPECT_PTRLT(1, test_argv, environ); break; + CASE_TEST(argv_total); EXPECT_EQ(1, environ - test_argv - 1, test_argc ?: 1); break; + CASE_TEST(argv0_addr); EXPECT_PTRGT(1, argv0, brk); break; + CASE_TEST(argv0_str); EXPECT_STRNZ(1, argv0 > brk ? argv0 : NULL); break; + CASE_TEST(argv0_len); EXPECT_GE(1, argv0 > brk ? strlen(argv0) : 0, 1); break; + CASE_TEST(environ_addr); EXPECT_PTRGT(1, environ, brk); break; + CASE_TEST(environ_envp); EXPECT_PTREQ(1, environ, test_envp); break; + CASE_TEST(environ_auxv); EXPECT_PTRLT(test_auxv != (void *)-1, environ, test_auxv); break; + CASE_TEST(environ_total); EXPECT_GE(test_auxv != (void *)-1, (void *)test_auxv - (void *)environ - 1, env_total); break; + CASE_TEST(environ_HOME); EXPECT_PTRNZ(1, getenv("HOME")); break; + CASE_TEST(auxv_addr); EXPECT_PTRGT(test_auxv != (void *)-1, test_auxv, brk); break; + CASE_TEST(auxv_AT_UID); EXPECT_EQ(1, getauxval(AT_UID), getuid()); break; + CASE_TEST(auxv_AT_PAGESZ); EXPECT_GE(1, getauxval(AT_PAGESZ), 4096); break; + case __LINE__: + return ret; /* must be last */ + /* note: do not set any defaults so as to permit holes above */ + } + } + return ret; +} + /* used by some syscall tests below */ int test_getdents64(const char *dir) @@ -844,7 +896,6 @@ int run_stdlib(int min, int max) * test numbers. */ switch (test + __LINE__ + 1) { - CASE_TEST(environ); EXPECT_PTREQ(1, environ, test_envp); break; CASE_TEST(getenv_TERM); EXPECT_STRNZ(1, getenv("TERM")); break; CASE_TEST(getenv_blah); EXPECT_STRZR(1, getenv("blah")); break; CASE_TEST(setcmp_blah_blah); EXPECT_EQ(1, strcmp("blah", "blah"), 0); break; @@ -1128,6 +1179,7 @@ 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 = "startup", .func = run_startup }, { .name = "syscall", .func = run_syscall }, { .name = "stdlib", .func = run_stdlib }, { .name = "vfprintf", .func = run_vfprintf }, @@ -1174,6 +1226,8 @@ int main(int argc, char **argv, char **envp) char *test; argv0 = argv[0]; + test_argc = argc; + test_argv = argv; test_envp = envp; /* when called as init, it's possible that no console was opened, for From patchwork Sat Jul 15 18:35:39 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhangjin Wu X-Patchwork-Id: 120845 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp308607vqt; Sat, 15 Jul 2023 12:25:36 -0700 (PDT) X-Google-Smtp-Source: APBJJlGmAbui74jhN8WM8Z5g70JEDCjuDx/g+h++D/0Rzo9zHSOZ4DeL3lIugiDHhe93VaxK/Np1 X-Received: by 2002:a05:6a20:7346:b0:134:198b:84e9 with SMTP id v6-20020a056a20734600b00134198b84e9mr3428831pzc.61.1689449136125; Sat, 15 Jul 2023 12:25:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689449136; cv=none; d=google.com; s=arc-20160816; b=foN8p68JhAo111uBVMapDMQ0UflOA22pcCHrVb9wBezVVR6yYzQgDYbdvlEWCLRRga vi2K3OyaV4+PfGj6EcciWuiS2p2LH2X0D9pywq+GpTuVvaItreCcVkzJ6CG/0iuE9wFJ hnjhLTpkUfFuV/mbVbWmU8H/6MYSFkwInaDLwzWqLvYJZ36tNsT1JmZnInQGCwkY256j G6BTgfMb+6TvTXXzzpmc6wImD7KwFDSaBvLwQ2gvU68yoZqh8/A3sIoa7lRSEXdMT3h4 iDU10mKesFgNmT8SjJlvNl9QNTMO+S1QZpkcJOpFgEk5xBxMQUZQc11wAWoMIb5Y4jBu +D9Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:feedback-id:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from; bh=KJhpZcNdPe10xJ5gop9qz4B8O7AZMb5tDI+BZ7GikYE=; fh=sXngqCw1oXONrSSImRxZmGyzcK67QhJYp1RgY40tBsg=; b=1DmM/3SdKzpK1JLILYFjsyukvzeWI5wmT/pR/+GV7uIhfRPKCi4VICfFMrG3qcC/bV P6KSI5IfckesZ+u0FTr5ZZQ2DmpvBEtHyScmC7KcHmbDcYj0ZgO7+UVsb5gbGXL/7TOS 1AT7cSOmgquFeMmib3OjFmoApIEnA1RTz7oRKbeVNHPlXgqxOXWKLekcPT2FsaSUyNtX fZUk+2eMavK5x6Ykm7hSH42V/3nZ1/LWqdyDO/TUyuxzTziLRcd9cwozTOdrRU6fxiKS dQlyYY45cGzonMOcqjRg0PtMJgVytG0qEVCtjx88wuaOvmZ3KGuj3V3Vq351bUrER+O7 nRhA== ARC-Authentication-Results: i=1; mx.google.com; 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 s186-20020a6377c3000000b0055c71125c22si6390162pgc.230.2023.07.15.12.25.23; Sat, 15 Jul 2023 12:25:36 -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; 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 S230348AbjGOSfy (ORCPT + 99 others); Sat, 15 Jul 2023 14:35:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47600 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229490AbjGOSfw (ORCPT ); Sat, 15 Jul 2023 14:35:52 -0400 Received: from bg4.exmail.qq.com (bg4.exmail.qq.com [43.154.54.12]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 643BD128; Sat, 15 Jul 2023 11:35:50 -0700 (PDT) X-QQ-mid: bizesmtp69t1689446141t0a64ark Received: from linux-lab-host.localdomain ( [119.123.131.162]) by bizesmtp.qq.com (ESMTP) with id ; Sun, 16 Jul 2023 02:35:40 +0800 (CST) X-QQ-SSF: 01200000002000D0W000B00A0000000 X-QQ-FEAT: hoArX50alxEP2Sb8uvEvfwqp0isWNa+zWwxc+jw4R+V+O93iv1AjpTAT4wLPu PukhzTWa5syj0mOwXIxwt0hxvE5xVzWIFKWesXrgJV0hpeKOypPkgDYnMS7Tt2sswDV9/iq kqHik0GlrccCDs2yLDgwMqnl4JgV7v/9IFfvXrnAjx6IwMQxHdl95E4qf6rgLheAkX/nQjJ QPFVtZc8LbWahGJwD4hnWHgPHEoTYdW64iNXQVS5wBazPhBlInFmUJnPhDdl71FqipoAXqb EvCRA6HfO625yW8Ci3t92M2P58BsQJcT14wuvIfsx8iHA04UnnglO9FrLGV394Uvghh4YNP cOJ/hBnYw/i4Nuiq5Q/RgH10ERc+f54VMnkJQpu6/iySfbER4Nl2tpVNVbUfBdRHA4q37VQ tgPSxoAPSLY= X-QQ-GoodBg: 0 X-BIZMAIL-ID: 13372605302875324200 From: Zhangjin Wu To: w@1wt.eu Cc: arnd@arndb.de, falcon@tinylab.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, thomas@t-8ch.de Subject: [PATCH v4 17/18] selftests/nolibc: allow run nolibc-test locally Date: Sun, 16 Jul 2023 02:35:39 +0800 Message-Id: <03aa4c73f88806a7c3a7648a24793246a6e70afa.1689444638.git.falcon@tinylab.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:tinylab.org:qybglogicsvrgz:qybglogicsvrgz5a-1 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE 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: INBOX X-GMAIL-THRID: 1771515817170870864 X-GMAIL-MSGID: 1771515817170870864 It is able to run nolibc-test directly without qemu-user when the target machine is the same as the host machine. Sometimes, the result running locally may help a lot when the qemu-user package is too old. When the target machine differs from the host machine, it is also able to run nolibc-test directly with qemu-user-static + binfmt_misc. Link: https://lore.kernel.org/lkml/ZKutZwIOfy5MqedG@1wt.eu/ Signed-off-by: Zhangjin Wu --- tools/testing/selftests/nolibc/Makefile | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tools/testing/selftests/nolibc/Makefile b/tools/testing/selftests/nolibc/Makefile index d31d6cea82e2..b42e67b1a7e2 100644 --- a/tools/testing/selftests/nolibc/Makefile +++ b/tools/testing/selftests/nolibc/Makefile @@ -133,10 +133,16 @@ nolibc-test: nolibc-test.c sysroot/$(ARCH)/include libc-test: nolibc-test.c $(QUIET_CC)$(CC) -o $@ $< +# local libc-test run-libc-test: libc-test $(Q)./libc-test > "$(CURDIR)/run.out" || : $(Q)$(REPORT) $(CURDIR)/run.out +# local nolibc-test +run-nolibc-test: nolibc-test + $(Q)./nolibc-test > "$(CURDIR)/run.out" || : + $(Q)$(REPORT) $(CURDIR)/run.out + # qemu user-land test run-user: nolibc-test $(Q)qemu-$(QEMU_ARCH) ./nolibc-test > "$(CURDIR)/run.out" || : From patchwork Sat Jul 15 18:36:46 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhangjin Wu X-Patchwork-Id: 120850 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp311083vqt; Sat, 15 Jul 2023 12:34:06 -0700 (PDT) X-Google-Smtp-Source: APBJJlHZdZy72+jTYZNnUqeOrusz0b0izeKG7A7NWN6R4YYt9iHEDyy89eq2GofDvZx65DEMnqgt X-Received: by 2002:a05:6a20:7f99:b0:133:ec83:598 with SMTP id d25-20020a056a207f9900b00133ec830598mr5241386pzj.28.1689449646419; Sat, 15 Jul 2023 12:34:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689449646; cv=none; d=google.com; s=arc-20160816; b=YJZqg4rzrodmXlu0BbJdaI7ikwkKyEhRKdQfzHJTTvaCgYQSoXkGRZeBdzJv9sldfa 0CGMVEbjUtle+4yLBxxJbxtVXq6XgzGzKEOwfSo7IAV+bOshhH0jm/efGvp8GFb+xoPJ pL7clwTZ3a/KPdfiJ4n2Q0AqyUmoJ9O9p930ZLJHegcFQuGbsxb45XAWoF5jwnXraBmQ X8McZgour4xEQKdp5VtObyG8TN0zsb+GJp1jBW/VXgVBf1+V/2xwQefiutAH4HHsQW9C t60PHnnZ5UilORg5V1W9RcBgn1MgFnKTiav0hljs6TfYoGXZecXs9CqlFg9Z1QXzCUui 0pJw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:feedback-id:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from; bh=J0WMRHBMUpKhxT0cpvvA63HhvkNXoWk4cHx3M4gXnFk=; fh=sXngqCw1oXONrSSImRxZmGyzcK67QhJYp1RgY40tBsg=; b=wKBD8wrBZO34fl+Vl6aao1GdPrIFZjkr58tucJN1Mh6rUOKkaAb3zf1KljB0H9b8JT HbdfG/zJi+mnZUM+JmGr5EoK7dJXU16C3KW59We8Ht1pe567ZWMc0CmrOhq2RSyw4lEt tGL1NPpdFZNRZ6udNasqd88ZcpVF/iPbHmECm7PLCRB+uhz2x6XFLTAOzDsXZBI60BUp PuNZTjUV9Ci1ClSyofNYvkJtObgsClr2qjHIyY6XFe3gZO9BDIZ+onJWRzWnmXzCKmS+ NbORgljHPUPWS+OFIoG1VtVrg8pLiSEqULx/IQrMhoI/s5FBL72jB+rSxMGPc3Vxq0md 2lUQ== ARC-Authentication-Results: i=1; mx.google.com; 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 q4-20020a056a00084400b006669351f328si9286510pfk.388.2023.07.15.12.33.53; Sat, 15 Jul 2023 12:34:06 -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; 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 S230256AbjGOShA (ORCPT + 99 others); Sat, 15 Jul 2023 14:37:00 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48144 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229490AbjGOSg7 (ORCPT ); Sat, 15 Jul 2023 14:36:59 -0400 Received: from bg4.exmail.qq.com (bg4.exmail.qq.com [43.154.54.12]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 88B23184; Sat, 15 Jul 2023 11:36:57 -0700 (PDT) X-QQ-mid: bizesmtp84t1689446208taw11kdj Received: from linux-lab-host.localdomain ( [119.123.131.162]) by bizesmtp.qq.com (ESMTP) with id ; Sun, 16 Jul 2023 02:36:46 +0800 (CST) X-QQ-SSF: 01200000002000D0W000B00A0000000 X-QQ-FEAT: TLc+rbMvNaHwLbZOoSPZzfCsEz7BedXTG9f14xmkWI71WWiDDdKXSMepZaaQn 5D1RaYvDBzJADNj6Fz5d2lKIAse9JlnNE+KDWke5CmfIrdGt4o4i4NfLGAioJ4zUvDm6l3D 5yT0cEQlGNCikJpJ+jraUNQ5tv1+UlNev2AWqXRs7wyCZLsW1xe2tHTE2yd8aDYXaV7n8qp YmBJuvRayO48oxK8pntFwce1eMNaLu+eLqSRlWrIXGN79Jx5w7TdV0JiMEU0obIXwBlsbOy RK1Zwv0r7GEtysMu4UD04l4+D4Oda5+z45i+dU09oEhmTSqLZ6w8SNPp2WOwp3BTJt5CDnt oEn3Oz3/PTw1ntQhql7mH8bmUJPSxFIE6byW8UumMtUXauuKo4Hvy2tS2aTaXzixF2T8mIp X-QQ-GoodBg: 0 X-BIZMAIL-ID: 10759426770899697064 From: Zhangjin Wu To: w@1wt.eu Cc: arnd@arndb.de, falcon@tinylab.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, thomas@t-8ch.de Subject: [PATCH v4 18/18] selftests/nolibc: allow test -include /path/to/nolibc.h Date: Sun, 16 Jul 2023 02:36:46 +0800 Message-Id: <9d362d475a39f4924f2b0adeb6ccdfa1f851edd4.1689444638.git.falcon@tinylab.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:tinylab.org:qybglogicsvrgz:qybglogicsvrgz5a-1 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE 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: INBOX X-GMAIL-THRID: 1771516352433450864 X-GMAIL-MSGID: 1771516352433450864 As the head comment of nolibc-test.c shows, it can be built in 3 ways: $(CC) -nostdlib -include /path/to/nolibc.h => NOLIBC already defined $(CC) -nostdlib -I/path/to/nolibc/sysroot => _NOLIBC_* guards are present $(CC) with default libc => NOLIBC* never defined Only last two of them are tested currently, let's allow test the first one too. This may help to find issues about using nolibc.h to build programs. it derives from this change: commit 3a8039e289a3 ("tools/nolibc: Fix build of stdio.h due to header ordering") Usage: // test with sysroot by default $ make run-user // test without sysroot, using nolibc.h directly $ make run-user NOLIBC_SYSROOT=0 Signed-off-by: Zhangjin Wu --- tools/testing/selftests/nolibc/Makefile | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tools/testing/selftests/nolibc/Makefile b/tools/testing/selftests/nolibc/Makefile index b42e67b1a7e2..f42adef87e12 100644 --- a/tools/testing/selftests/nolibc/Makefile +++ b/tools/testing/selftests/nolibc/Makefile @@ -126,9 +126,15 @@ sysroot/$(ARCH)/include: $(Q)$(MAKE) -C ../../../include/nolibc ARCH=$(ARCH) OUTPUT=$(CURDIR)/sysroot/ headers_standalone $(Q)mv sysroot/sysroot sysroot/$(ARCH) +ifneq ($(NOLIBC_SYSROOT),0) nolibc-test: nolibc-test.c sysroot/$(ARCH)/include $(QUIET_CC)$(CC) $(CFLAGS) $(LDFLAGS) -o $@ \ -nostdlib -static -Isysroot/$(ARCH)/include $< -lgcc +else +nolibc-test: nolibc-test.c + $(QUIET_CC)$(CC) $(CFLAGS) $(LDFLAGS) -o $@ \ + -nostdlib -static -include ../../../include/nolibc/nolibc.h $< -lgcc +endif libc-test: nolibc-test.c $(QUIET_CC)$(CC) -o $@ $<