From patchwork Thu Oct 12 19:32:15 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Paul E. McKenney" X-Patchwork-Id: 152132 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2908:b0:403:3b70:6f57 with SMTP id ib8csp1455896vqb; Thu, 12 Oct 2023 12:32:50 -0700 (PDT) X-Google-Smtp-Source: AGHT+IF6ZnC2NoPWff+Xpqcn98L59w8tfBU0CKOyZy1zkDttX2naszC1FnLORLOopObTkNohKYkY X-Received: by 2002:a05:6870:f599:b0:1d0:e372:6cf8 with SMTP id eh25-20020a056870f59900b001d0e3726cf8mr26373812oab.2.1697139170123; Thu, 12 Oct 2023 12:32:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697139170; cv=none; d=google.com; s=arc-20160816; b=npgTruEorNl51B3iwTWtTe8ROlpMNHebs3kIZn88yWMZ6If+jgZp9Za+laDnp7QHT6 EYBYYsCzdmJUkLRZvnp8SbRxIiFXQqhg+T09Z6qn7Dlb2ylnKKm4/Oe6LDX06n4PcvMl iR9VvZa0cOuD/dRmLrcSw34WUJUgbvuYgGlf21h0J+9sLANOfS0rlZAUnuS3QBifbczQ o0n8mHCOdRmm0KAK6mGi8gOyyV02bWZXIB3W8SgidPZ3lD9NVzlh0FEOBjQxCbZULVAU XHytBP90mySIwZjsuZ+fy4hnPOt6jlvpWQljh7fGxPs5YtTqGcQ10MTTFl7c8YoJobdK wAHA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=/dy7MRuQ4nZ6XvzCQf/QE00pJQ5sHlinCaHof97IeUc=; fh=pn+Rqew71LKPylIcCrzfhmFqbupdWkgDEvVr2JdqKAU=; b=jd/DnbvJrnRTXHXMTx9ijiW2BYJJEZihMI3D0hCbN5AytnhD69WeiEFm13SgjuItTU Wu833Mzg+ZSxakrFR3BqbJJDb42AyBC8X/ThCEEULMrlxNsXtu0LpgHnm0EvtGN5B1YT U7df3n0numu3ABHxVelLfOtqbNxgQ9sVhzc9hk+9x9CHRD6krHw89+HunMIh4H1HRgN3 mhvKFbrnf+4yw1mIwvlyuD87fW+RrLtl3XAOILftUATch1nDbkvojyqU0GumzezK6+bW ohjIkcsUqKkzzuL59E+lq0kU/aYc26eaQYPRKjdS9Kq3kKMBBrNp8eJ9GRPtp01UJ3uG HD+A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=u7EapoPG; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id x5-20020a654145000000b00578b93b1b26si2839007pgp.544.2023.10.12.12.32.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Oct 2023 12:32:50 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=u7EapoPG; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 7D6E08270050; Thu, 12 Oct 2023 12:32:49 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1442384AbjJLTcp (ORCPT + 19 others); Thu, 12 Oct 2023 15:32:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52620 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1442098AbjJLTci (ORCPT ); Thu, 12 Oct 2023 15:32:38 -0400 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EBB24E4 for ; Thu, 12 Oct 2023 12:32:35 -0700 (PDT) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8F03BC433C8; Thu, 12 Oct 2023 19:32:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1697139155; bh=d8ayu7kl8vqNo7NKawNbDKeJKZ0xNLEf2Mmx5D5tlHA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=u7EapoPG2ZvLutGfmEetupl7EiQpZfP69OEEGMailIC9EGAyMrT7kFssMCox0ZsS1 sJeYDQZGWF9GcId/l5GG7os0U6Z7ltz3h4Jum/C/frTSsxC+OQBIpxFALPrlMvWKeX EuYPNgezzcBYDKLgvBDC0UnUw5ixb2X0YST6d4ZpF5B/75zoDPFgI9YB/NCt1bBO5x cLsWPFgpqcaoNKbWp9kYHgWALyBIjb/8d5GkFV21/sJ4c8YkMETK9mEBY15XCkMNm8 75iJAv7iNSn95fAix87U9E1Uu2D17FpUlfdz86uC/o/pb4qHVQQBYIZw13ObqQvIap W7ZhD0X/ee/kA== Received: by paulmck-ThinkPad-P17-Gen-1.home (Postfix, from userid 1000) id 3D0E7CE096F; Thu, 12 Oct 2023 12:32:35 -0700 (PDT) From: "Paul E. McKenney" To: linux-kernel@vger.kernel.org Cc: gwml@vger.gnuweeb.org, kernel-team@meta.com, w@lwt.eu, Ammar Faizi , Zhangjin Wu , Nicholas Rosenberg , =?utf-8?q?Thomas_Wei=C3=9Fschuh?= , Alviro Iskandar Setiawan , Willy Tarreau Subject: [PATCH nolibc 01/19] tools/nolibc: i386: Fix a stack misalign bug on _start Date: Thu, 12 Oct 2023 12:32:15 -0700 Message-Id: <20231012193233.207857-1-paulmck@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: References: MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Thu, 12 Oct 2023 12:32:49 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1779579402380546541 X-GMAIL-MSGID: 1779579402380546541 From: Ammar Faizi The ABI mandates that the %esp register must be a multiple of 16 when executing a 'call' instruction. Commit 2ab446336b17 ("tools/nolibc: i386: shrink _start with _start_c") simplified the _start function, but it didn't take care of the %esp alignment, causing SIGSEGV on SSE and AVX programs that use aligned move instruction (e.g., movdqa, movaps, and vmovdqa). The 'and $-16, %esp' aligns the %esp at a multiple of 16. Then 'push %eax' will subtract the %esp by 4; thus, it breaks the 16-byte alignment. Make sure the %esp is correctly aligned after the push by subtracting 12 before the push. Extra: Add 'add $12, %esp' before the 'and $-16, %esp' to avoid over-estimating for particular cases as suggested by Willy. A test program to validate the %esp alignment on _start can be found at: https://lore.kernel.org/lkml/ZOoindMFj1UKqo+s@biznet-home.integral.gnuweeb.org Cc: Zhangjin Wu Fixes: 2ab446336b17aad362c6decee29b4efd83a01979 ("tools/nolibc: i386: shrink _start with _start_c") Reported-by: Nicholas Rosenberg Acked-by: Thomas Weißschuh Signed-off-by: Ammar Faizi Reviewed-by: Alviro Iskandar Setiawan Signed-off-by: Willy Tarreau Signed-off-by: Thomas Weißschuh --- tools/include/nolibc/arch-i386.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/include/nolibc/arch-i386.h b/tools/include/nolibc/arch-i386.h index 64415b9fac77..28c26a00a762 100644 --- a/tools/include/nolibc/arch-i386.h +++ b/tools/include/nolibc/arch-i386.h @@ -167,7 +167,9 @@ void __attribute__((weak, noreturn, optimize("Os", "omit-frame-pointer"))) __no_ __asm__ volatile ( "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 */ + "add $12, %esp\n" /* avoid over-estimating after the 'and' & 'sub' below */ + "and $-16, %esp\n" /* the %esp must be 16-byte aligned on 'call' */ + "sub $12, %esp\n" /* sub 12 to keep it aligned after the push %eax */ "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 */ From patchwork Thu Oct 12 19:32:16 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Paul E. McKenney" X-Patchwork-Id: 152140 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2908:b0:403:3b70:6f57 with SMTP id ib8csp1456277vqb; Thu, 12 Oct 2023 12:33:26 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGOYS4Q4mVLG8zoJ9z3vMsLTTr/bjtk1iPoIXAvGY2JpGWrJXzh53eAuPS12BZH9ehtcCzE X-Received: by 2002:a17:90a:2dc5:b0:27c:e2d5:abb6 with SMTP id q5-20020a17090a2dc500b0027ce2d5abb6mr8721137pjm.0.1697139206769; Thu, 12 Oct 2023 12:33:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697139206; cv=none; d=google.com; s=arc-20160816; b=Ef/wcuyOToaXk9DfMXBLf86IzlzIWuIbG+L4xmDkPYqi38wmCRLyQ4KxtR+Cm3rhYh b1STcFh8414kMe3AU717d6d7u0UXo5VRphPhBvrqfYUZ47BZ6+fhWDhMFkQYu+odmsPi EdSp6rQSv5HHe+S72e7O8x7iHMOJk8AgcTlph8xWJWnxGql3WgHBVQflk/aHed01hJb0 f8mY1qGwbwCWbOQ5qJcQ8A+kZuS8qTYidBpIiomzvS+XSGFQStJ7ebigTq6K31WPJgrU wvS+b6fNLXb7EfsECK9NxM+IE4qAruORmiVvDWCtLweo7jllkWrnFVCxvoveLCC/MGyL rfYw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=+GZV8LHGdruht6NwQ2quKkpvkwuM7nTA3cWmuO0jVo4=; fh=n5S/AR14tYMsjDdXEOPrR3UbxswSa5eTzDqlfcgbnjE=; b=ssiygDNYXDgfPRZrZvernh3dUgGtYTBsH31v6sO9yXb5U159SgX9TVmOlEC59YSn4p T7LcUKHeMympAJctsbv3ig5PLDAnYnR3xw+uWh3r0jButyfb2mBVFh9UYwgIquOtmiAX 1ugDCTcpbZSJHdvMUJjBdDxHRkfP1dfioiqd5sSS+ouxgeKgwKiWpfDUJ9WqU/n0EsLA mfL2HvXRLCPaw+mvz4RaNBLLd8GS0GTHsikixKDQmy1NN0Pq7qcvy82TmRIcgXknS5SG xqXUu+f/q1bMPWAvQnEY+cSaqTVrz3OgaAll+kXMO4CGerFYLsK9LjzY5WjnEZABqQVb YzGw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=UOVpNjxf; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from morse.vger.email (morse.vger.email. [2620:137:e000::3:1]) by mx.google.com with ESMTPS id mv8-20020a17090b198800b0026b698fdda6si2858151pjb.98.2023.10.12.12.33.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Oct 2023 12:33:26 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) client-ip=2620:137:e000::3:1; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=UOVpNjxf; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by morse.vger.email (Postfix) with ESMTP id BF0F283FC39A; Thu, 12 Oct 2023 12:33:20 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at morse.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1442258AbjJLTck (ORCPT + 19 others); Thu, 12 Oct 2023 15:32:40 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52636 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1442185AbjJLTci (ORCPT ); Thu, 12 Oct 2023 15:32:38 -0400 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 24CA4E5 for ; Thu, 12 Oct 2023 12:32:36 -0700 (PDT) Received: by smtp.kernel.org (Postfix) with ESMTPSA id A59FAC433C7; Thu, 12 Oct 2023 19:32:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1697139155; bh=pIVHG4vplV6etOcNL+CVUEJMJ5tK2surh60uQoBDLIg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=UOVpNjxf0fWIgX8uOW7iQgzAhsM6mlXHvcTWkqiivOgwxeHHYcCdmP3xUYp9/oJbD z2rdi4Lkbx5W/d082xZ3/FAgXfWXr9DNco1IHKvY6sRcE8uoYGFHb42TSm/+P/V/Yo gESVTCo3cJb+rOCB0vrHLLN/3zgTvTOvzRt/QTxXZxqhSwGAOMeTtwfchcfxyHtTHd wYnjRnjR9s5vHf/JZ3erYrwlTR+fBh3wSs6zL1qqwG1ml87XI7R8xI8l9+7nOynhlV Yk5cHpUPo6tcqlLaCpsfgy6erI0kiuVrk7/4WRE+kOdD9IrQPpGJ0N4ukQwX4IgOfu tKZmc3w10f1gw== Received: by paulmck-ThinkPad-P17-Gen-1.home (Postfix, from userid 1000) id 3FEA4CE09C2; Thu, 12 Oct 2023 12:32:35 -0700 (PDT) From: "Paul E. McKenney" To: linux-kernel@vger.kernel.org Cc: gwml@vger.gnuweeb.org, kernel-team@meta.com, w@lwt.eu, =?utf-8?q?Thomas_?= =?utf-8?q?Wei=C3=9Fschuh?= , Willy Tarreau Subject: [PATCH nolibc 02/19] MAINTAINERS: nolibc: update tree location Date: Thu, 12 Oct 2023 12:32:16 -0700 Message-Id: <20231012193233.207857-2-paulmck@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: References: MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on morse.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (morse.vger.email [0.0.0.0]); Thu, 12 Oct 2023 12:33:20 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1779579440792140625 X-GMAIL-MSGID: 1779579440792140625 From: Thomas Weißschuh The nolibc tree moved out of Willys user namespace into its own. Signed-off-by: Thomas Weißschuh Acked-by: Willy Tarreau Link: https://lore.kernel.org/r/20230916-nolibc-tree-v1-1-06c9b59a5035@weissschuh.net --- MAINTAINERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MAINTAINERS b/MAINTAINERS index 90f13281d297..6c83087ea396 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -15131,7 +15131,7 @@ NOLIBC HEADER FILE M: Willy Tarreau M: Thomas Weißschuh S: Maintained -T: git git://git.kernel.org/pub/scm/linux/kernel/git/wtarreau/nolibc.git +T: git git://git.kernel.org/pub/scm/linux/kernel/git/nolibc/linux-nolibc.git F: tools/include/nolibc/ F: tools/testing/selftests/nolibc/ From patchwork Thu Oct 12 19:32:17 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Paul E. McKenney" X-Patchwork-Id: 152134 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2908:b0:403:3b70:6f57 with SMTP id ib8csp1455991vqb; Thu, 12 Oct 2023 12:32:59 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFXrnDw/Jz4E+z+ORnJl/lMKNzbTBccjbWYUVj/p29ns0WQmc6no2JBkWTMAKxr2jZcZwmw X-Received: by 2002:a17:902:f686:b0:1c7:5581:f9c with SMTP id l6-20020a170902f68600b001c755810f9cmr27217035plg.0.1697139179724; Thu, 12 Oct 2023 12:32:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697139179; cv=none; d=google.com; s=arc-20160816; b=FgcoS9GLepEzzt4/cNOxj/i0o/q83NBm+4/Yys9f+B0s/6pfh6y0JcwvrrMUxi3oEf k8XKifeuDAvOcmc87tzn7LneJQDBCU3JMsYs2ANZubSbLZvuXHP95WyHYo1hKAiK2F2z 7q0+3X4CYYfM0itiKP1DoSd/fVlZCCAc9IdysL4rA1IpKvuA/jWKWbcrHRFLbf3irVmO b0idgPxHYUJLTKB/PmC4jl7F6JC1czO7+L9WGtp4cHv0KZq4K7m5IxnvT4tE8bAsdHCI g/+Q7zi9+RDWJMW5nhjilnqwvY2VYfCXcbJYTB/hF1AhvU2T2S0/HyJSSo5yLq+Kn0VA +eLg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=rsh6Ik3Fv4ulVlzdFckdmZ/OSPHiajaZeIhGEHLa6XY=; fh=n5S/AR14tYMsjDdXEOPrR3UbxswSa5eTzDqlfcgbnjE=; b=z4a5sdqTv5N+J0yhuzsbV9I5GIGf4gn7eg68OyH/nqIGNHzOB7rk4e8fWfOBWdrvYo 8/Dopw0Y+UEeua1/1vgk+sey4u7C936y0NMBa2OaopU+z8haPtOTKUMxtfuleXBcVOPp WA7KqtYb3C3Wm8DgsbTyCOgoaQPigq22NZRjERcs5TH3JMSFl6QV7ui60s3mYb8VzGCx XFQsxup0aRffppsW1rDPbZYxMiZlh5eak0cJUXO0LBdyKDOpnbMQgPASU659GAgCUHfE NpU9WPG2P8NoulGE9V33/7HYWq0QmTisoKZU4CgR8V9z/kt+sd+kO1A9hofo3LL30T79 I1lA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=NZm8UEOl; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:6 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from pete.vger.email (pete.vger.email. [2620:137:e000::3:6]) by mx.google.com with ESMTPS id f3-20020a170902ce8300b001c3a05b0b67si3068535plg.566.2023.10.12.12.32.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Oct 2023 12:32:59 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:6 as permitted sender) client-ip=2620:137:e000::3:6; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=NZm8UEOl; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:6 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by pete.vger.email (Postfix) with ESMTP id 3C60B81C98DD; Thu, 12 Oct 2023 12:32:55 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at pete.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1442185AbjJLTcm (ORCPT + 19 others); Thu, 12 Oct 2023 15:32:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52628 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1442158AbjJLTci (ORCPT ); Thu, 12 Oct 2023 15:32:38 -0400 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 24D2EE6 for ; Thu, 12 Oct 2023 12:32:36 -0700 (PDT) Received: by smtp.kernel.org (Postfix) with ESMTPSA id AF8CBC433CA; Thu, 12 Oct 2023 19:32:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1697139155; bh=pg4Aqoba2EU/o3cS7KiwqgLXSRgn8eg2p5Eiz67tpcs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=NZm8UEOl+44DEWZ0QLu7dr6fraJOnu4psSm2sgUqRVrF5C+k9wKoP4R6cCTPWnOev NJAgGMoxg4qD0CrBd1LRiNtUvJAHKdHJ44C93nz0Rz6/59N+U5D8YCbTqPfSAT8c5s g1sqZDPfrBTU1Cuos5QjUTJlrA+wy/wKjLacLafZ0NAkP9fi0SxO4Nk4XHacy8/xms 3SBYVUOT/7TqfgGOlTD1Fe/jHBeeYW53NHkJ7KrxWNxz8buzd5NwC5PS8WvcB/djhT Zm6oS/udqDCXjzsawYqKSOnaSYzZTEeuO2On49ROTEh3IoExqdfNZOX4aczNLC4yQl 80zh0AazHi4UQ== Received: by paulmck-ThinkPad-P17-Gen-1.home (Postfix, from userid 1000) id 42B17CE09E3; Thu, 12 Oct 2023 12:32:35 -0700 (PDT) From: "Paul E. McKenney" To: linux-kernel@vger.kernel.org Cc: gwml@vger.gnuweeb.org, kernel-team@meta.com, w@lwt.eu, =?utf-8?q?Thomas_?= =?utf-8?q?Wei=C3=9Fschuh?= , Willy Tarreau Subject: [PATCH nolibc 03/19] tools/nolibc: mark start_c as weak Date: Thu, 12 Oct 2023 12:32:17 -0700 Message-Id: <20231012193233.207857-3-paulmck@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: References: MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on pete.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (pete.vger.email [0.0.0.0]); Thu, 12 Oct 2023 12:32:55 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1779579412584190794 X-GMAIL-MSGID: 1779579412584190794 From: Thomas Weißschuh Otherwise the different instances of _start_c from each compilation unit will lead to linker errors: /usr/bin/ld: /tmp/ccSNvRqs.o: in function `_start_c': nolibc-test-foo.c:(.text.nolibc_memset+0x9): multiple definition of `_start_c'; /tmp/ccG25101.o:nolibc-test.c:(.text+0x1ea3): first defined here Fixes: 17336755150b ("tools/nolibc: add new crt.h with _start_c") Signed-off-by: Thomas Weißschuh Link: https://lore.kernel.org/lkml/20231012-nolibc-start_c-multiple-v1-1-fbfc73e0283f@weissschuh.net/ Link: https://lore.kernel.org/lkml/20231012-nolibc-linkage-test-v1-1-315e682768b4@weissschuh.net/ Acked-by: Willy Tarreau --- tools/include/nolibc/crt.h | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/include/nolibc/crt.h b/tools/include/nolibc/crt.h index a5f33fef1672..a05655b4ce1d 100644 --- a/tools/include/nolibc/crt.h +++ b/tools/include/nolibc/crt.h @@ -13,6 +13,7 @@ const unsigned long *_auxv __attribute__((weak)); static void __stack_chk_init(void); static void exit(int); +__attribute__((weak)) void _start_c(long *sp) { long argc; From patchwork Thu Oct 12 19:32:18 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Paul E. McKenney" X-Patchwork-Id: 152133 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2908:b0:403:3b70:6f57 with SMTP id ib8csp1455983vqb; Thu, 12 Oct 2023 12:32:59 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHoxiVZT7IRHEmdT2kMZEqUjhas+3/603wX/YjmCWaXBW+GfXqccXjdnUBo5HEUWhBAfz6N X-Received: by 2002:a05:6359:b9a:b0:147:eb87:3665 with SMTP id gf26-20020a0563590b9a00b00147eb873665mr20738939rwb.3.1697139178841; Thu, 12 Oct 2023 12:32:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697139178; cv=none; d=google.com; s=arc-20160816; b=cOiInqp+XPkbKmMFD8WEUsWqaFiTqW2Q1gIkyxYUa1jZ9j7RV+NMD9rPdx8bp7T1tp qc1eKLbdDcJ2XPedpq2PK2caZLEvk2EyKxc9WgY/vtOU5Tq0T6rYLpKEiNMRWSe7A+6h 0rV2VqHH3tApG+Um/34ugLNjJUjq1rbmgaA2s0qZ+WY+g8TNq3VUPc2dNEVgPPmAoUXW DiNYN1uZLk3QhaiYjv/agWOttd1a7RsZ4eXdPDxnkqLuMnrgJOIYOi7X7hoCtatzoJCS 9CZ3O0SDoAnshdThrkpPv43zRmPSBGMsLP+hih+PC+IgElZN+9azPjWyyhRfr8H0Mbfs cHDA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=uZs0Q721EWK3kBx9wz9uYMCagwNBjdveJczTsDcsF2k=; fh=n5S/AR14tYMsjDdXEOPrR3UbxswSa5eTzDqlfcgbnjE=; b=mGE8bUg+uA34C1b/WRzHkrAqV+AffEXT7Zz/pLCNU3v1eQldKPU9zwWc4oBjHJkUy/ AoFI8zQVn1wIS9TCf226nRterBuxKvNjCmPkKgo3SO+DIpmulgdtrTTzu+8M8CQtqFnx PxP2ORic0SaLaMY7+WdlcHKaeQ/AGgg8lgYQll7z56gL8u2i1uHqDfM0mf0QogYNO+b6 J8c7CRnE1yeSAxSYVw0N230518FnDUKRjhPKPeQS9tPmyRCC1ddX2381r+v/79s5QYyE hTGUk/gJOOfAD/0nXcIZrGEjLCjneVUgEbjGIJePy0WtNDCwycL6TTdtLcemQpphz2Eq 0eCw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=OTQLpg9z; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from groat.vger.email (groat.vger.email. [23.128.96.35]) by mx.google.com with ESMTPS id 140-20020a630292000000b005784ab1c4afsi2838114pgc.736.2023.10.12.12.32.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Oct 2023 12:32:58 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) client-ip=23.128.96.35; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=OTQLpg9z; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by groat.vger.email (Postfix) with ESMTP id D8756825F176; Thu, 12 Oct 2023 12:32:54 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at groat.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1442431AbjJLTcs (ORCPT + 19 others); Thu, 12 Oct 2023 15:32:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52640 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1442234AbjJLTci (ORCPT ); Thu, 12 Oct 2023 15:32:38 -0400 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2C881E7 for ; Thu, 12 Oct 2023 12:32:36 -0700 (PDT) Received: by smtp.kernel.org (Postfix) with ESMTPSA id C073CC433C9; Thu, 12 Oct 2023 19:32:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1697139155; bh=hZNkroqVhoawwPACvTUVa/MKwFIx2Jxc6e1KjEDkELY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=OTQLpg9zucvzO538bAz31SeEGzSdtCQ1Ks+j6SgMQNejW2n32Cltc9ExlJH8aHHSz bAola8e+q4QN4S7IghJe7TZ3+4ZJ/l/XCgFjuP95K89Scshhsx9yxFMoN9EEnGSkZw yIA2WESVtGWx3yitrXO158HknH9krt5rq4G15d385OOZ9AKLeV9aVWiqd5j7krG6F+ STl8BI/dHUM0+x3gbYUgoK+Xsot7EQ8MT0hZmb+zlcUnvy575OwrcCwgka+As1A5dF 2NVl89fmH+S5cY36dWkkdTKS9bx+FOuZyq0CsL6wtg7tSLGJYsyFZ4TbFQcLDsl/MY yZTc2CrDOZl2Q== Received: by paulmck-ThinkPad-P17-Gen-1.home (Postfix, from userid 1000) id 45500CE0AD2; Thu, 12 Oct 2023 12:32:35 -0700 (PDT) From: "Paul E. McKenney" To: linux-kernel@vger.kernel.org Cc: gwml@vger.gnuweeb.org, kernel-team@meta.com, w@lwt.eu, =?utf-8?q?Thomas_?= =?utf-8?q?Wei=C3=9Fschuh?= , Willy Tarreau Subject: [PATCH nolibc 04/19] tools/nolibc: add stdarg.h header Date: Thu, 12 Oct 2023 12:32:18 -0700 Message-Id: <20231012193233.207857-4-paulmck@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: References: MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on groat.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (groat.vger.email [0.0.0.0]); Thu, 12 Oct 2023 12:32:54 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1779579411757467840 X-GMAIL-MSGID: 1779579411757467840 From: Thomas Weißschuh This allows nolic to work with `-nostdinc` avoiding any reliance on system headers. The implementation has been lifted from musl libc 1.2.4. There is already an implementation of stdarg.h in include/linux/stdarg.h but that is GPL licensed and therefore not suitable for nolibc. The used compiler builtins have been validated to be at least available since GCC 4.1.2 and clang 3.0.0. Signed-off-by: Thomas Weißschuh Signed-off-by: Willy Tarreau --- tools/include/nolibc/Makefile | 1 + tools/include/nolibc/nolibc.h | 4 ++-- tools/include/nolibc/stdarg.h | 16 ++++++++++++++++ tools/include/nolibc/stdio.h | 3 +-- tools/include/nolibc/sys.h | 2 +- 5 files changed, 21 insertions(+), 5 deletions(-) create mode 100644 tools/include/nolibc/stdarg.h diff --git a/tools/include/nolibc/Makefile b/tools/include/nolibc/Makefile index 909b6eb500fe..e69c26abe1ea 100644 --- a/tools/include/nolibc/Makefile +++ b/tools/include/nolibc/Makefile @@ -34,6 +34,7 @@ all_files := \ signal.h \ stackprotector.h \ std.h \ + stdarg.h \ stdint.h \ stdlib.h \ string.h \ diff --git a/tools/include/nolibc/nolibc.h b/tools/include/nolibc/nolibc.h index 1f8d821000ac..989e707263a4 100644 --- a/tools/include/nolibc/nolibc.h +++ b/tools/include/nolibc/nolibc.h @@ -74,10 +74,10 @@ * -I../nolibc -o hello hello.c -lgcc * * The available standard (but limited) include files are: - * ctype.h, errno.h, signal.h, stdio.h, stdlib.h, string.h, time.h + * ctype.h, errno.h, signal.h, stdarg.h, stdio.h, stdlib.h, string.h, time.h * * In addition, the following ones are expected to be provided by the compiler: - * float.h, stdarg.h, stddef.h + * float.h, stddef.h * * The following ones which are part to the C standard are not provided: * assert.h, locale.h, math.h, setjmp.h, limits.h diff --git a/tools/include/nolibc/stdarg.h b/tools/include/nolibc/stdarg.h new file mode 100644 index 000000000000..c628b5783da6 --- /dev/null +++ b/tools/include/nolibc/stdarg.h @@ -0,0 +1,16 @@ +/* SPDX-License-Identifier: LGPL-2.1 OR MIT */ +/* + * Variadic argument support for NOLIBC + * Copyright (C) 2005-2020 Rich Felker, et al. + */ + +#ifndef _NOLIBC_STDARG_H +#define _NOLIBC_STDARG_H + +typedef __builtin_va_list va_list; +#define va_start(v, l) __builtin_va_start(v, l) +#define va_end(v) __builtin_va_end(v) +#define va_arg(v, l) __builtin_va_arg(v, l) +#define va_copy(d, s) __builtin_va_copy(d, s) + +#endif /* _NOLIBC_STDARG_H */ diff --git a/tools/include/nolibc/stdio.h b/tools/include/nolibc/stdio.h index cae402c11e57..d7ef43973916 100644 --- a/tools/include/nolibc/stdio.h +++ b/tools/include/nolibc/stdio.h @@ -7,13 +7,12 @@ #ifndef _NOLIBC_STDIO_H #define _NOLIBC_STDIO_H -#include - #include "std.h" #include "arch.h" #include "errno.h" #include "types.h" #include "sys.h" +#include "stdarg.h" #include "stdlib.h" #include "string.h" diff --git a/tools/include/nolibc/sys.h b/tools/include/nolibc/sys.h index fdb6bd6c0e2f..b478750c9004 100644 --- a/tools/include/nolibc/sys.h +++ b/tools/include/nolibc/sys.h @@ -7,7 +7,6 @@ #ifndef _NOLIBC_SYS_H #define _NOLIBC_SYS_H -#include #include "std.h" /* system includes */ @@ -25,6 +24,7 @@ #include "arch.h" #include "errno.h" +#include "stdarg.h" #include "types.h" From patchwork Thu Oct 12 19:32:19 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Paul E. McKenney" X-Patchwork-Id: 152138 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2908:b0:403:3b70:6f57 with SMTP id ib8csp1456147vqb; Thu, 12 Oct 2023 12:33:15 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHX/MyNddCG1GSnx8O/Ovq+PA9KjE3oeOs5APk+cEcCYnc4h7WC1cCYvJvpLMYtGmynjyGT X-Received: by 2002:a05:6870:b4a5:b0:1a7:f79c:2fbc with SMTP id y37-20020a056870b4a500b001a7f79c2fbcmr29674943oap.0.1697139194830; Thu, 12 Oct 2023 12:33:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697139194; cv=none; d=google.com; s=arc-20160816; b=tZ0N2X7q/q6+MCFOXaRyHtqFVEIaFW0jQeWMMR7MdlUAciyrMLE6EIJNuwcl2rD7xk neUH5mLWlTAUpHSzlvyj40rjV8lIrXD46nokwGvxv+oyN9gmZ5SERCeBPv9Ch+SxDBbP Tl4LJRyq9OFHj0+4JztYY/6ccBv1myN2Xc1UVzYqzfaV0RSO6811FzGNonFRhDtvcSO8 ow2fX2gxcWZdv3AXNUhO+lLyup2v4b6L97FCxUz6CMhoxdK3690Dd9RKC7LOemA5Unmx kX4xZ9gCEwkjc+BE2yn03KkI1+4N0N6wHCL+9pXjipw3UR3YPsgBHDxnLRSfiFFTXSGx iDBA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=Bo2AMrBH5ITsje1B02pDg6vcJOjmeGe1/CnhAzUiVrw=; fh=n5S/AR14tYMsjDdXEOPrR3UbxswSa5eTzDqlfcgbnjE=; b=PjYbcLy4GEwNnmZyzwIW3Uqi6183wCywJS3SrmsmU3wvGPq+aiqCZ+bvfHvxlNsV+W kD1EG0YYUIiZj/QURffnB6E4vXitJ+bGElX0OmRb3oIq16F7NN1UffFLlVFIXMPRIPdv Um2bYe4bBcxAeCXny7iV0op/UUp7tqPI4ZHijMVcSlk9jsFaoL6sLQvd6vA3iMWBrvf5 io/rQoITXYRneulo3bhuQ8OodzRoE1QlhkHwBCPPuPpc+1Os+/Y0rrx2WotMe3NogEMj ICUJYID3nQScfxGO7MdyAUryOufamXGpP9Sxd4dlo6iSzZxkjFpBxnwIDpY9dhkqrJYg uYkA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=Rt7pJs58; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from pete.vger.email (pete.vger.email. [23.128.96.36]) by mx.google.com with ESMTPS id f10-20020a63dc4a000000b0057458518e20si600209pgj.164.2023.10.12.12.33.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Oct 2023 12:33:14 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 as permitted sender) client-ip=23.128.96.36; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=Rt7pJs58; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by pete.vger.email (Postfix) with ESMTP id 92CFE81CCD80; Thu, 12 Oct 2023 12:33:09 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at pete.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1442320AbjJLTcv (ORCPT + 19 others); Thu, 12 Oct 2023 15:32:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52646 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1442237AbjJLTci (ORCPT ); Thu, 12 Oct 2023 15:32:38 -0400 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4A5C6BB for ; Thu, 12 Oct 2023 12:32:36 -0700 (PDT) Received: by smtp.kernel.org (Postfix) with ESMTPSA id CABD4C433CC; Thu, 12 Oct 2023 19:32:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1697139155; bh=5aGC/G+byzObqQL21CGtQDnMviiKaiIj+LBFIFBDttY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Rt7pJs58qHDgY5FTWFs06oE+wyY0Hg643hOyyG5nRforSbEBl4pB0WoXkyyszzKBg eA73LVfQeXm3Q7SRaISGk4nfK3riJOzMolz/+l086d1lueHNrN8VNYFcbdftOzDHYC GBvwZ/Y/TxUN7s4GKfIJqB8CPZpJCVBirdgc4wTQLAYMKC4MJ086cfNgYebKA8rPKn rxap7r371Nyfh7o2JSNBGI6jGChppjXkToRpIqzcYQZXx4CJW5TIbbY03m8NrCTAVl QDDvCGXdGwH/IT27PyvB2duvmtg8xPVkdKxVsNK0pNZqYFWiknxU88bqPyLHNsMnjc 1+Qrdq/jbZOqA== Received: by paulmck-ThinkPad-P17-Gen-1.home (Postfix, from userid 1000) id 47E41CE0AD4; Thu, 12 Oct 2023 12:32:35 -0700 (PDT) From: "Paul E. McKenney" To: linux-kernel@vger.kernel.org Cc: gwml@vger.gnuweeb.org, kernel-team@meta.com, w@lwt.eu, =?utf-8?q?Thomas_?= =?utf-8?q?Wei=C3=9Fschuh?= , Willy Tarreau Subject: [PATCH nolibc 05/19] selftests/nolibc: use -nostdinc for nolibc-test Date: Thu, 12 Oct 2023 12:32:19 -0700 Message-Id: <20231012193233.207857-5-paulmck@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: References: MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on pete.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (pete.vger.email [0.0.0.0]); Thu, 12 Oct 2023 12:33:09 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1779579427939494769 X-GMAIL-MSGID: 1779579427939494769 From: Thomas Weißschuh Avoid any accidental reliance on system includes. Signed-off-by: Thomas Weißschuh Signed-off-by: Willy Tarreau --- tools/testing/selftests/nolibc/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/testing/selftests/nolibc/Makefile b/tools/testing/selftests/nolibc/Makefile index dfe66776a331..689658f81a19 100644 --- a/tools/testing/selftests/nolibc/Makefile +++ b/tools/testing/selftests/nolibc/Makefile @@ -170,7 +170,7 @@ sysroot/$(ARCH)/include: ifneq ($(NOLIBC_SYSROOT),0) nolibc-test: nolibc-test.c sysroot/$(ARCH)/include $(QUIET_CC)$(CC) $(CFLAGS) $(LDFLAGS) -o $@ \ - -nostdlib -static -Isysroot/$(ARCH)/include $< -lgcc + -nostdlib -nostdinc -static -Isysroot/$(ARCH)/include $< -lgcc else nolibc-test: nolibc-test.c $(QUIET_CC)$(CC) $(CFLAGS) $(LDFLAGS) -o $@ \ From patchwork Thu Oct 12 19:32:20 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Paul E. McKenney" X-Patchwork-Id: 152136 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2908:b0:403:3b70:6f57 with SMTP id ib8csp1456060vqb; Thu, 12 Oct 2023 12:33:05 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHOhoQdEF9Cj7FLp8jOlyz3kAlEWR9LiCtiGQsq4AXoTgFwlv/r7p4fnm/LrqV7I2ETr6nM X-Received: by 2002:a05:6870:e24f:b0:1dc:6f5b:c0a0 with SMTP id d15-20020a056870e24f00b001dc6f5bc0a0mr26723440oac.4.1697139185211; Thu, 12 Oct 2023 12:33:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697139185; cv=none; d=google.com; s=arc-20160816; b=IKLaCWDRIAk/EqRzGly6DSuDDBNEXYyHs/rOAOgXnUxtQNqoxFWdRYFXUrJsM4srQz yHZA8rAlnql4+/WSdjIFB+0syfFKEK7NR6Q7eRuTM+RCDUef4GEdHBBtRw5AD0vLcICU 12C/PMGDNkr4Koy4G+or2lJWjQhg4aQYEZQtRGqAxMQpBSXIev70lS442DZGnja74vm5 o5qUOTx6bG5pZUhrkyoAmAOI/GlEBPPwR8fCrKnrRdTGHozV2rdyV2GdSRuBrlNDSLGb MFR7+sugCGh7T2yClRPiDXvJlVP1DUEM0uXGtRIxIprWadLWMEuQGq9MEN/AWULT4Yei N+Ig== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=M3qdFXIrO9/ZHXyX8yfsKuXFATveK0vmatIXfZzuZ7Q=; fh=smCPZxfOE/zxKcNg70IEffI+DQYOWIODjau8xxO0P4M=; b=Kv4/M+egWCO+g8dXOnbhkSefTUiX3o1+VUrbwKA2k9lLlrUM8WEPiFXcDbHFeQsT2Z ztjzhmIZoWalyONTJxu+/0JyANT8CmaenUpCUMSVZot/P5oaor3IT918SSf6WtQH0p2U XOuFJ7uqadLNbGNXaKq9JpwYqI8c+85mUZjho2Uv5CNiDv5xJwS03lEXdt7nEqftzMjE Aew3F+0JLNGFxMRN4m4X2Y7a16vEDNh/xeUKic3gVXgUs33XDi1iUOKb6EgLkyUS2Edj mccp54/giPb5FRbdT90StZJvtzMZkcNHlD2IAI66LwtROzd/ZGlSoilSOO9sjmB8PH45 djHg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=MUegLFL+; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from snail.vger.email (snail.vger.email. [2620:137:e000::3:7]) by mx.google.com with ESMTPS id h11-20020a65480b000000b0055c77028579si2722637pgs.747.2023.10.12.12.33.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Oct 2023 12:33:05 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) client-ip=2620:137:e000::3:7; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=MUegLFL+; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 082118271748; Thu, 12 Oct 2023 12:33:04 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1442408AbjJLTcz (ORCPT + 19 others); Thu, 12 Oct 2023 15:32:55 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52652 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1442246AbjJLTck (ORCPT ); Thu, 12 Oct 2023 15:32:40 -0400 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4E13EDE for ; Thu, 12 Oct 2023 12:32:38 -0700 (PDT) Received: by smtp.kernel.org (Postfix) with ESMTPSA id EBA62C433CD; Thu, 12 Oct 2023 19:32:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1697139156; bh=XB7RYLaBpu7Y7ZioQNmQqVILHiWPINtCSN62QDYiSbY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=MUegLFL+jnX29TDb2lgec+1a+0Hmh5JG0l4+dtP+baZNNRmQ1ZvqHOnkymXiIq38S do+ujhDW9WZnXlVOpLuY8JNCEmBMwhow7dhxd5goX1dMdml+KXIGDniJlrkJ2x6KiT YwKN1HCGEpKIEfp3sJEhZ+eEIxPjS4liecY5lDtCLVMGfplLiB0xc/8I2CzIDkPOys ZvynvtgiFbqn3wOF+HDfu6BDonckqvmOTAaBdM93ahFJVVxbG6k6J0QjWUvNe4mWTj T3hOKKiF5I7EHbVFGzw3S3PTUfScPVSB6PKE9RPhO64x3n2uFAhcl9mFs4MRWOUkyM wK6R7PQM0DHFA== Received: by paulmck-ThinkPad-P17-Gen-1.home (Postfix, from userid 1000) id 4A721CE0AE0; Thu, 12 Oct 2023 12:32:35 -0700 (PDT) From: "Paul E. McKenney" To: linux-kernel@vger.kernel.org Cc: gwml@vger.gnuweeb.org, kernel-team@meta.com, w@lwt.eu, Ammar Faizi , David Laight , Willy Tarreau , =?utf-8?q?Thomas_Wei=C3=9Fschuh?= Subject: [PATCH nolibc 06/19] tools/nolibc: x86-64: Use `rep movsb` for `memcpy()` and `memmove()` Date: Thu, 12 Oct 2023 12:32:20 -0700 Message-Id: <20231012193233.207857-6-paulmck@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: References: MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Thu, 12 Oct 2023 12:33:04 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1779579418345984504 X-GMAIL-MSGID: 1779579418345984504 From: Ammar Faizi Simplify memcpy() and memmove() on the x86-64 arch. The x86-64 arch has a 'rep movsb' instruction, which can perform memcpy() using only a single instruction, given: %rdi = destination %rsi = source %rcx = length Additionally, it can also handle the overlapping case by setting DF=1 (backward copy), which can be used as the memmove() implementation. Before this patch: ``` 00000000000010ab : 10ab: 48 89 f8 mov %rdi,%rax 10ae: 31 c9 xor %ecx,%ecx 10b0: 48 39 f7 cmp %rsi,%rdi 10b3: 48 83 d1 ff adc $0xffffffffffffffff,%rcx 10b7: 48 85 d2 test %rdx,%rdx 10ba: 74 25 je 10e1 10bc: 48 83 c9 01 or $0x1,%rcx 10c0: 48 39 f0 cmp %rsi,%rax 10c3: 48 c7 c7 ff ff ff ff mov $0xffffffffffffffff,%rdi 10ca: 48 0f 43 fa cmovae %rdx,%rdi 10ce: 48 01 cf add %rcx,%rdi 10d1: 44 8a 04 3e mov (%rsi,%rdi,1),%r8b 10d5: 44 88 04 38 mov %r8b,(%rax,%rdi,1) 10d9: 48 01 cf add %rcx,%rdi 10dc: 48 ff ca dec %rdx 10df: 75 f0 jne 10d1 10e1: c3 ret 00000000000010e2 : 10e2: 48 89 f8 mov %rdi,%rax 10e5: 48 85 d2 test %rdx,%rdx 10e8: 74 12 je 10fc 10ea: 31 c9 xor %ecx,%ecx 10ec: 40 8a 3c 0e mov (%rsi,%rcx,1),%dil 10f0: 40 88 3c 08 mov %dil,(%rax,%rcx,1) 10f4: 48 ff c1 inc %rcx 10f7: 48 39 ca cmp %rcx,%rdx 10fa: 75 f0 jne 10ec 10fc: c3 ret ``` After this patch: ``` // memmove is an alias for memcpy 000000000040133b : 40133b: 48 89 d1 mov %rdx,%rcx 40133e: 48 89 f8 mov %rdi,%rax 401341: 48 89 fa mov %rdi,%rdx 401344: 48 29 f2 sub %rsi,%rdx 401347: 48 39 ca cmp %rcx,%rdx 40134a: 72 03 jb 40134f 40134c: f3 a4 rep movsb %ds:(%rsi),%es:(%rdi) 40134e: c3 ret 40134f: 48 8d 7c 0f ff lea -0x1(%rdi,%rcx,1),%rdi 401354: 48 8d 74 0e ff lea -0x1(%rsi,%rcx,1),%rsi 401359: fd std 40135a: f3 a4 rep movsb %ds:(%rsi),%es:(%rdi) 40135c: fc cld 40135d: c3 ret ``` v3: - Make memmove as an alias for memcpy (Willy). - Make the forward copy the likely case (Alviro). v2: - Fix the broken memmove implementation (David). Link: https://lore.kernel.org/lkml/20230902062237.GA23141@1wt.eu Link: https://lore.kernel.org/lkml/5a821292d96a4dbc84c96ccdc6b5b666@AcuMS.aculab.com Suggested-by: David Laight Signed-off-by: Ammar Faizi Signed-off-by: Willy Tarreau Signed-off-by: Thomas Weißschuh --- tools/include/nolibc/arch-x86_64.h | 29 +++++++++++++++++++++++++++++ tools/include/nolibc/string.h | 4 ++++ 2 files changed, 33 insertions(+) diff --git a/tools/include/nolibc/arch-x86_64.h b/tools/include/nolibc/arch-x86_64.h index e5ccb926c903..aece7d895153 100644 --- a/tools/include/nolibc/arch-x86_64.h +++ b/tools/include/nolibc/arch-x86_64.h @@ -173,4 +173,33 @@ void __attribute__((weak, noreturn, optimize("Os", "omit-frame-pointer"))) __no_ __builtin_unreachable(); } +#define NOLIBC_ARCH_HAS_MEMMOVE +void *memmove(void *dst, const void *src, size_t len); + +#define NOLIBC_ARCH_HAS_MEMCPY +void *memcpy(void *dst, const void *src, size_t len); + +__asm__ ( +".section .text.nolibc_memmove_memcpy\n" +".weak memmove\n" +".weak memcpy\n" +"memmove:\n" +"memcpy:\n" + "movq %rdx, %rcx\n\t" + "movq %rdi, %rax\n\t" + "movq %rdi, %rdx\n\t" + "subq %rsi, %rdx\n\t" + "cmpq %rcx, %rdx\n\t" + "jb .Lbackward_copy\n\t" + "rep movsb\n\t" + "retq\n" +".Lbackward_copy:" + "leaq -1(%rdi, %rcx, 1), %rdi\n\t" + "leaq -1(%rsi, %rcx, 1), %rsi\n\t" + "std\n\t" + "rep movsb\n\t" + "cld\n\t" + "retq\n" +); + #endif /* _NOLIBC_ARCH_X86_64_H */ diff --git a/tools/include/nolibc/string.h b/tools/include/nolibc/string.h index 0c2e06c7c477..6eca267ec6fa 100644 --- a/tools/include/nolibc/string.h +++ b/tools/include/nolibc/string.h @@ -49,6 +49,7 @@ void *_nolibc_memcpy_down(void *dst, const void *src, size_t len) return dst; } +#ifndef NOLIBC_ARCH_HAS_MEMMOVE /* might be ignored by the compiler without -ffreestanding, then found as * missing. */ @@ -72,13 +73,16 @@ void *memmove(void *dst, const void *src, size_t len) } return dst; } +#endif /* #ifndef NOLIBC_ARCH_HAS_MEMMOVE */ +#ifndef NOLIBC_ARCH_HAS_MEMCPY /* must be exported, as it's used by libgcc on ARM */ __attribute__((weak,unused,section(".text.nolibc_memcpy"))) void *memcpy(void *dst, const void *src, size_t len) { return _nolibc_memcpy_up(dst, src, len); } +#endif /* #ifndef NOLIBC_ARCH_HAS_MEMCPY */ /* might be ignored by the compiler without -ffreestanding, then found as * missing. From patchwork Thu Oct 12 19:32:21 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Paul E. McKenney" X-Patchwork-Id: 152144 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2908:b0:403:3b70:6f57 with SMTP id ib8csp1456388vqb; Thu, 12 Oct 2023 12:33:39 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFvpHvrvxA0YvO4TKao82eiiak8ICxx1PLIl9piNSqU1UyCBDcRe0ixj+EqNtiBfE+TI5TF X-Received: by 2002:a05:6a00:3ab:b0:68f:c309:9736 with SMTP id y43-20020a056a0003ab00b0068fc3099736mr26870189pfs.3.1697139218909; Thu, 12 Oct 2023 12:33:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697139218; cv=none; d=google.com; s=arc-20160816; b=o0+GZjdSJWQoAh4YA1epOo9p2YmLOFTPTLTudRy43tc05JlIQzwaJb1RB71oX5s5jK oW6vqY6iYDUtW8MzYFrWfe9bJi0BmnG0jGIAm9hgxp+xbdufDcq8gN0FbNOXOxtmTlcy y6E8ZxXYoWJxeihVXJWA+e2NhgtL82U+3iYiJwK+EZg+1v2xhs3+SIECKzvMHkl0S4tg uVSN04yhVphn5CqFEtvTdJL/wKknDXF58Bqb5DujDyCRUN4VF7BJmXNIEwGXJN21atNE kVb35nNkJ/z5W57Ifu1gfPGXqOd2uDsgBWGES2zwFvJ59VL8CZVB40mjMToNaFuZcih/ vqPg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=bBJdeX1TNlwFR8/y0KbYL9LC+UBteUwgW90PPQkDJU0=; fh=k8Nnb7T1YpGZyibtethuHU9YEVyK2n9TvS08DyuCN+Q=; b=N5w/bixWC1e4Q2u1zMM0nrwvZ/fvEuEB+owM1iirbLg17xgWnNySFiRe7+bfC62koa H/gKWRzqRoX+Fl0us7Gz5ZRBrJ89QuNXjhks+ZJoCC1NDcFbwjnjAgv5nxtHydUkUVJN 0ue5zCg9S/B0tv0flvbkI0nQYbLepTxT9Aic8MN8eB5zQahuG8YmiOixyDQHzQ2JLekb UF/Ae8QuTpZSJUH61mI6aJc5bKdbGjDksBQdwmfPxFQ0nB0h9QRNG10F5LcVx6UDEFR7 Ljhi81MlqcARf2eXzJJFhAfDvWTrEvoiX6h32Ejzo/MLihSQgZ2PZTb8Oh1fiNLHFagc 2dig== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="k9/IyE54"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from agentk.vger.email (agentk.vger.email. [23.128.96.32]) by mx.google.com with ESMTPS id g9-20020a056a000b8900b0068fcae723easi5947212pfj.368.2023.10.12.12.33.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Oct 2023 12:33:38 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) client-ip=23.128.96.32; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="k9/IyE54"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by agentk.vger.email (Postfix) with ESMTP id 15FBB81A1B82; Thu, 12 Oct 2023 12:33:32 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1442495AbjJLTdG (ORCPT + 19 others); Thu, 12 Oct 2023 15:33:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52586 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1442277AbjJLTck (ORCPT ); Thu, 12 Oct 2023 15:32:40 -0400 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 90EAFEB for ; Thu, 12 Oct 2023 12:32:38 -0700 (PDT) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0D93CC433CB; Thu, 12 Oct 2023 19:32:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1697139156; bh=tZdEqn1w87WS+WM9ek7GyN3isDR74GNY4m47jLbGxXk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=k9/IyE5486myflRKbOIpKz4H5i1HFLoTbEeSeVn/aO/yv+eMJ3JbgCzgY7ptHx/Bl tVNvw7873SGZkgClEtpEsR9cvrdeVFQYeWsWzYsh7jBcQEy9v9HikO1lYTPcqWmcR/ 9CvGDIeTVw1wXqlOBuAOqiwtll43YE70tgEonZ1jDXFnMjC8y/SKVJeEagBacexZEt 89Aoe1Holaz1mlbGCDdLv2LjvwIC1TbnlaYgkauLiI0mD3P6vt5gZbgPQxDTCzrkG2 vuGGZ9cfWeELq+285bnduaOdYG3WHJe7+Rg4EXAfQgk+DIodHruWV3oGRgLWQtqaU4 S5JgaQNO8rBzA== Received: by paulmck-ThinkPad-P17-Gen-1.home (Postfix, from userid 1000) id 4D148CE0B6E; Thu, 12 Oct 2023 12:32:35 -0700 (PDT) From: "Paul E. McKenney" To: linux-kernel@vger.kernel.org Cc: gwml@vger.gnuweeb.org, kernel-team@meta.com, w@lwt.eu, Ammar Faizi , Alviro Iskandar Setiawan , Willy Tarreau , =?utf-8?q?Thomas_Wei=C3=9Fschuh?= Subject: [PATCH nolibc 07/19] tools/nolibc: x86-64: Use `rep stosb` for `memset()` Date: Thu, 12 Oct 2023 12:32:21 -0700 Message-Id: <20231012193233.207857-7-paulmck@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: References: MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on agentk.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (agentk.vger.email [0.0.0.0]); Thu, 12 Oct 2023 12:33:32 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1779579453424873528 X-GMAIL-MSGID: 1779579453424873528 From: Ammar Faizi Simplify memset() on the x86-64 arch. The x86-64 arch has a 'rep stosb' instruction, which can perform memset() using only a single instruction, given: %al = value (just like the second argument of memset()) %rdi = destination %rcx = length Before this patch: ``` 00000000000010c9 : 10c9: 48 89 f8 mov %rdi,%rax 10cc: 48 85 d2 test %rdx,%rdx 10cf: 74 0e je 10df 10d1: 31 c9 xor %ecx,%ecx 10d3: 40 88 34 08 mov %sil,(%rax,%rcx,1) 10d7: 48 ff c1 inc %rcx 10da: 48 39 ca cmp %rcx,%rdx 10dd: 75 f4 jne 10d3 10df: c3 ret ``` After this patch: ``` 0000000000001511 : 1511: 96 xchg %eax,%esi 1512: 48 89 d1 mov %rdx,%rcx 1515: 57 push %rdi 1516: f3 aa rep stos %al,%es:(%rdi) 1518: 58 pop %rax 1519: c3 ret ``` v2: - Use pushq %rdi / popq %rax (Alviro). - Use xchg %eax, %esi (Willy). Link: https://lore.kernel.org/lkml/ZO9e6h2jjVIMpBJP@1wt.eu Suggested-by: Alviro Iskandar Setiawan Suggested-by: Willy Tarreau Signed-off-by: Ammar Faizi Reviewed-by: Alviro Iskandar Setiawan Signed-off-by: Willy Tarreau Signed-off-by: Thomas Weißschuh --- tools/include/nolibc/arch-x86_64.h | 13 +++++++++++++ tools/include/nolibc/string.h | 2 ++ 2 files changed, 15 insertions(+) diff --git a/tools/include/nolibc/arch-x86_64.h b/tools/include/nolibc/arch-x86_64.h index aece7d895153..68609f421934 100644 --- a/tools/include/nolibc/arch-x86_64.h +++ b/tools/include/nolibc/arch-x86_64.h @@ -179,6 +179,9 @@ void *memmove(void *dst, const void *src, size_t len); #define NOLIBC_ARCH_HAS_MEMCPY void *memcpy(void *dst, const void *src, size_t len); +#define NOLIBC_ARCH_HAS_MEMSET +void *memset(void *dst, int c, size_t len); + __asm__ ( ".section .text.nolibc_memmove_memcpy\n" ".weak memmove\n" @@ -200,6 +203,16 @@ __asm__ ( "rep movsb\n\t" "cld\n\t" "retq\n" + +".section .text.nolibc_memset\n" +".weak memset\n" +"memset:\n" + "xchgl %eax, %esi\n\t" + "movq %rdx, %rcx\n\t" + "pushq %rdi\n\t" + "rep stosb\n\t" + "popq %rax\n\t" + "retq\n" ); #endif /* _NOLIBC_ARCH_X86_64_H */ diff --git a/tools/include/nolibc/string.h b/tools/include/nolibc/string.h index 6eca267ec6fa..1bad6121ef8c 100644 --- a/tools/include/nolibc/string.h +++ b/tools/include/nolibc/string.h @@ -84,6 +84,7 @@ void *memcpy(void *dst, const void *src, size_t len) } #endif /* #ifndef NOLIBC_ARCH_HAS_MEMCPY */ +#ifndef NOLIBC_ARCH_HAS_MEMSET /* might be ignored by the compiler without -ffreestanding, then found as * missing. */ @@ -99,6 +100,7 @@ void *memset(void *dst, int b, size_t len) } return dst; } +#endif /* #ifndef NOLIBC_ARCH_HAS_MEMSET */ static __attribute__((unused)) char *strchr(const char *s, int c) From patchwork Thu Oct 12 19:32:22 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Paul E. McKenney" X-Patchwork-Id: 152135 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2908:b0:403:3b70:6f57 with SMTP id ib8csp1456026vqb; Thu, 12 Oct 2023 12:33:03 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHm+6QwUkO0Cq5bUhaB2paTDL0FjhWtTfG2URK6vopjWuut4uiYWfRoeWwvN1XHeUt7zfQ9 X-Received: by 2002:a17:903:244d:b0:1c5:cd01:d846 with SMTP id l13-20020a170903244d00b001c5cd01d846mr28149241pls.3.1697139182952; Thu, 12 Oct 2023 12:33:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697139182; cv=none; d=google.com; s=arc-20160816; b=clktkTgbHyyWkPOl5BdXm3+NSEb8H0e5cWeHss1yFVCrG9uhZlE90BQa79JYFtJz7p xaWhMpswPm5/iOe+uRfqBwrpx0A2p5FbU2aXYruVnixPxGwLLo8eMjVIHj84H7es1+Vl 6DeR5XK+8h7xtNiv3U/EgXiqiwccWlouc6XnGqTIXmCyJ4PpQNDa3oV14IKI55A+h6sy 6j3XC4xHeDOUld8TlIM5caZmasRJpCeJmEeOePFQpbBxF2eNuiLmVFkCc8LBo+KFoxp3 xk3wi0fx4AmEavUdbPbdMwVU4CKy+w7QiZlOpiDUzAuZgvQEQQ3KcCHVvmbkHObIIlf5 jhyA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=gulQrEnFkQ9V3fcNzcV3QkFM4mS4BpMDgoDNaxCoprM=; fh=k8Nnb7T1YpGZyibtethuHU9YEVyK2n9TvS08DyuCN+Q=; b=GpNuKoJUqzegB5xONyRubqnrfMxBcUUd7PSlz8OPIYBPFvSpaPuPPsIogHxWF3jTv7 4qkxpuOM9aiu6U9DnouutaEbKi5OofrwOKmeJRbEJe2TbNsQrVQ9OtOd4kCP728cpyfw YaBsNDS5y7nwEWzwFxUD5n5NiNVYo4IdjrV7CkPY/oh2lt6WAC8nft1wOaAqAXyGpXQ8 h8SKitEYJCmh3bccY/X3FWhdjk12yxzkZGwO5OIIwJNkkWB4gb/OR1eVHCGW4qhVzAD9 U3TM620s/yx1uzXQw8m6t9k3XdpjOJ5QMJaVFeTzojoXc4ej/GlWGtsQ0zWeDT6icTiV xYhw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=CzyPPZ4E; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id u14-20020a170902e5ce00b001c3b4cb8c88si3103455plf.338.2023.10.12.12.33.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Oct 2023 12:33:02 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=CzyPPZ4E; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 4E4EC8271749; Thu, 12 Oct 2023 12:33:01 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1442234AbjJLTcx (ORCPT + 19 others); Thu, 12 Oct 2023 15:32:53 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52656 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1442249AbjJLTck (ORCPT ); Thu, 12 Oct 2023 15:32:40 -0400 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4E058DD for ; Thu, 12 Oct 2023 12:32:38 -0700 (PDT) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0A36CC433D9; Thu, 12 Oct 2023 19:32:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1697139156; bh=2zdrvqX6eHp2JMB1DsMmil9YMiuDQoFujLFcSnnPv4s=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=CzyPPZ4E06GNvCU+7Yw/RWtIhawKMkoVDmgt81iT2PJm9QPFQ8V37kceQKMrl1GRQ Q6HO6X27QUUn7MWHqyhm/JXMt2LaDOvw/G/dtO6jrcB6FvG7xg38Cskw2QPfkvtlPX kqUdA4lg3F5QNu1siONTAgulDzFUsHDlWJFqQaJxVOxM+LeyVMe8E3rPYZ/Gp2A9ra rD4Q/H+nws+TJuidWpAooFFT5BJ+xjExzlCvd1TnFR0nSPejtWH5wkVxUyyC9lws1i FscHPgY+jDwZKMVBCu/ZQIwn9w8aNcfLnrLNX90PPuGUBaaqGlV9w2VXlxelnzibIB DuZ52Ibg+82Cw== Received: by paulmck-ThinkPad-P17-Gen-1.home (Postfix, from userid 1000) id 4F6A2CE0C3A; Thu, 12 Oct 2023 12:32:35 -0700 (PDT) From: "Paul E. McKenney" To: linux-kernel@vger.kernel.org Cc: gwml@vger.gnuweeb.org, kernel-team@meta.com, w@lwt.eu, Ammar Faizi , Alviro Iskandar Setiawan , Willy Tarreau , =?utf-8?q?Thomas_Wei=C3=9Fschuh?= Subject: [PATCH nolibc 08/19] tools/nolibc: string: Remove the `_nolibc_memcpy_down()` function Date: Thu, 12 Oct 2023 12:32:22 -0700 Message-Id: <20231012193233.207857-8-paulmck@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: References: MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Thu, 12 Oct 2023 12:33:01 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1779579415570877876 X-GMAIL-MSGID: 1779579415570877876 From: Ammar Faizi This nolibc internal function is not used. Delete it. It was probably supposed to handle memmove(), but today the memmove() has its own implementation. Signed-off-by: Ammar Faizi Reviewed-by: Alviro Iskandar Setiawan Signed-off-by: Willy Tarreau Signed-off-by: Thomas Weißschuh --- tools/include/nolibc/string.h | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/tools/include/nolibc/string.h b/tools/include/nolibc/string.h index 1bad6121ef8c..22dcb3f566ba 100644 --- a/tools/include/nolibc/string.h +++ b/tools/include/nolibc/string.h @@ -39,16 +39,6 @@ void *_nolibc_memcpy_up(void *dst, const void *src, size_t len) return dst; } -static __attribute__((unused)) -void *_nolibc_memcpy_down(void *dst, const void *src, size_t len) -{ - while (len) { - len--; - ((char *)dst)[len] = ((const char *)src)[len]; - } - return dst; -} - #ifndef NOLIBC_ARCH_HAS_MEMMOVE /* might be ignored by the compiler without -ffreestanding, then found as * missing. From patchwork Thu Oct 12 19:32:23 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Paul E. McKenney" X-Patchwork-Id: 152137 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2908:b0:403:3b70:6f57 with SMTP id ib8csp1456105vqb; Thu, 12 Oct 2023 12:33:09 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEqUqDS7LGK8kpKjKc+GWiti9l4w5Sq5/P9LXteh9ictROtNDUaytrgD3PnprkoVBFAxItz X-Received: by 2002:a05:6a00:1d94:b0:690:d314:38d with SMTP id z20-20020a056a001d9400b00690d314038dmr28124984pfw.1.1697139189212; Thu, 12 Oct 2023 12:33:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697139189; cv=none; d=google.com; s=arc-20160816; b=RWQdbwMZT/J38vj/EfVqZ6SaHERgAhqSnDKI46gyiXFIpT2EKzql9d+++wAudX8isI JTJzD9qucUoMkWlOwiTlSyYfYf6pB2UGpRih92qlsujkT4+F01mkW4CO8omNnhs+enoJ qW+vnb8uPAEeLBqLiB4CNrn4dZltPyks0pkoH4uKHgYNtLXOKNHFXUTU3BKLyjiw9rbz sQiinijWNkf3V3KKKnn/FDqBU7JYVAIxF+mUYErtmafoIIk4PO+3BfzOrZ/s6mQbO3EX +dX++EfU3HYLaKZU83odNFtG7sWSdAttZ+5sYNHfC+fgHQLZvY0zxdps7NUzJTCs+wgm LIEA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=B3lHxmKY1HMoYTzJL29Sw+wtTDB2YEf2OGWVi67fURE=; fh=k8Nnb7T1YpGZyibtethuHU9YEVyK2n9TvS08DyuCN+Q=; b=iqmPu6K+unINYPyxNFuNykXH1+yNDpA6KMyYVFIIRAMU1HSBNnJEXJQsE2n+6FEJOQ YCjGtr3tLd05cAbKZGLSkQDpx8FNdIUgCWRo7NttikESBnEly9NUOkoyXd8jB+QW+ecM Sd5MBfaadgAau52P160YiaQPBYzVEHz4I6+U4uMc/XrlkRiDDbpHYenIDQh1VMZeJf6f 5mixGdgqc99nMTPhUkbb9VqGvMV96NMp1w+JY7WNiz2IdOzIj62Dzvfmx2UiuxjpVGik usVW/FBpplkLbo21z1hoeVPt1vWC4tG+sakyo605J+mF+BuzySS9Jpgjd6uwAEhBWsme eUXA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=LdazeWMB; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id a11-20020a056a000c8b00b006933bf7aedbsi15882864pfv.285.2023.10.12.12.33.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Oct 2023 12:33:09 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=LdazeWMB; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 5C203827175A; Thu, 12 Oct 2023 12:33:08 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1442468AbjJLTc6 (ORCPT + 19 others); Thu, 12 Oct 2023 15:32:58 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52540 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1442269AbjJLTck (ORCPT ); Thu, 12 Oct 2023 15:32:40 -0400 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 911F0EE for ; Thu, 12 Oct 2023 12:32:38 -0700 (PDT) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1BBC9C43395; Thu, 12 Oct 2023 19:32:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1697139156; bh=pphMddfrgHcoIgmzZWe7AThL9XYOSaOTFelQzzfUfsg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=LdazeWMBWcAQZfED1qwdpEIQorVe9/eBbjPS3DMhBBM8Z4UUpdQWPEmRT8xIvv9KL w/15YUSQAie+QUB/Gw/qy2T201551+DDjkBrERGlhlne3I4PT6MlyVT/qtt3MxxZGp XbRp4NVSUeaMvtME8tuDbxSSuGvKCiBH87ooFlHmA59mJOVb/dnOKAEoPS91Y3g5Cw lr8OkHjfjnUxN76mJxKB/uXXSIAGnq8PFCS2SjB0zqAc/3xFY26BEsJD13a7htGCeb mOAWrzKaQER7m4T3SdT/y+DneSMgNFLSNo6awgO2/I/7vdYPbP2QqW8bJ11ShXWTqe 4WQ48jTxsUm3w== Received: by paulmck-ThinkPad-P17-Gen-1.home (Postfix, from userid 1000) id 51D99CE0C3B; Thu, 12 Oct 2023 12:32:35 -0700 (PDT) From: "Paul E. McKenney" To: linux-kernel@vger.kernel.org Cc: gwml@vger.gnuweeb.org, kernel-team@meta.com, w@lwt.eu, Ammar Faizi , Alviro Iskandar Setiawan , Willy Tarreau , =?utf-8?q?Thomas_Wei=C3=9Fschuh?= Subject: [PATCH nolibc 09/19] tools/nolibc: string: Remove the `_nolibc_memcpy_up()` function Date: Thu, 12 Oct 2023 12:32:23 -0700 Message-Id: <20231012193233.207857-9-paulmck@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: References: MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Thu, 12 Oct 2023 12:33:08 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1779579422217018573 X-GMAIL-MSGID: 1779579422217018573 From: Ammar Faizi This function is only called by memcpy(), there is no real reason to have this wrapper. Delete this function and move the code to memcpy() directly. Signed-off-by: Ammar Faizi Reviewed-by: Alviro Iskandar Setiawan Signed-off-by: Willy Tarreau Signed-off-by: Thomas Weißschuh --- tools/include/nolibc/string.h | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/tools/include/nolibc/string.h b/tools/include/nolibc/string.h index 22dcb3f566ba..a01c69dd495f 100644 --- a/tools/include/nolibc/string.h +++ b/tools/include/nolibc/string.h @@ -27,18 +27,6 @@ int memcmp(const void *s1, const void *s2, size_t n) return c1; } -static __attribute__((unused)) -void *_nolibc_memcpy_up(void *dst, const void *src, size_t len) -{ - size_t pos = 0; - - while (pos < len) { - ((char *)dst)[pos] = ((const char *)src)[pos]; - pos++; - } - return dst; -} - #ifndef NOLIBC_ARCH_HAS_MEMMOVE /* might be ignored by the compiler without -ffreestanding, then found as * missing. @@ -70,7 +58,13 @@ void *memmove(void *dst, const void *src, size_t len) __attribute__((weak,unused,section(".text.nolibc_memcpy"))) void *memcpy(void *dst, const void *src, size_t len) { - return _nolibc_memcpy_up(dst, src, len); + size_t pos = 0; + + while (pos < len) { + ((char *)dst)[pos] = ((const char *)src)[pos]; + pos++; + } + return dst; } #endif /* #ifndef NOLIBC_ARCH_HAS_MEMCPY */ From patchwork Thu Oct 12 19:32:24 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Paul E. McKenney" X-Patchwork-Id: 152139 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2908:b0:403:3b70:6f57 with SMTP id ib8csp1456221vqb; Thu, 12 Oct 2023 12:33:21 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEZFYynzAZnlplT3AZpuo2HXpRc12tOS2vR7+KweEva9Zhqr2DVBdgPJ8NSpAV5B1L7hL/T X-Received: by 2002:a92:d9c4:0:b0:349:4e1f:e9a0 with SMTP id n4-20020a92d9c4000000b003494e1fe9a0mr24786850ilq.2.1697139201544; Thu, 12 Oct 2023 12:33:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697139201; cv=none; d=google.com; s=arc-20160816; b=yr4pO98WnS92diU2XTkH5JclqXT0+KV0/EZGGGgNrzjDJbZjnzUyID2ogEzG7XOdzi HMYPCvsdXdSN6hJQZeOb/dJd7XTgHT7HSPpyqU8eo8++Ayf0lplg1sKW6YWFdXM61Lae rCDf8MvUCJmbrAR5XaVhqoOsDRN0ccLuJ8xjVPcnt9EPVIHkH96JCIUyGyXly+HhRhZq dQq1h0BSqE/I3VJXaNLTH1cE0d4lSdPquqlljySyGPMCar/8sXAIYEWDOdqsTel/0zC+ iRnrVq3boKGJFcK21rX0aDNRl+fztF03ZEnJxaiwtb0NMxxfs0nXAguw6WIuvvA+rJRZ FkzQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=398iR0TCz03h4tOiy2WH6iQ0rXdNTfuc1SoeFtRlyqE=; fh=THcOZpAstuQgjCQdp+HFLuFrh45sne4+DD/0SDoXq0I=; b=B6Mulr1hp6UIGcZeN3t9f7YjC1AlJBS6WQ8c0Q4GtDfo4+NUrRQQT3Kkfh0At3VsoM GAhqlgB08gNl/UX2vPgYgZ+kWzLuQ2gpfwgHuy5X+iVHA6BT1rQbd8gL5485tLtiR0UL QO9UABcOOdPIFnguTUAkqCz9oiGwZwuScuOMEpHC0d9/07CMamD8KIIsHK2mZu0DSkuz 6qD7L4I0w8P67ogw/VpYOt+QQdBMjRGqiP3Uq80/LiypsOpgLUAFg6BD0+5nfuLs8sXz al/vx4t6QutsG0neCxYqwEa8PiMLIEqqkA8yKTG17ggb4+ySNlNUWEYFIHwpQ+A4ahd6 Pj0A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=tWRBq9Nq; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from snail.vger.email (snail.vger.email. [2620:137:e000::3:7]) by mx.google.com with ESMTPS id 126-20020a630084000000b00578c4d1f530si2944464pga.728.2023.10.12.12.33.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Oct 2023 12:33:21 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) client-ip=2620:137:e000::3:7; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=tWRBq9Nq; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id D502C8282A21; Thu, 12 Oct 2023 12:33:20 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1442668AbjJLTdN (ORCPT + 19 others); Thu, 12 Oct 2023 15:33:13 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52540 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1442285AbjJLTcl (ORCPT ); Thu, 12 Oct 2023 15:32:41 -0400 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 91162ED for ; Thu, 12 Oct 2023 12:32:38 -0700 (PDT) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 14B0FC43391; Thu, 12 Oct 2023 19:32:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1697139156; bh=u/ByFzD4Ej36/aCXkG6Bkh+tE+GTKi/3gaOUP8BZznA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=tWRBq9Nq+Thv2/uvAXTFN64r5KeSnfsvdBT6R4eppcwd13qGP3piYHIuw2+706PBV TsdQDwBzk4cxCfop380Qb1ywbK9gnAe3r58V3UZdrHKXh0JJmWDwAkL50oJcUhI7XJ I/PxY4FtDzihWOBBYxVp2wocg8Xcd/Oc4u4bLc94XUFmTw124E2xHI/qMq7zEa25nB t967tALqxD2Z2qpy27HjSzcJlhqbucfxqvwz64ZhEi9Ke7d5K3ZpnASIPvPujBcko9 IHhPbGAtyiSwNiBjxRehoGXFK+6sCDq8fWayhRla6TsWofhIaQtdC6fxrCedhWgThB ZmOjslede4QSg== Received: by paulmck-ThinkPad-P17-Gen-1.home (Postfix, from userid 1000) id 544B0CE0C3E; Thu, 12 Oct 2023 12:32:35 -0700 (PDT) From: "Paul E. McKenney" To: linux-kernel@vger.kernel.org Cc: gwml@vger.gnuweeb.org, kernel-team@meta.com, w@lwt.eu, =?utf-8?q?Thomas_?= =?utf-8?q?Wei=C3=9Fschuh?= Subject: [PATCH nolibc 10/19] selftests/nolibc: libc-test: avoid -Wstringop-overflow warnings Date: Thu, 12 Oct 2023 12:32:24 -0700 Message-Id: <20231012193233.207857-10-paulmck@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: References: MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Thu, 12 Oct 2023 12:33:20 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1779579435095205307 X-GMAIL-MSGID: 1779579435095205307 From: Thomas Weißschuh Newer versions of glibc annotate the poll() function with __attribute__(access) which triggers a compiler warning inside the testcase poll_fault. Avoid this by using a plain NULL which is enough for the testcase. To avoid potential future warnings also adapt the other EFAULT testcases, except select_fault as NULL is a valid value for its argument. nolibc-test.c: In function ‘run_syscall’: nolibc-test.c:338:62: warning: ‘poll’ writing 8 bytes into a region of size 0 overflows the destination [-Wstringop-overflow=] 338 | do { if (!(cond)) result(llen, SKIPPED); else ret += expect_syserr2(expr, expret, experr1, experr2, llen); } while (0) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ nolibc-test.c:341:9: note: in expansion of macro ‘EXPECT_SYSER2’ 341 | EXPECT_SYSER2(cond, expr, expret, experr, 0) | ^~~~~~~~~~~~~ nolibc-test.c:905:47: note: in expansion of macro ‘EXPECT_SYSER’ 905 | CASE_TEST(poll_fault); EXPECT_SYSER(1, poll((void *)1, 1, 0), -1, EFAULT); break; | ^~~~~~~~~~~~ cc1: note: destination object is likely at address zero In file included from /usr/include/poll.h:1, from nolibc-test.c:33: /usr/include/sys/poll.h:54:12: note: in a call to function ‘poll’ declared with attribute ‘access (write_only, 1, 2)’ 54 | extern int poll (struct pollfd *__fds, nfds_t __nfds, int __timeout) | ^~~~ Signed-off-by: Thomas Weißschuh --- tools/testing/selftests/nolibc/nolibc-test.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/testing/selftests/nolibc/nolibc-test.c b/tools/testing/selftests/nolibc/nolibc-test.c index fb3bf91462e2..a3ee4496bf0a 100644 --- a/tools/testing/selftests/nolibc/nolibc-test.c +++ b/tools/testing/selftests/nolibc/nolibc-test.c @@ -894,14 +894,14 @@ int run_syscall(int min, int max) CASE_TEST(lseek_0); EXPECT_SYSER(1, lseek(0, 0, SEEK_SET), -1, ESPIPE); break; CASE_TEST(mkdir_root); EXPECT_SYSER(1, mkdir("/", 0755), -1, EEXIST); break; CASE_TEST(mmap_bad); EXPECT_PTRER(1, mmap(NULL, 0, PROT_READ, MAP_PRIVATE, 0, 0), MAP_FAILED, EINVAL); break; - CASE_TEST(munmap_bad); EXPECT_SYSER(1, munmap((void *)1, 0), -1, EINVAL); break; + CASE_TEST(munmap_bad); EXPECT_SYSER(1, munmap(NULL, 0), -1, EINVAL); break; CASE_TEST(mmap_munmap_good); EXPECT_SYSZR(1, test_mmap_munmap()); break; CASE_TEST(open_tty); EXPECT_SYSNE(1, tmp = open("/dev/null", 0), -1); if (tmp != -1) close(tmp); break; CASE_TEST(open_blah); EXPECT_SYSER(1, tmp = open("/proc/self/blah", 0), -1, ENOENT); if (tmp != -1) close(tmp); break; CASE_TEST(pipe); EXPECT_SYSZR(1, test_pipe()); break; CASE_TEST(poll_null); EXPECT_SYSZR(1, poll(NULL, 0, 0)); break; CASE_TEST(poll_stdout); EXPECT_SYSNE(1, ({ struct pollfd fds = { 1, POLLOUT, 0}; poll(&fds, 1, 0); }), -1); break; - CASE_TEST(poll_fault); EXPECT_SYSER(1, poll((void *)1, 1, 0), -1, EFAULT); break; + CASE_TEST(poll_fault); EXPECT_SYSER(1, poll(NULL, 1, 0), -1, EFAULT); break; CASE_TEST(prctl); EXPECT_SYSER(1, prctl(PR_SET_NAME, (unsigned long)NULL, 0, 0, 0), -1, EFAULT); break; CASE_TEST(read_badf); EXPECT_SYSER(1, read(-1, &tmp, 1), -1, EBADF); break; CASE_TEST(rmdir_blah); EXPECT_SYSER(1, rmdir("/blah"), -1, ENOENT); break; @@ -910,7 +910,7 @@ int run_syscall(int min, int max) CASE_TEST(select_stdout); EXPECT_SYSNE(1, ({ fd_set fds; FD_ZERO(&fds); FD_SET(1, &fds); select(2, NULL, &fds, NULL, NULL); }), -1); break; CASE_TEST(select_fault); EXPECT_SYSER(1, select(1, (void *)1, NULL, NULL, 0), -1, EFAULT); break; CASE_TEST(stat_blah); EXPECT_SYSER(1, stat("/proc/self/blah", &stat_buf), -1, ENOENT); break; - CASE_TEST(stat_fault); EXPECT_SYSER(1, stat((void *)1, &stat_buf), -1, EFAULT); break; + CASE_TEST(stat_fault); EXPECT_SYSER(1, stat(NULL, &stat_buf), -1, EFAULT); break; CASE_TEST(stat_timestamps); EXPECT_SYSZR(1, test_stat_timestamps()); break; CASE_TEST(symlink_root); EXPECT_SYSER(1, symlink("/", "/"), -1, EEXIST); break; CASE_TEST(unlink_root); EXPECT_SYSER(1, unlink("/"), -1, EISDIR); break; From patchwork Thu Oct 12 19:32:25 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Paul E. McKenney" X-Patchwork-Id: 152146 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2908:b0:403:3b70:6f57 with SMTP id ib8csp1456424vqb; Thu, 12 Oct 2023 12:33:43 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEREqbpx0V7isyftDnLiTx/AQTFXZ53cGVp0rGLCk84kmqwPiilZRR9IvE94ZMwB61/Os/4 X-Received: by 2002:a9d:7585:0:b0:6c0:c1ba:8f78 with SMTP id s5-20020a9d7585000000b006c0c1ba8f78mr24435891otk.0.1697139223108; Thu, 12 Oct 2023 12:33:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697139223; cv=none; d=google.com; s=arc-20160816; b=qVAZjtw1Qh0CKDOG29AnuQDmKyADeN0gRnPnvmr62y/lm5aQ5jAHei/SJtWVnCBQHC JL9ztL/4U/cmgesvCBSX/ikaeD1mIxyhw91iOkn25yfn3qtLY9X/EITC1l3MKYXlyrnw Sjq0ZCIJDatkd0ncXBJ6DPA0/kOBAZZTReTC1MNirP6N9kcvkrIEpJcd39NrKmtJ2rw3 tU8f2OQXn1e3mLhUbtN1TqckUZMTKhiqX9HlH9XF8jZ5zd5M6NtjyOSksB5KNU5C4gWs 5Y7p7XY1hYXfrYhCQFjOg8ciFXqO86BmkKp7IIIWbJdUaBYsGWvZX5WZm2StgboRAHCx HVJw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=3hZLTWKMgSY+Aef2IIyKmAN2EXP4Mq1oaUviZB3Ayw0=; fh=uTC3Tr1qgIvDEbO1Ug2Y2SBEbzCdyyyxTcDtA/fX764=; b=iXx4HnNdShk9GcWPrD/cJNS5PRN1Qn1p3o1whyhJDJZraMEss29fXSpKiuVZm3ZuWX N3kvw8GpXmeOrO8mwbX3h1yxyHEpa5A0MVZm+aHqAAC7s6z2DV4Yx8EAEZtaxadCzFsd XBPbW1SAFdFt5UabgZGcJfr9iDEWwwNnIu1dV7C88ViaH2YbbyjIK9OyOc6Bxrt2PJvn mPPFPVHxadvYn9sTCgCCtANV2tKB4SWiWRVBBZO3EFLY235+XvJzakc3A0/WeityUg4x cd9hjV1owbcu7r07P4uxFKxdoqxgqGm3lNX0X9Oj2YPxK0RjOaSnFNUr1ou+PxU2SIWf FoVg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=cipYbJQa; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id f11-20020a056a0022cb00b00690de92ffe3si483302pfj.309.2023.10.12.12.33.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Oct 2023 12:33:43 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=cipYbJQa; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 16A478271761; Thu, 12 Oct 2023 12:33:29 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1442340AbjJLTdV (ORCPT + 19 others); Thu, 12 Oct 2023 15:33:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52650 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1442337AbjJLTcl (ORCPT ); Thu, 12 Oct 2023 15:32:41 -0400 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 85D2AE8 for ; Thu, 12 Oct 2023 12:32:38 -0700 (PDT) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 24327C43397; Thu, 12 Oct 2023 19:32:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1697139156; bh=KULVDp/cUEx8aH2osEFULKgecu24MXP+d5KfOrr3QgA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=cipYbJQaj3jI1DJLuZVcGo1v4YYpnPYIBiBmsKP8DyylySViJ3hvfzUTgCfmTZNEe f5A1fnFeSzRbU01kZp5n4bgp/2zsro6ZZVbVPNBk7H6l83S9279KTBjLhcb6aP2u0E NmC3ciRcvALV+bYfWEMa2qQiaTRfHKsHy4uR/Fn8TS1axZhdVv4ybIvzjLrtFt1lQI iBunSGuJighPdbj/6ZGlAtMRng1iQKUw5OozDef5RCOPnWsfi3XyZDJF4jDylj9bMA IGzUWxPNvm/jgrlv4xT6U3YZwj44n9UmACvDf4K5T0ijSVAY7qpmp4FKUl0IY3OO9p 7vz7OdgX58ZJA== Received: by paulmck-ThinkPad-P17-Gen-1.home (Postfix, from userid 1000) id 57069CE0CB3; Thu, 12 Oct 2023 12:32:35 -0700 (PDT) From: "Paul E. McKenney" To: linux-kernel@vger.kernel.org Cc: gwml@vger.gnuweeb.org, kernel-team@meta.com, w@lwt.eu, =?utf-8?q?Thomas_?= =?utf-8?q?Wei=C3=9Fschuh?= , Nicolas Schier Subject: [PATCH nolibc 11/19] selftests/nolibc: don't embed initramfs into kernel image Date: Thu, 12 Oct 2023 12:32:25 -0700 Message-Id: <20231012193233.207857-11-paulmck@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: References: MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Thu, 12 Oct 2023 12:33:29 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1779579457963383320 X-GMAIL-MSGID: 1779579457963383320 From: Thomas Weißschuh When the initramfs is embedded into the kernel each rebuild of it will trigger a full kernel relink and all the expensive postprocessing steps. Currently nolibc-test and therefore the initramfs are always rebuild, even without source changes, leading to lots of slow kernel relinks. Instead of linking the initramfs into the kernel assemble it manually and pass it explicitly to qemu. This avoids all of the kernel relinks. Signed-off-by: Thomas Weißschuh Reviewed-by: Nicolas Schier Link: https://lore.kernel.org/r/20230917-nolibc-initramfs-v2-1-f0f293a8b198@weissschuh.net --- tools/testing/selftests/nolibc/.gitignore | 1 + tools/testing/selftests/nolibc/Makefile | 42 ++++++++++++++--------- 2 files changed, 27 insertions(+), 16 deletions(-) diff --git a/tools/testing/selftests/nolibc/.gitignore b/tools/testing/selftests/nolibc/.gitignore index 52f613cdad54..5119f9f7afd2 100644 --- a/tools/testing/selftests/nolibc/.gitignore +++ b/tools/testing/selftests/nolibc/.gitignore @@ -1,4 +1,5 @@ /initramfs/ +/initramfs.cpio /libc-test /nolibc-test /run.out diff --git a/tools/testing/selftests/nolibc/Makefile b/tools/testing/selftests/nolibc/Makefile index 689658f81a19..ee6a9ad28cfd 100644 --- a/tools/testing/selftests/nolibc/Makefile +++ b/tools/testing/selftests/nolibc/Makefile @@ -131,18 +131,20 @@ REPORT ?= awk '/\[OK\][\r]*$$/{p++} /\[FAIL\][\r]*$$/{if (!f) printf("\n"); f++ help: @echo "Supported targets under selftests/nolibc:" - @echo " all call the \"run\" target below" - @echo " help this help" - @echo " sysroot create the nolibc sysroot here (uses \$$ARCH)" - @echo " nolibc-test build the executable (uses \$$CC and \$$CROSS_COMPILE)" - @echo " libc-test build an executable using the compiler's default libc instead" - @echo " run-user runs the executable under QEMU (uses \$$XARCH, \$$TEST)" - @echo " initramfs prepare the initramfs with nolibc-test" - @echo " defconfig create a fresh new default config (uses \$$XARCH)" - @echo " kernel (re)build the kernel with the initramfs (uses \$$XARCH)" - @echo " run runs the kernel in QEMU after building it (uses \$$XARCH, \$$TEST)" - @echo " rerun runs a previously prebuilt kernel in QEMU (uses \$$XARCH, \$$TEST)" - @echo " clean clean the sysroot, initramfs, build and output files" + @echo " all call the \"run\" target below" + @echo " help this help" + @echo " sysroot create the nolibc sysroot here (uses \$$ARCH)" + @echo " nolibc-test build the executable (uses \$$CC and \$$CROSS_COMPILE)" + @echo " libc-test build an executable using the compiler's default libc instead" + @echo " run-user runs the executable under QEMU (uses \$$XARCH, \$$TEST)" + @echo " initramfs.cpio prepare the initramfs archive with nolibc-test" + @echo " initramfs prepare the initramfs tree with nolibc-test" + @echo " defconfig create a fresh new default config (uses \$$XARCH)" + @echo " kernel (re)build the kernel (uses \$$XARCH)" + @echo " kernel-standalone (re)build the kernel with the initramfs (uses \$$XARCH)" + @echo " run runs the kernel in QEMU after building it (uses \$$XARCH, \$$TEST)" + @echo " rerun runs a previously prebuilt kernel in QEMU (uses \$$XARCH, \$$TEST)" + @echo " clean clean the sysroot, initramfs, build and output files" @echo "" @echo "The output file is \"run.out\". Test ranges may be passed using \$$TEST." @echo "" @@ -195,6 +197,9 @@ run-user: nolibc-test $(Q)qemu-$(QEMU_ARCH) ./nolibc-test > "$(CURDIR)/run.out" || : $(Q)$(REPORT) $(CURDIR)/run.out +initramfs.cpio: kernel nolibc-test + $(QUIET_GEN)echo 'file /init nolibc-test 755 0 0' | $(srctree)/usr/gen_init_cpio - > initramfs.cpio + initramfs: nolibc-test $(QUIET_MKDIR)mkdir -p initramfs $(call QUIET_INSTALL, initramfs/init) @@ -203,17 +208,20 @@ initramfs: nolibc-test defconfig: $(Q)$(MAKE) -C $(srctree) ARCH=$(ARCH) CC=$(CC) CROSS_COMPILE=$(CROSS_COMPILE) mrproper $(DEFCONFIG) prepare -kernel: initramfs +kernel: + $(Q)$(MAKE) -C $(srctree) ARCH=$(ARCH) CC=$(CC) CROSS_COMPILE=$(CROSS_COMPILE) $(IMAGE_NAME) + +kernel-standalone: initramfs $(Q)$(MAKE) -C $(srctree) ARCH=$(ARCH) CC=$(CC) CROSS_COMPILE=$(CROSS_COMPILE) $(IMAGE_NAME) CONFIG_INITRAMFS_SOURCE=$(CURDIR)/initramfs # run the tests after building the kernel -run: kernel - $(Q)qemu-system-$(QEMU_ARCH) -display none -no-reboot -kernel "$(srctree)/$(IMAGE)" -serial stdio $(QEMU_ARGS) > "$(CURDIR)/run.out" +run: kernel initramfs.cpio + $(Q)qemu-system-$(QEMU_ARCH) -display none -no-reboot -kernel "$(srctree)/$(IMAGE)" -initrd initramfs.cpio -serial stdio $(QEMU_ARGS) > "$(CURDIR)/run.out" $(Q)$(REPORT) $(CURDIR)/run.out # re-run the tests from an existing kernel rerun: - $(Q)qemu-system-$(QEMU_ARCH) -display none -no-reboot -kernel "$(srctree)/$(IMAGE)" -serial stdio $(QEMU_ARGS) > "$(CURDIR)/run.out" + $(Q)qemu-system-$(QEMU_ARCH) -display none -no-reboot -kernel "$(srctree)/$(IMAGE)" -initrd initramfs.cpio -serial stdio $(QEMU_ARGS) > "$(CURDIR)/run.out" $(Q)$(REPORT) $(CURDIR)/run.out # report with existing test log @@ -227,6 +235,8 @@ clean: $(Q)rm -f nolibc-test $(call QUIET_CLEAN, libc-test) $(Q)rm -f libc-test + $(call QUIET_CLEAN, initramfs.cpio) + $(Q)rm -rf initramfs.cpio $(call QUIET_CLEAN, initramfs) $(Q)rm -rf initramfs $(call QUIET_CLEAN, run.out) From patchwork Thu Oct 12 19:32:26 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Paul E. McKenney" X-Patchwork-Id: 152149 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2908:b0:403:3b70:6f57 with SMTP id ib8csp1456662vqb; Thu, 12 Oct 2023 12:34:12 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHW1Un8e8ElkmEgf4fyrOdrmxXFwQOcfj8ed/jN1p7R/9LWzfKakttNLQqITSwFiE6XtLDo X-Received: by 2002:a05:6a00:3985:b0:68f:c8b3:3077 with SMTP id fi5-20020a056a00398500b0068fc8b33077mr26919232pfb.1.1697139252392; Thu, 12 Oct 2023 12:34:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697139252; cv=none; d=google.com; s=arc-20160816; b=l80MqK120xlJlix/Tl5PeovhkkJ6ydwkoYd924KDQd2/WbC4tfQXA2sBqBNGq5rzUt B5+TXbFPNxf0EjRyObV3kWIv635Wp5tJceXR5iKfypwUgQkJ9VO0yOsFdWHOzKUN5YYN MhcjdjKsV8b7mlgigCCd7Dao+FfTLsuECYm2Svtw5/arJE1/Z/m6zzK/DXSuqjUJ4MKG RXW8mTRfRCHduK6hAK5ef94BSMSmT0gE7+nsciwD5rFYyS8uAb7Jpqv9BNCV9oQEoNR3 aKHguA2X3mL1D4TwFUT1TcyW9aSCB585iWiQYBtv/aBC9MAI9OeH1nR/ES5V6KS/IlmB Hkww== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=z7Fcvn19BetYVwhCP3jzs+WzHyoTT6Ohg9B8EF3l/Nc=; fh=n5S/AR14tYMsjDdXEOPrR3UbxswSa5eTzDqlfcgbnjE=; b=lHOdEIyHgOPkAVxjg25kFXIxSLo53X7fVvR5JDjNoDU0WY3boGiRsCBo3z6ff4x/ev QfZaMkoxlT7Yz58pON5u49Ic+NPJ+Oo8Y65EhCcVi6/mjOYuLlgDdocgEYU4Sodqku8g 3pk6m95+lx5hezlQW6zCdnwTnlK+ZmjEnW8IFf2jW6V/dsTpggPuyDyy+v+GKgG6dWLs lmrNx+IAkjQk4xGw0kxnMIV1JqybaU5BGnt5WrcjNWuoXBh9q+lvTJPDUwJt9UNToXnJ dQni7PEPxpt4MCIseh1XufyGTURT7bzR9pRY9gIA7sa3qLJTjbz1qvFTUYgrbdlnJl5u f8Dw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=KxwqeOs4; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from morse.vger.email (morse.vger.email. [23.128.96.31]) by mx.google.com with ESMTPS id l184-20020a633ec1000000b005aa5852227fsi95168pga.622.2023.10.12.12.34.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Oct 2023 12:34:12 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 as permitted sender) client-ip=23.128.96.31; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=KxwqeOs4; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by morse.vger.email (Postfix) with ESMTP id B58B683FC3A6; Thu, 12 Oct 2023 12:34:03 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at morse.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1442643AbjJLTdB (ORCPT + 19 others); Thu, 12 Oct 2023 15:33:01 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52650 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1442263AbjJLTck (ORCPT ); Thu, 12 Oct 2023 15:32:40 -0400 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 90DD8EA for ; Thu, 12 Oct 2023 12:32:38 -0700 (PDT) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2B4E3C433A9; Thu, 12 Oct 2023 19:32:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1697139156; bh=cffo0Opb832Q634IA4d6N2Zi+yxWXyiKi+nWzBmlGXk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=KxwqeOs4r8vpCqBJORSSRoXOGV4RiW98JDhjqe5p4WP4aDt+w3tkD68fc64MkNVR0 KGLkMybw4iAfo1HRv0gj6Hf9sn8DL/yQRdO0DmSkpgyAQiyRVPDicp8fVO6u1OnOJx pG/zOYEHMY7WzrHab2BIaMErRQ22mxmsNHORhY3XDw0qPim9dZjJZNRugvqQAO6BV7 UKf5MD+dg9fSiHNNn+lp9rTOovZ2bOzp1sSE3/In6IQrERIrYPOfZIQ/fGGQXw93wd tbXydJvtu7GAqNxa7TJnANkhVV1D2YjvSNkFI9YBaq04e81j+5e+fOyu2yy44gWPIM tBeFBmReQZakg== Received: by paulmck-ThinkPad-P17-Gen-1.home (Postfix, from userid 1000) id 5A19ACE0CF9; Thu, 12 Oct 2023 12:32:35 -0700 (PDT) From: "Paul E. McKenney" To: linux-kernel@vger.kernel.org Cc: gwml@vger.gnuweeb.org, kernel-team@meta.com, w@lwt.eu, =?utf-8?q?Thomas_?= =?utf-8?q?Wei=C3=9Fschuh?= , Willy Tarreau Subject: [PATCH nolibc 12/19] selftests/nolibc: allow building i386 with multiarch compiler Date: Thu, 12 Oct 2023 12:32:26 -0700 Message-Id: <20231012193233.207857-12-paulmck@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: References: MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on morse.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (morse.vger.email [0.0.0.0]); Thu, 12 Oct 2023 12:34:03 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1779579489035877080 X-GMAIL-MSGID: 1779579489035877080 From: Thomas Weißschuh When building with a multiarch-capable compiler, like those provided by common distributions the -m32 argument is required to build 32bit code. Wrap it in cc-option in case the compiler is not multiarch-capable. Signed-off-by: Thomas Weißschuh Acked-by: Willy Tarreau Link: https://lore.kernel.org/r/20230917-nolibc-syscall-nr-v2-1-03863d509b9a@weissschuh.net --- tools/testing/selftests/nolibc/Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/testing/selftests/nolibc/Makefile b/tools/testing/selftests/nolibc/Makefile index ee6a9ad28cfd..891aa396163d 100644 --- a/tools/testing/selftests/nolibc/Makefile +++ b/tools/testing/selftests/nolibc/Makefile @@ -113,6 +113,7 @@ else Q=@ endif +CFLAGS_i386 = $(call cc-option,-m32) CFLAGS_ppc = -m32 -mbig-endian -mno-vsx $(call cc-option,-mmultiple) CFLAGS_ppc64 = -m64 -mbig-endian -mno-vsx $(call cc-option,-mmultiple) CFLAGS_ppc64le = -m64 -mlittle-endian -mno-vsx $(call cc-option,-mabi=elfv2) From patchwork Thu Oct 12 19:32:27 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Paul E. McKenney" X-Patchwork-Id: 152141 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2908:b0:403:3b70:6f57 with SMTP id ib8csp1456278vqb; Thu, 12 Oct 2023 12:33:27 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFjyPL6G2Ejq9aL9cAnvZjo5RuuKMcyUMrMDhrr8guIJLX4VCX95vb/oHjCymLWfjpkUEPs X-Received: by 2002:a92:db4f:0:b0:350:f353:4017 with SMTP id w15-20020a92db4f000000b00350f3534017mr23414530ilq.0.1697139206826; Thu, 12 Oct 2023 12:33:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697139206; cv=none; d=google.com; s=arc-20160816; b=hmq7wNLadH52AdxQozBK/5jc71OC3BjRZpRxq3Wc/YZCV74c7/t4X27Uv8yTTRVtGj Sh8/EMa5gIyyZBba6mwdRj27RbqhKQUBNInSqmhsfW4xbl/+RPY0hCI3sEzZPSf0rU9E ktkSd2sOxuKGtzpqHTU5kETZzyoK65o6bfo4s40Bl56tzRG94sZpCBWIZ54GW02fhaF0 Y7BHvpgh7oxlvF6M53Ua9oC/8cBf8tvEi7o4BPLrBLIvHAFoKVksqLOgDcT0YalCtq05 CqtmiRh6kpp2vjhRdQ4HWbM/XV6I2ixqiRXC1nN9DZDP9P91mhpwlWree88c+00VB6mF q88g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=/b2QOTNCYZcoVhB8ArjoTwHc5F0rBjVDTydQ+y2mlzY=; fh=n5S/AR14tYMsjDdXEOPrR3UbxswSa5eTzDqlfcgbnjE=; b=oBBXXs37NCoKKMM7e60JnNAyr++mvy2BHe6czz+8BhRbrFPb0u6LYcr3j8Ui2N7leS OzkxyjVhr1hZFcpVZj0/v4BJWRwGfC50n+qj+3X/dJrCDBK5jbcJnN/0ylDF6m34f5HY GQD/BX34yNxFpVt3rmDYuLCgOZ9nvKduiTrWa8y5sGrMHHOoAfIPQEEtRhle/mk3fiDo A2iW2j4boD4D/oNR1Fuj7NsapL3nEiH6m0WXhqAVXVVZmp18tG0Km8JIDYgBtl7FDHwZ 9GVbjFwQAl3+zaULuuaDUbp6ARVKJ2X3rW3f8fubVBI+KFeqVhJaHIKhMcHjjPSFn8Lu 7VXA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=RHLwSsGW; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id a34-20020a056a001d2200b0068fb4842092si14869472pfx.183.2023.10.12.12.33.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Oct 2023 12:33:26 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=RHLwSsGW; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id B809A8271761; Thu, 12 Oct 2023 12:33:25 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1442679AbjJLTdQ (ORCPT + 19 others); Thu, 12 Oct 2023 15:33:16 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52684 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1442316AbjJLTcl (ORCPT ); Thu, 12 Oct 2023 15:32:41 -0400 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 997EFE4 for ; Thu, 12 Oct 2023 12:32:38 -0700 (PDT) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 365CAC433AB; Thu, 12 Oct 2023 19:32:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1697139156; bh=D8WmWSdjmqDotCTIny5KPDkHdNvvxPLSrd63TdlisnU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=RHLwSsGWiK5Auz6rJyJMdNuFODjmPjM93DlLx397AdEO0rjXL7Uj2MSghnQzpNGPX QAQ4rEsbUocWvUvcTcKSN3JJith5ORSdH7CmZICqXagBgOpU2yfK8xGagZ9/8S7Ur5 JedBfkUCXkd3ge7yqnhF0SPaLrEmRcrWLms2uSRdFn144xI/v8uVBvr9jjHwuI/xwl dZM5n7tH0/sdHMEc2wYWUdrf5HxdpqU3Yre6CWlDnCvJezSBGIJeh7eIqwDDRCoTGY 9JHDETK7yVoKrlltr+gJSTgyKRuwkvngmctrmd7ecBlOCkIMHDoEZpZqSoWhiwDvDH v5Jb9EOmL+P+A== Received: by paulmck-ThinkPad-P17-Gen-1.home (Postfix, from userid 1000) id 5BBFDCE0DDC; Thu, 12 Oct 2023 12:32:35 -0700 (PDT) From: "Paul E. McKenney" To: linux-kernel@vger.kernel.org Cc: gwml@vger.gnuweeb.org, kernel-team@meta.com, w@lwt.eu, =?utf-8?q?Thomas_?= =?utf-8?q?Wei=C3=9Fschuh?= , Willy Tarreau Subject: [PATCH nolibc 13/19] tools/nolibc: avoid unused parameter warnings for ENOSYS fallbacks Date: Thu, 12 Oct 2023 12:32:27 -0700 Message-Id: <20231012193233.207857-13-paulmck@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: References: MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Thu, 12 Oct 2023 12:33:25 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1779579440865041220 X-GMAIL-MSGID: 1779579440865041220 From: Thomas Weißschuh The ENOSYS fallback code does not use its functions parameters. This can lead to compiler warnings about unused parameters. Explicitly avoid these warnings. Signed-off-by: Thomas Weißschuh Acked-by: Willy Tarreau Link: https://lore.kernel.org/r/20230917-nolibc-syscall-nr-v2-2-03863d509b9a@weissschuh.net --- tools/include/nolibc/sys.h | 44 +++++++++++++++++++++++--------------- 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/tools/include/nolibc/sys.h b/tools/include/nolibc/sys.h index b478750c9004..8389820e1928 100644 --- a/tools/include/nolibc/sys.h +++ b/tools/include/nolibc/sys.h @@ -43,6 +43,16 @@ : __sysret_arg; /* return original value */ \ }) +/* Syscall ENOSYS helper: Avoids unused-parameter warnings and provides a + * debugging hook. + */ + +static __inline__ int __nolibc_enosys(const char *syscall, ...) +{ + (void)syscall; + return -ENOSYS; +} + /* Functions in this file only describe syscalls. They're declared static so * that the compiler usually decides to inline them while still being allowed @@ -133,7 +143,7 @@ int sys_chmod(const char *path, mode_t mode) #elif defined(__NR_chmod) return my_syscall2(__NR_chmod, path, mode); #else - return -ENOSYS; + return __nolibc_enosys(__func__, path, mode); #endif } @@ -156,7 +166,7 @@ int sys_chown(const char *path, uid_t owner, gid_t group) #elif defined(__NR_chown) return my_syscall3(__NR_chown, path, owner, group); #else - return -ENOSYS; + return __nolibc_enosys(__func__, path, owner, group); #endif } @@ -230,7 +240,7 @@ int sys_dup2(int old, int new) #elif defined(__NR_dup2) return my_syscall2(__NR_dup2, old, new); #else - return -ENOSYS; + return __nolibc_enosys(__func__, old, new); #endif } @@ -312,7 +322,7 @@ pid_t sys_fork(void) #elif defined(__NR_fork) return my_syscall0(__NR_fork); #else - return -ENOSYS; + return __nolibc_enosys(__func__); #endif } #endif @@ -486,7 +496,7 @@ int sys_gettimeofday(struct timeval *tv, struct timezone *tz) #ifdef __NR_gettimeofday return my_syscall2(__NR_gettimeofday, tv, tz); #else - return -ENOSYS; + return __nolibc_enosys(__func__, tv, tz); #endif } @@ -563,7 +573,7 @@ int sys_link(const char *old, const char *new) #elif defined(__NR_link) return my_syscall2(__NR_link, old, new); #else - return -ENOSYS; + return __nolibc_enosys(__func__, old, new); #endif } @@ -584,7 +594,7 @@ off_t sys_lseek(int fd, off_t offset, int whence) #ifdef __NR_lseek return my_syscall3(__NR_lseek, fd, offset, whence); #else - return -ENOSYS; + return __nolibc_enosys(__func__, fd, offset, whence); #endif } @@ -607,7 +617,7 @@ int sys_mkdir(const char *path, mode_t mode) #elif defined(__NR_mkdir) return my_syscall2(__NR_mkdir, path, mode); #else - return -ENOSYS; + return __nolibc_enosys(__func__, path, mode); #endif } @@ -629,7 +639,7 @@ int sys_rmdir(const char *path) #elif defined(__NR_unlinkat) return my_syscall3(__NR_unlinkat, AT_FDCWD, path, AT_REMOVEDIR); #else - return -ENOSYS; + return __nolibc_enosys(__func__, path); #endif } @@ -652,7 +662,7 @@ long sys_mknod(const char *path, mode_t mode, dev_t dev) #elif defined(__NR_mknod) return my_syscall3(__NR_mknod, path, mode, dev); #else - return -ENOSYS; + return __nolibc_enosys(__func__, path, mode, dev); #endif } @@ -742,7 +752,7 @@ int sys_open(const char *path, int flags, mode_t mode) #elif defined(__NR_open) return my_syscall3(__NR_open, path, flags, mode); #else - return -ENOSYS; + return __nolibc_enosys(__func__, path, flags, mode); #endif } @@ -842,7 +852,7 @@ int sys_poll(struct pollfd *fds, int nfds, int timeout) #elif defined(__NR_poll) return my_syscall3(__NR_poll, fds, nfds, timeout); #else - return -ENOSYS; + return __nolibc_enosys(__func__, fds, nfds, timeout); #endif } @@ -934,7 +944,7 @@ int sys_select(int nfds, fd_set *rfds, fd_set *wfds, fd_set *efds, struct timeva #endif return my_syscall5(__NR__newselect, nfds, rfds, wfds, efds, timeout); #else - return -ENOSYS; + return __nolibc_enosys(__func__, nfds, rfds, wfds, efds, timeout); #endif } @@ -989,7 +999,7 @@ int sys_statx(int fd, const char *path, int flags, unsigned int mask, struct sta #ifdef __NR_statx return my_syscall5(__NR_statx, fd, path, flags, mask, buf); #else - return -ENOSYS; + return __nolibc_enosys(__func__, fd, path, flags, mask, buf); #endif } @@ -1047,7 +1057,7 @@ int sys_symlink(const char *old, const char *new) #elif defined(__NR_symlink) return my_syscall2(__NR_symlink, old, new); #else - return -ENOSYS; + return __nolibc_enosys(__func__, old, new); #endif } @@ -1104,7 +1114,7 @@ int sys_unlink(const char *path) #elif defined(__NR_unlink) return my_syscall1(__NR_unlink, path); #else - return -ENOSYS; + return __nolibc_enosys(__func__, path); #endif } @@ -1127,7 +1137,7 @@ pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage) #ifdef __NR_wait4 return my_syscall4(__NR_wait4, pid, status, options, rusage); #else - return -ENOSYS; + return __nolibc_enosys(__func__, pid, status, options, rusage); #endif } From patchwork Thu Oct 12 19:32:28 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Paul E. McKenney" X-Patchwork-Id: 152147 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2908:b0:403:3b70:6f57 with SMTP id ib8csp1456441vqb; Thu, 12 Oct 2023 12:33:45 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHunUT/NM5/RPpm7e2oteTG2SdHVQXn3r0GhpKVDmso/HJsOUq/7kMjEam5+ShpMlCSHTbp X-Received: by 2002:a17:902:d512:b0:1bf:349f:b85c with SMTP id b18-20020a170902d51200b001bf349fb85cmr27677233plg.1.1697139224803; Thu, 12 Oct 2023 12:33:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697139224; cv=none; d=google.com; s=arc-20160816; b=X4+82sGMj4eqX+U7VspdJ9V6phCwSyB7rkI+mQ3kS+tGUlxF9bG/Ts1eJRNMn+gAsT 12gWFr2j8UChUTTNySi/FvCpbDnltP5DgdZjP8QnphbIWLG+bKhRoOC1a9Fefujg8HHX BdfggFp9geSdfrPC5fPjMggwzif2oQQyltdg/BkrJJo/t3dNNIJJbIBeQbaCYJYR8nq/ 2fgOzx3QznzhGi5TWNhrL2/+rXKVUASXUQH+Y5WlLGqkjMl6nnKWdTNk1mu/5uqaN1PC aT6MjF6Kum5m0f6+ggyi7dYW/M7Ub7uZxY6S/TPdrvKQl1hudyJsC7L3ucmOHcZ2kF7G UZJw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=eRPIG5x2aeQk6yg602J540U7xzjBgNZQWYHpz3hImmE=; fh=n5S/AR14tYMsjDdXEOPrR3UbxswSa5eTzDqlfcgbnjE=; b=BTM8q5kh4xtRTZgk/d8RZzgn1R5Yv6DTt5FeFuGVsSxN0jwo/ixkOYUD8MzuW0boAB 5kjE/OGlWNPp1mNNXIElJOUKHkszV6ocWWYJms0N3xmZltKIuQbAKVtilRD5v0EMe9iV zxZzxtxxyaNme7flRKzyPUWVEhdI8Ox9ZIbA8uoFqnaVzDrijcxvWdjTGlNdAGBgBkR3 8bMeWE/F99w986NDLy2O0jLB2wfPyg6bib8Vk7Jm12ukPQ55K11uNHP1g5f8Ss63xmUf fZiF/gnO+AzA1oCeD71AydyT9UjI2MyduSXGuUp2nacVcKt9l2IwcHWHR4dUPk8/ePZI XqrQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=s4RZMiZm; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from morse.vger.email (morse.vger.email. [23.128.96.31]) by mx.google.com with ESMTPS id w4-20020a1709029a8400b001c60c5726absi2776483plp.39.2023.10.12.12.33.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Oct 2023 12:33:44 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 as permitted sender) client-ip=23.128.96.31; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=s4RZMiZm; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by morse.vger.email (Postfix) with ESMTP id A80E883FC3AF; Thu, 12 Oct 2023 12:33:36 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at morse.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1442355AbjJLTdJ (ORCPT + 19 others); Thu, 12 Oct 2023 15:33:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52684 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1442279AbjJLTck (ORCPT ); Thu, 12 Oct 2023 15:32:40 -0400 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 90D2BE9 for ; Thu, 12 Oct 2023 12:32:38 -0700 (PDT) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4563EC433AD; Thu, 12 Oct 2023 19:32:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1697139156; bh=U8fkZeKWQAxeRz/DmSHJexH3yzP6c2P5T0N66hgyrCk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=s4RZMiZmrCkANuhqGb5vzkcuscOaDyTsLTZCo2BlSGScSyy5qFoZB1qtKnJUQE81f xCCHe59Vu67+k5+diQHgmaCzqV0SYxzlWfybZue8PJM+VVM7KnF9CyazJAW68Q3pJw 0JIUSUZ3qH6pyuuab6PRl58FrCeRmh9pCDCzOz8D+SGzNpyAQNAmclC0Il2R3nVS82 I+d6xzFIaxvjlKdxJivGqgof3SRfbb0IObuNptrOMieefBbz8BRrsxAV0yL15T6eTr +YcmG4bGcSz2UK/fvz8Yy0RJ4IUcYaOFpGpH7SPknGC4u1GqvEGAnIvIOiST1ZCY5e hvb3GCekooQMg== Received: by paulmck-ThinkPad-P17-Gen-1.home (Postfix, from userid 1000) id 5E063CE0DE3; Thu, 12 Oct 2023 12:32:35 -0700 (PDT) From: "Paul E. McKenney" To: linux-kernel@vger.kernel.org Cc: gwml@vger.gnuweeb.org, kernel-team@meta.com, w@lwt.eu, =?utf-8?q?Thomas_?= =?utf-8?q?Wei=C3=9Fschuh?= , Willy Tarreau Subject: [PATCH nolibc 14/19] tools/nolibc: don't define new syscall number Date: Thu, 12 Oct 2023 12:32:28 -0700 Message-Id: <20231012193233.207857-14-paulmck@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: References: MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on morse.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (morse.vger.email [0.0.0.0]); Thu, 12 Oct 2023 12:33:36 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1779579459607446403 X-GMAIL-MSGID: 1779579459607446403 From: Thomas Weißschuh All symbols created by nolibc are also visible to user code. Syscall constants are expected to come from the kernel headers and should not be made up by nolibc. Refactor the logic to avoid defining syscall numbers. Also the new code is easier to understand. Signed-off-by: Thomas Weißschuh Acked-by: Willy Tarreau Link: https://lore.kernel.org/r/20230917-nolibc-syscall-nr-v2-3-03863d509b9a@weissschuh.net --- tools/include/nolibc/sys.h | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/tools/include/nolibc/sys.h b/tools/include/nolibc/sys.h index 8389820e1928..f05144e46b67 100644 --- a/tools/include/nolibc/sys.h +++ b/tools/include/nolibc/sys.h @@ -938,11 +938,10 @@ int sys_select(int nfds, fd_set *rfds, fd_set *wfds, fd_set *efds, struct timeva t.tv_nsec = timeout->tv_usec * 1000; } return my_syscall6(__NR_pselect6, nfds, rfds, wfds, efds, timeout ? &t : NULL, NULL); -#elif defined(__NR__newselect) || defined(__NR_select) -#ifndef __NR__newselect -#define __NR__newselect __NR_select -#endif +#elif defined(__NR__newselect) return my_syscall5(__NR__newselect, nfds, rfds, wfds, efds, timeout); +#elif defined(__NR_select) + return my_syscall5(__NR_select, nfds, rfds, wfds, efds, timeout); #else return __nolibc_enosys(__func__, nfds, rfds, wfds, efds, timeout); #endif From patchwork Thu Oct 12 19:32:29 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Paul E. McKenney" X-Patchwork-Id: 152148 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2908:b0:403:3b70:6f57 with SMTP id ib8csp1456509vqb; Thu, 12 Oct 2023 12:33:54 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFhoFTEDtJxbZHzAPWA5Q51n9sOV8fL8YLd1FlwTxK7pi3D1cPPcIU5JW/JTodb5TclXYfh X-Received: by 2002:a17:902:ea0c:b0:1c2:c60:8388 with SMTP id s12-20020a170902ea0c00b001c20c608388mr27095334plg.6.1697139234302; Thu, 12 Oct 2023 12:33:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697139234; cv=none; d=google.com; s=arc-20160816; b=BxoVJ2cFh2mNu43bDAk2DFVhbNsuvNx9ObRnyGmtjHTPkk1qJuL7Oe7tJYHVZCDIqW UYcHj6HEAOKMKOXg+CeXVpYVBQmmi6vnCapsTlQlcBsQ0HATiKbYB0oAHpMNuwSIh5dC FghcoCyns/MVy8Xe/STNr9tZLVg2vrlj8B/gP/BWYKukawOzjF7nxiaxKC6YPfWY7cnd O+aLfLwLkJKrgVvh3bCLjsWREFduvcxpAFj0n0lxVHiPa3nkC4JFGPxZ1zShE1inUOGN 7w6HPuhNWW6q4bcqkayQJa+T3wWND1JbiidnFbdD6fam6cvVxIhQvCd3MuCa3e0HKej0 ugIw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=Zwx22bQOCULpYuzyGQPdXfAjYH1TNN9j0otxEp3QOh4=; fh=n5S/AR14tYMsjDdXEOPrR3UbxswSa5eTzDqlfcgbnjE=; b=Q9UbaUL+dRMUaVxeAsyMBmlWs2eVeE6zSwK0eEyGdy8aIuhdXQVBlFxAe79TZ42fL1 e1gqyoUMGEOdi802h0V2p2qpPQUQKjMpBtGQRCIS5kTE2VVxy+uJdnKiizP7mLNmiYP4 aePRrhLprXgsuNZerT+tLsbhZ+G2kpZxWumStbWlzJX+MsTlGe4hHlXrt6l4SXDXEdNP yckIYPRGh8BtYV3l2HK7vKFicFm0Vth4Xby6HOUzN2Qu66o4hUVEZazne5CoUNHlkgCo hzWOT1YaVhDnZtPTKLQast6FW40PFoVYTFDg6PSBsfA8Cd8RFNetR3S6iwDa6lOvywVm EbUQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=RsAhwNai; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id m14-20020a170902db0e00b001bc674914b0si3044331plx.472.2023.10.12.12.33.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Oct 2023 12:33:54 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=RsAhwNai; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id A86B6828B8F0; Thu, 12 Oct 2023 12:33:48 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1442712AbjJLTdg (ORCPT + 19 others); Thu, 12 Oct 2023 15:33:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52742 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1442348AbjJLTcl (ORCPT ); Thu, 12 Oct 2023 15:32:41 -0400 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DF658E3 for ; Thu, 12 Oct 2023 12:32:39 -0700 (PDT) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 49FC6C433B6; Thu, 12 Oct 2023 19:32:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1697139156; bh=TkAOAZUUquEC/SVcrwpY1Lnr3+lwFbze2yyE+P3apL4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=RsAhwNai9jEsJF0WuQAdObMqc8i/7+jCDlQmFkI3yPc6csW9jO8ZWX9TT6SMOu0Bv pnvXJJ/88ZkOs12lZybvCSiiCTgyvp88IiQt9M1e43MPbRhb+Rw7wQm+TRz71P4u0f jnVzH/ufeeOH7F0XSff4TvteXRJH/dKVYEmCKDV/BgWT0Io+vYv50lP5hvUXj2K/+Y 7b0zQNVUVupGMX1nqQHcnrT4YMcpE3gvIHHcnDlEpnAnIrO/a+qNKMqHxXMlfjWHKj bbxrm9EtB7c/pUD+nlv+/X0RQa/K/xIbihwViEqzWEyAqsg5rqNBzy3RlGgksiU2Rv lxbJTHN4QNKiA== Received: by paulmck-ThinkPad-P17-Gen-1.home (Postfix, from userid 1000) id 605C3CE0DEA; Thu, 12 Oct 2023 12:32:35 -0700 (PDT) From: "Paul E. McKenney" To: linux-kernel@vger.kernel.org Cc: gwml@vger.gnuweeb.org, kernel-team@meta.com, w@lwt.eu, =?utf-8?q?Thomas_?= =?utf-8?q?Wei=C3=9Fschuh?= , Willy Tarreau Subject: [PATCH nolibc 15/19] tools/nolibc: automatically detect necessity to use pselect6 Date: Thu, 12 Oct 2023 12:32:29 -0700 Message-Id: <20231012193233.207857-15-paulmck@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: References: MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Thu, 12 Oct 2023 12:33:48 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1779579469359318019 X-GMAIL-MSGID: 1779579469359318019 From: Thomas Weißschuh We can automatically detect if pselect6 is needed or not from the kernel headers. This removes the need to manually specify it. Signed-off-by: Thomas Weißschuh Acked-by: Willy Tarreau Link: https://lore.kernel.org/r/20230917-nolibc-syscall-nr-v2-4-03863d509b9a@weissschuh.net --- tools/include/nolibc/arch-aarch64.h | 3 --- tools/include/nolibc/arch-loongarch.h | 4 +--- tools/include/nolibc/arch-riscv.h | 3 --- tools/include/nolibc/sys.h | 10 +++++----- 4 files changed, 6 insertions(+), 14 deletions(-) diff --git a/tools/include/nolibc/arch-aarch64.h b/tools/include/nolibc/arch-aarch64.h index 6c33c46848e3..b23ac1f04035 100644 --- a/tools/include/nolibc/arch-aarch64.h +++ b/tools/include/nolibc/arch-aarch64.h @@ -20,10 +20,7 @@ * - the arguments are cast to long and assigned into the target registers * which are then simply passed as registers to the asm code, so that we * don't have to experience issues with register constraints. - * - * On aarch64, select() is not implemented so we have to use pselect6(). */ -#define __ARCH_WANT_SYS_PSELECT6 #define my_syscall0(num) \ ({ \ diff --git a/tools/include/nolibc/arch-loongarch.h b/tools/include/nolibc/arch-loongarch.h index bf98f6220195..3f8ef8f86c0f 100644 --- a/tools/include/nolibc/arch-loongarch.h +++ b/tools/include/nolibc/arch-loongarch.h @@ -19,10 +19,8 @@ * - the arguments are cast to long and assigned into the target * registers which are then simply passed as registers to the asm code, * so that we don't have to experience issues with register constraints. - * - * On LoongArch, select() is not implemented so we have to use pselect6(). */ -#define __ARCH_WANT_SYS_PSELECT6 + #define _NOLIBC_SYSCALL_CLOBBERLIST \ "memory", "$t0", "$t1", "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t8" diff --git a/tools/include/nolibc/arch-riscv.h b/tools/include/nolibc/arch-riscv.h index 950cc2283fd7..1927c643c739 100644 --- a/tools/include/nolibc/arch-riscv.h +++ b/tools/include/nolibc/arch-riscv.h @@ -19,10 +19,7 @@ * - the arguments are cast to long and assigned into the target * registers which are then simply passed as registers to the asm code, * so that we don't have to experience issues with register constraints. - * - * On riscv, select() is not implemented so we have to use pselect6(). */ -#define __ARCH_WANT_SYS_PSELECT6 #define my_syscall0(num) \ ({ \ diff --git a/tools/include/nolibc/sys.h b/tools/include/nolibc/sys.h index f05144e46b67..2f359cb03d10 100644 --- a/tools/include/nolibc/sys.h +++ b/tools/include/nolibc/sys.h @@ -930,7 +930,11 @@ int sys_select(int nfds, fd_set *rfds, fd_set *wfds, fd_set *efds, struct timeva struct timeval *t; } arg = { .n = nfds, .r = rfds, .w = wfds, .e = efds, .t = timeout }; return my_syscall1(__NR_select, &arg); -#elif defined(__ARCH_WANT_SYS_PSELECT6) && defined(__NR_pselect6) +#elif defined(__NR__newselect) + return my_syscall5(__NR__newselect, nfds, rfds, wfds, efds, timeout); +#elif defined(__NR_select) + return my_syscall5(__NR_select, nfds, rfds, wfds, efds, timeout); +#elif defined(__NR_pselect6) struct timespec t; if (timeout) { @@ -938,10 +942,6 @@ int sys_select(int nfds, fd_set *rfds, fd_set *wfds, fd_set *efds, struct timeva t.tv_nsec = timeout->tv_usec * 1000; } return my_syscall6(__NR_pselect6, nfds, rfds, wfds, efds, timeout ? &t : NULL, NULL); -#elif defined(__NR__newselect) - return my_syscall5(__NR__newselect, nfds, rfds, wfds, efds, timeout); -#elif defined(__NR_select) - return my_syscall5(__NR_select, nfds, rfds, wfds, efds, timeout); #else return __nolibc_enosys(__func__, nfds, rfds, wfds, efds, timeout); #endif From patchwork Thu Oct 12 19:32:30 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Paul E. McKenney" X-Patchwork-Id: 152142 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2908:b0:403:3b70:6f57 with SMTP id ib8csp1456331vqb; Thu, 12 Oct 2023 12:33:32 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEF+D/8hOuobYXJLjfb9IBtdOExxRip/NUItXCiiLBGmA4jjaB8O4IhOFq6Jne2Fj1Lp3ay X-Received: by 2002:a17:903:22cc:b0:1b8:2ba0:c9a8 with SMTP id y12-20020a17090322cc00b001b82ba0c9a8mr27374512plg.2.1697139212270; Thu, 12 Oct 2023 12:33:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697139212; cv=none; d=google.com; s=arc-20160816; b=BYNs28f0KSpfqu6sBkkWMOwfOaV6K/Pg/DldvT593Zgp4FjmOte7ZcLWz5BjLqeQJK cXq6IkoxW9gzcVt0rtHukztnJBiIdGY87Tp6zJYSoE9ZQRnGwYfD3Jv9Px0GPjxRDzIW lyQ7C7dnD6h2eNMs2nAey2Sh+p5QSy+VrIYRAVPvfO8K9gbTNe4VMY0bfnwHCz1ZwlNL RJmToToOMvZ36lbfrCg6jVYGQJ3/7JRvAw8sPgR0ChDj17IkF1fDT9g3P1DWqu9XaSbC JSup2PzBF4fj8L9XhpAmQq9Gv6aklgXdfIN6jhFMhCjRy1ee78xkZEFOmzkuCOzs+Ge+ KBQA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=Pl3z2WYdUi4nqvbuCx6K/ZfvxTSRUNxpAKFf5EA6u4I=; fh=THcOZpAstuQgjCQdp+HFLuFrh45sne4+DD/0SDoXq0I=; b=kyYZH6VbcmO+mhtHytAv3zSTlCj71UbA+CX+lsqez+4TG6iVqK2LEY0Vx+IpYHJ1fa CsBzQ2VCM88U20VDTfGwx7DljepxGGkbLizwciu8wNkPB0PF8lJuJoLuLnkQQdsJPKtq L0uhsYYaXdxX8qO9MGBQUp4G0PyCdGJmCJ86j791hwusPKPDPUOD3/2wCjajnOjjD3g6 Vob5TButSLn0s2ighIgjYbxzvU2a7mEHIiKPdufMTT4+I1G8FEyVw7E/AHAsHFDb51tf WiNTuHFY9ruwq/KRldekk9TbStfHV88M7+CIeZ0hV0wsx4mDOwLrviNwl5LIS1dHkv2w FlxA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=g2pK3ImI; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id e6-20020a170902cf4600b001c60c5726b8si2717692plg.5.2023.10.12.12.33.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Oct 2023 12:33:32 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=g2pK3ImI; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 691988288191; Thu, 12 Oct 2023 12:33:31 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1442709AbjJLTdZ (ORCPT + 19 others); Thu, 12 Oct 2023 15:33:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52540 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1442338AbjJLTcl (ORCPT ); Thu, 12 Oct 2023 15:32:41 -0400 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A7AC7B7 for ; Thu, 12 Oct 2023 12:32:39 -0700 (PDT) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4EC96C4339A; Thu, 12 Oct 2023 19:32:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1697139156; bh=ZO74adjr52q07m5XK1/r7PBJO8jHbbI0TTXAAStMf9E=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=g2pK3ImIwA4SVwN4HcIqBTkoMOqyB+RFU28nc+07PciFLqzo+eS/G7hMdgOoUeGu9 V/ATNneIKmwBIBAme5b2MZwYv9HBvJicxHyCaL1I88cVNrV0YXQphyJHxxmQcC10Vq PBAF0qA+kCEcaFISQcSJrdjqIQ6C8683BqBaQ7dXJlXhqfz8XIzn8qT9G6dLwQRLvm zWZg1nZ/Up0MM+/CQnn8R/nAFTlmRWI7NchEqUQXIRxIgh+dRJpfc/W7lyF8uY091A tQYKiAwVSGInGNEJpD58c/fmAsxb6bqq+Mmf6zzWFTs7Uh2P+5gW6+YhGasVWHAHg2 sV6nigvjM2msg== Received: by paulmck-ThinkPad-P17-Gen-1.home (Postfix, from userid 1000) id 6339ECE0F11; Thu, 12 Oct 2023 12:32:35 -0700 (PDT) From: "Paul E. McKenney" To: linux-kernel@vger.kernel.org Cc: gwml@vger.gnuweeb.org, kernel-team@meta.com, w@lwt.eu, =?utf-8?q?Thomas_?= =?utf-8?q?Wei=C3=9Fschuh?= Subject: [PATCH nolibc 16/19] tools/nolibc: drop test for getauxval(AT_PAGESZ) Date: Thu, 12 Oct 2023 12:32:30 -0700 Message-Id: <20231012193233.207857-16-paulmck@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: References: MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Thu, 12 Oct 2023 12:33:31 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1779579446291673750 X-GMAIL-MSGID: 1779579446291673750 From: Thomas Weißschuh Other testcases are already testing the same functionality: * auxv_AT_UID tests getauxval() in general. * test_getpagesize() tests pagesize() which directly calls getauxval(AT_PAGESZ). Link: https://lore.kernel.org/r/20231007-nolibc-auxval-pagesz-v1-1-af00804edead@weissschuh.net Signed-off-by: Thomas Weißschuh --- tools/testing/selftests/nolibc/nolibc-test.c | 1 - 1 file changed, 1 deletion(-) diff --git a/tools/testing/selftests/nolibc/nolibc-test.c b/tools/testing/selftests/nolibc/nolibc-test.c index a3ee4496bf0a..7e3936c182dc 100644 --- a/tools/testing/selftests/nolibc/nolibc-test.c +++ b/tools/testing/selftests/nolibc/nolibc-test.c @@ -630,7 +630,6 @@ int run_startup(int min, int max) 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 */ From patchwork Thu Oct 12 19:32:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Paul E. McKenney" X-Patchwork-Id: 152150 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2908:b0:403:3b70:6f57 with SMTP id ib8csp1456798vqb; Thu, 12 Oct 2023 12:34:30 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEyXGerxgfe3hfqmLQCqUUzEOuYKmG2EqgTkRT3P2NhF5f/YdrG3aCFZkZUtn5zoRl6LeSr X-Received: by 2002:a05:6602:360e:b0:79a:c487:2711 with SMTP id bc14-20020a056602360e00b0079ac4872711mr24555245iob.0.1697139269837; Thu, 12 Oct 2023 12:34:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697139269; cv=none; d=google.com; s=arc-20160816; b=IXZXBk1f9/H11sCj2jwFvQkZdEBDu3tTkDT2na3TFVQdJbub7ox/3B6j0scp5IbG51 uq2h1nv17a9BaVqFeLo9AmY6WF6KXFibrdpzuroXSce5DPPIXcQpib8HIUQfUj2raktJ jCeL9XamWPZtUghgrbR6jcQlK5/rIzIk6NyuFt2LP7Iog1pkJYa+pHFyvHjrdvLiB85V tsJ0HOVaokni8BoiHjKD0irZq28JGCGx5MyOIiRvdY61kD0zEc4iN2B+yJixgRHQaVpg Pt84/Gz5tNh8C+5oLd/rRLyGWy6l9w8m2MMqgfx/6pGoBJY5HFUj+biqMQ8a3NGkWjJE vzng== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=pT+Yf5AQZYIaRDCSVqHyUluAczPKl7SCfZdcWW+pXxg=; fh=n5S/AR14tYMsjDdXEOPrR3UbxswSa5eTzDqlfcgbnjE=; b=GAy/H9y9AUe7KH8Jvb/Dnq1SjlC8YPjXaY5VJbvkrkhzaXRx12ZJNgVquQSoT1kkJ9 YuT7oFrsrNmmYi1CesBc2lI1I6Y9/i4axTqfbuLaBmn+aqNUVOtcuXjT58yuKxwJ7+0T DAkb7s7YCXTygiHQF7gGL0m1q4Dyy0QeqFeSHDhgwODeP4ttUW7LrHk3PMaI5sIpdddK S8Y0KW/wxLIn5tjNvAids1SLIFpk1yoABBsgdwNX61XWP94kBo8BtyxGVdzEtdnU096D r0p6imcyfAhuaxltagUFgL/VMg4/mPqIQ0jBvzC+7cFwNCECiL1N+Zj1piW4q0B+xdN+ CJqA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="pVN5/8dY"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:6 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from pete.vger.email (pete.vger.email. [2620:137:e000::3:6]) by mx.google.com with ESMTPS id l13-20020a056a0016cd00b0068e4c3f3ac2si15886084pfc.245.2023.10.12.12.34.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Oct 2023 12:34:29 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:6 as permitted sender) client-ip=2620:137:e000::3:6; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="pVN5/8dY"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:6 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by pete.vger.email (Postfix) with ESMTP id 2426481C98D5; Thu, 12 Oct 2023 12:34:27 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at pete.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1442564AbjJLTdl (ORCPT + 19 others); Thu, 12 Oct 2023 15:33:41 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52684 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1442177AbjJLTcm (ORCPT ); Thu, 12 Oct 2023 15:32:42 -0400 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7DFD0D6 for ; Thu, 12 Oct 2023 12:32:40 -0700 (PDT) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 60244C433B8; Thu, 12 Oct 2023 19:32:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1697139156; bh=ZOE33RJAMWGQJdaU6oZoWkIigfB3nCdV+9LKbJA6ToY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=pVN5/8dYBBcPxYBYK5sFj+GGc37KK72uJ0ciy7QaETHfZIdiT+E1WeOmRFKttX4cW 9kFsb0sl9cT98dC7n14X32mxKbkWo0bKmhESX6GVihwadGyR5B1sdonGFO32/KKZrW 9TtRNvzg7cMqerD7L8nDdadI2rwEmtEFZfj4QzTIqiIo0lVURDe40kL2s5DB8nNK88 hRm9HO/DP3PXaTXJf1Pv8b0QWh/JNL3L5QY0NpufamwICn3MDESufP3nRy/iOjKBS2 0QVa1D5sj1tE1Rh7TcuJgPYmCQezMkW4JPDpYAeS5uXQz+HzgvjIF4Q26WAP4fR6bZ ihhkALCtbHAiQ== Received: by paulmck-ThinkPad-P17-Gen-1.home (Postfix, from userid 1000) id 65D19CE0F15; Thu, 12 Oct 2023 12:32:35 -0700 (PDT) From: "Paul E. McKenney" To: linux-kernel@vger.kernel.org Cc: gwml@vger.gnuweeb.org, kernel-team@meta.com, w@lwt.eu, =?utf-8?q?Thomas_?= =?utf-8?q?Wei=C3=9Fschuh?= , Willy Tarreau Subject: [PATCH nolibc 17/19] tools/nolibc: add support for constructors and destructors Date: Thu, 12 Oct 2023 12:32:31 -0700 Message-Id: <20231012193233.207857-17-paulmck@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: References: MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on pete.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (pete.vger.email [0.0.0.0]); Thu, 12 Oct 2023 12:34:27 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1779579506584999697 X-GMAIL-MSGID: 1779579506584999697 From: Thomas Weißschuh With the startup code moved to C, implementing support for constructors and deconstructors is fairly easy to implement. Examples for code size impact: text data bss dec hex filename 21837 104 88 22029 560d nolibc-test.before 22135 120 88 22343 5747 nolibc-test.after 21970 104 88 22162 5692 nolibc-test.after-only-crt.h-changes The sections are defined by [0]. [0] https://refspecs.linuxfoundation.org/elf/gabi4+/ch5.dynamic.html Signed-off-by: Thomas Weißschuh Acked-by: Willy Tarreau Link: https://lore.kernel.org/lkml/20231007-nolibc-constructors-v2-1-ef84693efbc1@weissschuh.net/ --- tools/include/nolibc/crt.h | 23 +++++++++++++++++++- tools/testing/selftests/nolibc/nolibc-test.c | 17 +++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/tools/include/nolibc/crt.h b/tools/include/nolibc/crt.h index a05655b4ce1d..43b551468c2a 100644 --- a/tools/include/nolibc/crt.h +++ b/tools/include/nolibc/crt.h @@ -13,12 +13,23 @@ const unsigned long *_auxv __attribute__((weak)); static void __stack_chk_init(void); static void exit(int); +extern void (*const __preinit_array_start[])(void) __attribute__((weak)); +extern void (*const __preinit_array_end[])(void) __attribute__((weak)); + +extern void (*const __init_array_start[])(void) __attribute__((weak)); +extern void (*const __init_array_end[])(void) __attribute__((weak)); + +extern void (*const __fini_array_start[])(void) __attribute__((weak)); +extern void (*const __fini_array_end[])(void) __attribute__((weak)); + __attribute__((weak)) void _start_c(long *sp) { long argc; char **argv; char **envp; + int exitcode; + void (* const *func)(void); const unsigned long *auxv; /* silence potential warning: conflicting types for 'main' */ int _nolibc_main(int, char **, char **) __asm__ ("main"); @@ -55,8 +66,18 @@ void _start_c(long *sp) ; _auxv = auxv; + for (func = __preinit_array_start; func < __preinit_array_end; func++) + (*func)(); + for (func = __init_array_start; func < __init_array_end; func++) + (*func)(); + /* go to application */ - exit(_nolibc_main(argc, argv, envp)); + exitcode = _nolibc_main(argc, argv, envp); + + for (func = __fini_array_end; func > __fini_array_start;) + (*--func)(); + + exit(exitcode); } #endif /* _NOLIBC_CRT_H */ diff --git a/tools/testing/selftests/nolibc/nolibc-test.c b/tools/testing/selftests/nolibc/nolibc-test.c index 7e3936c182dc..8da7f15d010e 100644 --- a/tools/testing/selftests/nolibc/nolibc-test.c +++ b/tools/testing/selftests/nolibc/nolibc-test.c @@ -57,6 +57,9 @@ static int test_argc; /* will be used by some test cases as readable file, please don't write it */ static const char *argv0; +/* will be used by constructor tests */ +static int constructor_test_value; + /* definition of a series of tests */ struct test { const char *name; /* test name */ @@ -594,6 +597,19 @@ int expect_strne(const char *expr, int llen, const char *cmp) #define CASE_TEST(name) \ case __LINE__: llen += printf("%d %s", test, #name); +/* constructors validate that they are executed in definition order */ +__attribute__((constructor)) +static void constructor1(void) +{ + constructor_test_value = 1; +} + +__attribute__((constructor)) +static void constructor2(void) +{ + constructor_test_value *= 2; +} + int run_startup(int min, int max) { int test; @@ -630,6 +646,7 @@ int run_startup(int min, int max) 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(constructor); EXPECT_EQ(1, constructor_test_value, 2); break; case __LINE__: return ret; /* must be last */ /* note: do not set any defaults so as to permit holes above */ From patchwork Thu Oct 12 19:32:32 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Paul E. McKenney" X-Patchwork-Id: 152143 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2908:b0:403:3b70:6f57 with SMTP id ib8csp1456371vqb; Thu, 12 Oct 2023 12:33:36 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFZOujNR+Z9YH7WGDRRosrMwOyOOVPx8MRrXpqkBic1Mc688+AtdiyEp7yT3mXNcbaHTl3J X-Received: by 2002:a17:902:e885:b0:1c0:bf60:ba82 with SMTP id w5-20020a170902e88500b001c0bf60ba82mr28237600plg.5.1697139216409; Thu, 12 Oct 2023 12:33:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697139216; cv=none; d=google.com; s=arc-20160816; b=ulwGqanTFeRlLt4WeJJFe/vrjUeQ6xFTgmcs4pMQX2atFw53s5RPHundXHAulBojV2 QEttOFyxzTQR7MtDyFxZlTJ2bSaTsLEReyBLeygV32aOeGo/MLCtKODBbu7uc0tJULFt h22vBHnhQVYh2qaOtD4gmpeHyF41sZIbSZjYhpFq+HkQ119zNeDjo3a7sB0KG1ZUn/y6 E2ouNNO1amgEGa0dIoqxSBqnz7hIwvISIKUHpymo6mqE6OHgTuOGOc5gw/WxG7Mj6GeT 60mLE4gdgv5pCE0I9r+80+BjFhOZ9a7ovFehEcAJVqQGNydUCki6wdiAlV0sMXxrSEhK VNHQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=8/zCFR7CxsUp3hDkkGODZ++lVdUW4j2gVAUQIiQG7+E=; fh=n5S/AR14tYMsjDdXEOPrR3UbxswSa5eTzDqlfcgbnjE=; b=nVUssp4d9N5IMW7g+5R9W1qTxuu5XXslcARds1FV6IJ5VRmbyCNoEGnsyFkVWnId04 f8OpQtZT4rDqTNofo7x0KVXfJzEiMLfSbelMv0L8svIQpo4mPZG8QaaWlmf3iWcy4Oc1 XVBfOrJ12WfpV2kfY0aoYaHvxEZN8f5rFwj10q671bkUxp+CbX2U2rtzxIAbJkhSI1cm AySnOV9w0effD3MeCLTYiTzRekEX3h8c+FY9I5cpqTCb06dn4JZmRsghGiD0FgjrM1Vx 9RZJyy14h/WwJtm/LwItearIgGNpeaNOft5/gPW/oqlY3F9QXEc+w0A47Ac+r/GDTXqH h93g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=SIPjXo00; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id x8-20020a170902ec8800b001c74ae78c7bsi3118966plg.377.2023.10.12.12.33.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Oct 2023 12:33:36 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=SIPjXo00; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id BAD5682881B3; Thu, 12 Oct 2023 12:33:35 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1442715AbjJLTd3 (ORCPT + 19 others); Thu, 12 Oct 2023 15:33:29 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52736 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1442344AbjJLTcl (ORCPT ); Thu, 12 Oct 2023 15:32:41 -0400 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C2E75C9 for ; Thu, 12 Oct 2023 12:32:39 -0700 (PDT) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5F39AC433B9; Thu, 12 Oct 2023 19:32:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1697139156; bh=hun9/RUzoWExp8MgqBBAg7pNHjTsuXi2cQ9T4PCTrTE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=SIPjXo00rB0aSsBaRhnubgdJIZtacb1kR9lPi6VoJilYMFY4/vEcdcg7wGm/Y5/Jq IeS3yyeszMpKEzjnogkUU7MbKPa3PrbpPw2eYC9bvq8ExWIO/E0IRxdeElqcjFPA1Q bmKqTXA7XUO1QWWWKqNV2IRh2hPuzgdzVN/qEz7ZMoQMcIwKMNvylPXUrQeHbQeXhF wQevaSsx3q4CGVXfXEi395vLAFVXarpKAYQRegPkuAdoddoc0DALZ51pHHGKROeomb MaDTqdLF9BZPYOTAvwfnzL7Cywe5NykpQPHSTzNC1NFCBGKD8GHNVLlQpoUd8S1TaX yR55HhuAbs1wg== Received: by paulmck-ThinkPad-P17-Gen-1.home (Postfix, from userid 1000) id 6882FCE0FEC; Thu, 12 Oct 2023 12:32:35 -0700 (PDT) From: "Paul E. McKenney" To: linux-kernel@vger.kernel.org Cc: gwml@vger.gnuweeb.org, kernel-team@meta.com, w@lwt.eu, =?utf-8?q?Thomas_?= =?utf-8?q?Wei=C3=9Fschuh?= , Willy Tarreau Subject: [PATCH nolibc 18/19] selftests/nolibc: use qemu-system-ppc64 for ppc64le Date: Thu, 12 Oct 2023 12:32:32 -0700 Message-Id: <20231012193233.207857-18-paulmck@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: References: MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Thu, 12 Oct 2023 12:33:35 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1779579451208813727 X-GMAIL-MSGID: 1779579451208813727 From: Thomas Weißschuh qemu-system-ppc64 can handle both big and little endian kernels. While some setups, like Debian, provide a symlink to execute qemu-system-ppc64 as qemu-system-ppc64le, others, like ArchLinux, do not. So always use qemu-system-ppc64 directly. Signed-off-by: Thomas Weißschuh Link: https://lore.kernel.org/lkml/20231008-nolibc-qemu-ppc64-v1-1-29e2326e0420@weissschuh.net/ Acked-by: Willy Tarreau --- tools/testing/selftests/nolibc/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/testing/selftests/nolibc/Makefile b/tools/testing/selftests/nolibc/Makefile index 891aa396163d..af60e07d3c12 100644 --- a/tools/testing/selftests/nolibc/Makefile +++ b/tools/testing/selftests/nolibc/Makefile @@ -82,7 +82,7 @@ QEMU_ARCH_arm = arm QEMU_ARCH_mips = mipsel # works with malta_defconfig QEMU_ARCH_ppc = ppc QEMU_ARCH_ppc64 = ppc64 -QEMU_ARCH_ppc64le = ppc64le +QEMU_ARCH_ppc64le = ppc64 QEMU_ARCH_riscv = riscv64 QEMU_ARCH_s390 = s390x QEMU_ARCH_loongarch = loongarch64 From patchwork Thu Oct 12 19:32:33 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Paul E. McKenney" X-Patchwork-Id: 152145 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2908:b0:403:3b70:6f57 with SMTP id ib8csp1456409vqb; Thu, 12 Oct 2023 12:33:41 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGj3G4fXxSytqDBswRojw8WHZ1OAgA3eugvHyeQpBE8C7ytbWMiLqkO8+fMZ/aiEWRWAVLJ X-Received: by 2002:a05:6a20:3d85:b0:163:f945:42c4 with SMTP id s5-20020a056a203d8500b00163f94542c4mr28884477pzi.1.1697139221271; Thu, 12 Oct 2023 12:33:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697139221; cv=none; d=google.com; s=arc-20160816; b=CTwn8Oz4WvBeM/IRJZC+yJ6BBAgvVLnEm/Urm+ldCImJiIpTrsAZcTox0EKWbz0IVC NTQC3wll50V3qx+GU/mFfxmVcF+SqfE5chEngaLCzuLSdMiN/Jgi5pzx6zO2mAhQJFjr D9wKIurNqfZ9St6MCRk+Es4m2PtXpD4QJFW7z4/ttlZJZDSOXfMF9vUoc9waxnowo4t+ PY04nad2pEMznTUylk2cngKwgVWKCncVRh4ApPgdCB0TFGwaOytTAAhp5eC4bkkVWjnR j5o0rQGCVD9p5K2m/FYvs0KOJ6/nokeHOCMwQQ9+LGO+8wp3NeGFAZJBlBJx6U0KXQtN g4pw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=LdKfDPRFjeWUF+1bboAwIUwdKhU6hno0HHoXmTRbv8s=; fh=n5S/AR14tYMsjDdXEOPrR3UbxswSa5eTzDqlfcgbnjE=; b=nANqyg+N54GyVT7B8HrngurNf8ZixFKnFaRte/FLUdPpkJ7mlxdg8XixLqVn8zFhb1 kBoOYBJH1ZEF+/XKysqQYJAWvYAdfaMsRELebBc6vYUkzi1luVuybBVeOL/6PIxrAr+z i1x570AolP/MaU5J+uE53s1OzvGxLOApV/K59zOmw8K2jARcMzW6HoEAB9ek80wweSEH DS/YznW77ZzvMVHNgbPqng1MXzqqtJbCeqaJrICTsowmRjoK6W2FegJdAFztl0b4SC5m HoIdq+EsGSKL8S1TYA8FqgRwNAYM5WK+/46r34xbugkRKEprShrj+/+ZutO2Pm9hmnQe mzfg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=OI0iPa9X; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from snail.vger.email (snail.vger.email. [2620:137:e000::3:7]) by mx.google.com with ESMTPS id r5-20020a17090aad0500b0027d04b581dcsi2890927pjq.72.2023.10.12.12.33.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Oct 2023 12:33:41 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) client-ip=2620:137:e000::3:7; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=OI0iPa9X; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 15C17828819E; Thu, 12 Oct 2023 12:33:40 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1442549AbjJLTde (ORCPT + 19 others); Thu, 12 Oct 2023 15:33:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52752 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1442351AbjJLTcl (ORCPT ); Thu, 12 Oct 2023 15:32:41 -0400 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 08073E6 for ; Thu, 12 Oct 2023 12:32:40 -0700 (PDT) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5F1F2C433B7; Thu, 12 Oct 2023 19:32:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1697139156; bh=9AFyv1HVznQ9AGg8+z1evlIaZ1Y1s//n3eBUqbBd0OU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=OI0iPa9XTvj/R2EO+FAijS+buu0vUftTld0QPQNLukmPbr1X7g1Bug8ZNrXwXrmd7 2iI7bz4ycOXbkK7Ch8gzBAy7fFUHXG4iv7HFWM1fdkonvkdTZLwlZoRZTp8R6Sn1Kn LTlAwVEPqMvjbZqElhLBlMKSEsdrb0vn9f0Ptog3Weh9KHNMXwSaup0HRsdwyA2y+K AJIMTtjcmHtU2dHLco+x3QuRYNYoqsPdKOmT2mnzPu7bA9ggSoVGvH4h02/dfkGs7Q SInBzRTyPIIcH4XgirxvfeeUNLSm0kiiE8d4zVzVymazvs14LnDdajfnlTR1qs34yp ic8flnuhLXNqw== Received: by paulmck-ThinkPad-P17-Gen-1.home (Postfix, from userid 1000) id 6AFD6CE1059; Thu, 12 Oct 2023 12:32:35 -0700 (PDT) From: "Paul E. McKenney" To: linux-kernel@vger.kernel.org Cc: gwml@vger.gnuweeb.org, kernel-team@meta.com, w@lwt.eu, =?utf-8?q?Thomas_?= =?utf-8?q?Wei=C3=9Fschuh?= , Willy Tarreau Subject: [PATCH nolibc 19/19] selftests/nolibc: add tests for multi-object linkage Date: Thu, 12 Oct 2023 12:32:33 -0700 Message-Id: <20231012193233.207857-19-paulmck@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: References: MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Thu, 12 Oct 2023 12:33:40 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1779579456132251177 X-GMAIL-MSGID: 1779579456132251177 From: Thomas Weißschuh While uncommon, nolibc executables can be linked together from multiple compilation units. Add some tests to make sure everything works in that case. Signed-off-by: Thomas Weißschuh Link: https://lore.kernel.org/lkml/20231012-nolibc-linkage-test-v1-1-315e682768b4@weissschuh.net/ Acked-by: Willy Tarreau --- tools/testing/selftests/nolibc/Makefile | 12 ++++----- .../selftests/nolibc/nolibc-test-linkage.c | 26 +++++++++++++++++++ .../selftests/nolibc/nolibc-test-linkage.h | 9 +++++++ tools/testing/selftests/nolibc/nolibc-test.c | 4 +++ 4 files changed, 45 insertions(+), 6 deletions(-) create mode 100644 tools/testing/selftests/nolibc/nolibc-test-linkage.c create mode 100644 tools/testing/selftests/nolibc/nolibc-test-linkage.h diff --git a/tools/testing/selftests/nolibc/Makefile b/tools/testing/selftests/nolibc/Makefile index af60e07d3c12..a0fc07253baf 100644 --- a/tools/testing/selftests/nolibc/Makefile +++ b/tools/testing/selftests/nolibc/Makefile @@ -171,17 +171,17 @@ sysroot/$(ARCH)/include: $(Q)mv sysroot/sysroot sysroot/$(ARCH) ifneq ($(NOLIBC_SYSROOT),0) -nolibc-test: nolibc-test.c sysroot/$(ARCH)/include +nolibc-test: nolibc-test.c nolibc-test-linkage.c sysroot/$(ARCH)/include $(QUIET_CC)$(CC) $(CFLAGS) $(LDFLAGS) -o $@ \ - -nostdlib -nostdinc -static -Isysroot/$(ARCH)/include $< -lgcc + -nostdlib -nostdinc -static -Isysroot/$(ARCH)/include nolibc-test.c nolibc-test-linkage.c -lgcc else -nolibc-test: nolibc-test.c +nolibc-test: nolibc-test.c nolibc-test-linkage.c $(QUIET_CC)$(CC) $(CFLAGS) $(LDFLAGS) -o $@ \ - -nostdlib -static -include ../../../include/nolibc/nolibc.h $< -lgcc + -nostdlib -static -include ../../../include/nolibc/nolibc.h nolibc-test.c nolibc-test-linkage.c -lgcc endif -libc-test: nolibc-test.c - $(QUIET_CC)$(HOSTCC) -o $@ $< +libc-test: nolibc-test.c nolibc-test-linkage.c + $(QUIET_CC)$(HOSTCC) -o $@ nolibc-test.c nolibc-test-linkage.c # local libc-test run-libc-test: libc-test diff --git a/tools/testing/selftests/nolibc/nolibc-test-linkage.c b/tools/testing/selftests/nolibc/nolibc-test-linkage.c new file mode 100644 index 000000000000..5ff4c8a1db2a --- /dev/null +++ b/tools/testing/selftests/nolibc/nolibc-test-linkage.c @@ -0,0 +1,26 @@ +/* SPDX-License-Identifier: GPL-2.0 */ + +#include "nolibc-test-linkage.h" + +#ifndef NOLIBC +#include +#endif + +void *linkage_test_errno_addr(void) +{ + return &errno; +} + +int linkage_test_constructor_test_value; + +__attribute__((constructor)) +static void constructor1(void) +{ + linkage_test_constructor_test_value = 2; +} + +__attribute__((constructor)) +static void constructor2(void) +{ + linkage_test_constructor_test_value *= 3; +} diff --git a/tools/testing/selftests/nolibc/nolibc-test-linkage.h b/tools/testing/selftests/nolibc/nolibc-test-linkage.h new file mode 100644 index 000000000000..c66473070d73 --- /dev/null +++ b/tools/testing/selftests/nolibc/nolibc-test-linkage.h @@ -0,0 +1,9 @@ +/* SPDX-License-Identifier: GPL-2.0 */ + +#ifndef _NOLIBC_TEST_LINKAGE_H +#define _NOLIBC_TEST_LINKAGE_H + +void *linkage_test_errno_addr(void); +extern int linkage_test_constructor_test_value; + +#endif /* _NOLIBC_TEST_LINKAGE_H */ diff --git a/tools/testing/selftests/nolibc/nolibc-test.c b/tools/testing/selftests/nolibc/nolibc-test.c index 8da7f15d010e..2f10541e6f38 100644 --- a/tools/testing/selftests/nolibc/nolibc-test.c +++ b/tools/testing/selftests/nolibc/nolibc-test.c @@ -41,6 +41,8 @@ #endif #endif +#include "nolibc-test-linkage.h" + /* for the type of int_fast16_t and int_fast32_t, musl differs from glibc and nolibc */ #define SINT_MAX_OF_TYPE(type) (((type)1 << (sizeof(type) * 8 - 2)) - (type)1 + ((type)1 << (sizeof(type) * 8 - 2))) #define SINT_MIN_OF_TYPE(type) (-SINT_MAX_OF_TYPE(type) - 1) @@ -647,6 +649,8 @@ int run_startup(int min, int max) 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(constructor); EXPECT_EQ(1, constructor_test_value, 2); break; + CASE_TEST(linkage_errno); EXPECT_PTREQ(1, linkage_test_errno_addr(), &errno); break; + CASE_TEST(linkage_constr); EXPECT_EQ(1, linkage_test_constructor_test_value, 6); break; case __LINE__: return ret; /* must be last */ /* note: do not set any defaults so as to permit holes above */