Received: by 2002:a05:7412:b10a:b0:f3:1519:9f41 with SMTP id az10csp2127949rdb; Sun, 3 Dec 2023 04:01:31 -0800 (PST) X-Google-Smtp-Source: AGHT+IEY/V0vh6N6d7bhHuhq9OIAx3+Qr0O0QfYcW7IDkTHmgcGZDHTR0e2VdHdaFSHj/7CcGfxf X-Received: by 2002:a05:6358:c3a2:b0:170:17eb:204e with SMTP id fl34-20020a056358c3a200b0017017eb204emr2444046rwb.55.1701604890924; Sun, 03 Dec 2023 04:01:30 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701604890; cv=none; d=google.com; s=arc-20160816; b=IsjlY3Ty+2mP2THD/twCEXIm3mI6xPOWa0b+mXjG2VgSu1Z77O1UWcH0xkik+CMSuy qeBfOwqRMz9nQgXcV+rEbii6Q7E9Upyurltg4mAkoXvPPJ8bB9i3kg7e6FVIsDcB3TTL xui9GI+zPAkV6sP+g7vtG99WBJm1g/NNitcU7wR7cLqNVu/0OB26FQwKiEent5EoLRyZ PeuWj3gOszHtFFuoqeevKRN3MWWV9OBmjKoEZ1SDg2XN95BTZeTdKIVNRsJTPXGFG805 U5aoOIq80NPL0UZLVjab1oAOIutG2A7UZz66nybZCt3uZ6RleCc5HXw64iy0+mSlv0BD oKfg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=5gdIS2sfJZGp3+kJnAp+EBCCsp1zJXZRNGW17UzEhN8=; fh=kk+rJ89azzFUCU7MNTLkncZ/uAcla9yT8/V8HtYcJag=; b=L1RJ5iiQbpsbgxDgeGL0q48WjwI7BM+beI9PE1ZoKi98+W5uCJy6GDk0mDDGNLX4qr D/RLgPAQWTFa1M0dldb4n6VukLHZ6ACqDpxKSecqu7Jhe+NKWOr6o17bTuayNeNN4Nz3 k4CVHt060rtku342DbpWSMnRMOFSj81/YtDNvnTPPYbO6K5ulCHfWqi+lFMladiMTcDh wxyrEV5BfaSjFuM/7pJWsfUUKugNMnUW6CltUYsE2y/lWY39dVS0mVE0VeLQqyA1V98h /p8PdYQ+k5Wv/DtbhEsw9OfYMeDFLJ8qWfLRUFtYEaCXiJmy2PTOjknmzVOilTViuXNU UgUw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=mah5niDT; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from fry.vger.email (fry.vger.email. [2620:137:e000::3:8]) by mx.google.com with ESMTPS id 8-20020a17090a08c800b0028681add0c4si1486162pjn.151.2023.12.03.04.01.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 03 Dec 2023 04:01:30 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) client-ip=2620:137:e000::3:8; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=mah5niDT; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by fry.vger.email (Postfix) with ESMTP id 7E34E807F499; Sun, 3 Dec 2023 04:01:05 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at fry.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231744AbjLCMAr (ORCPT + 99 others); Sun, 3 Dec 2023 07:00:47 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45240 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229548AbjLCMAq (ORCPT ); Sun, 3 Dec 2023 07:00:46 -0500 Received: from mail-wm1-x336.google.com (mail-wm1-x336.google.com [IPv6:2a00:1450:4864:20::336]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E8678F2 for ; Sun, 3 Dec 2023 04:00:52 -0800 (PST) Received: by mail-wm1-x336.google.com with SMTP id 5b1f17b1804b1-40c09f4814eso3457705e9.1 for ; Sun, 03 Dec 2023 04:00:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1701604851; x=1702209651; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=5gdIS2sfJZGp3+kJnAp+EBCCsp1zJXZRNGW17UzEhN8=; b=mah5niDTCH4sSScuc+XhP9rXh2WcB/DLe05ppca/QUWmSF+DOHe+M8SVIcD/PUbgc6 UhoVmkhl4+4GOxEYA9C44CWvYSHBomgk5M3ONvpu7qISuqga5aWaFB0ii0YhvVzV6obL x5q/0Iw7ECPuKQT/yjMtKyzeSyRg8heLQRIuwFOWSvFGcAS8dJtzB5KAK00OzPBgRDOt 8yMkg+2J/3DRvG3ShOz1EsUbUwwqizjPKq28Ugio0Equk8keEAZtoqdbbzyYlaosLcwZ pesUNqp4/7vtY4Eq4nSMIKJqnL+MqrGGey2Q/HbPKsVL6zpwp1EG64PSyHHpq+igr0rh USCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701604851; x=1702209651; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=5gdIS2sfJZGp3+kJnAp+EBCCsp1zJXZRNGW17UzEhN8=; b=QBJwG/oWqZIGwzd/rjeWgiQxySI6V4+iAwaP2PeHuIMFPq6fx/1fUxyf7WaJqY3SW3 +MtTAjj51qJn7rM0t47uXj0F9CgDwti2c+P8dSDkA8rIeE82Y49vbjhFRqDXX+EH8+SV 7j+F1gzWlRXdDYt0+OCIdgiv7Yi8Vt3/BCKhAaiaqITwSoCE1pXIfVfFcxAIZJQB/kiP /ez6xwFB9nq0KKB4zxlkxe/sPjUcAFq/vclMTQ38dWF6YYQzhjLbrFhtl6+lt8FN73zd q4Zp4TFxMMse94/Ja7Hf06GgDsLcwKVr++gc7nmViEdje4dT3Ney7PftM9Xy6f9NJbqD vjQQ== X-Gm-Message-State: AOJu0Ywao5rL+wxSrxELIfIJCymRg+uPNMGPWdbaljw5fDwu45mKHB7p JFxp/RCyQQOJvPYhmPhB4gwIJw81Kw== X-Received: by 2002:a05:600c:2a50:b0:40b:5e21:dd40 with SMTP id x16-20020a05600c2a5000b0040b5e21dd40mr1538414wme.110.1701604850894; Sun, 03 Dec 2023 04:00:50 -0800 (PST) Received: from p183 ([46.53.252.219]) by smtp.gmail.com with ESMTPSA id m12-20020a17090607cc00b009ff783d892esm4110531ejc.146.2023.12.03.04.00.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 03 Dec 2023 04:00:50 -0800 (PST) Date: Sun, 3 Dec 2023 15:00:48 +0300 From: Alexey Dobriyan To: Willy Tarreau Cc: Thomas =?utf-8?Q?Wei=C3=9Fschuh?= , linux-kernel@vger.kernel.org Subject: Re: [PATCH] nolibc: optimise _start() on x86_64 Message-ID: <4d12b353-7417-4776-90de-0f04462cc221@p183> References: <38183c29-9b7f-4960-8702-d71ce816cf80@p183> <20231202132359.GA15040@1wt.eu> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20231202132359.GA15040@1wt.eu> X-Spam-Status: No, score=-0.6 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on fry.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 (fry.vger.email [0.0.0.0]); Sun, 03 Dec 2023 04:01:05 -0800 (PST) On Sat, Dec 02, 2023 at 02:23:59PM +0100, Willy Tarreau wrote: > Hi Alexey, > > On Sat, Dec 02, 2023 at 03:45:13PM +0300, Alexey Dobriyan wrote: > > Just jump into _start_c, it is not going to return anyway. > > Thanks, but what's upper in the stack there ? argc (gdb) break _start (gdb) run (gdb) x/20gx $sp 0x7fffffffdae0: 0x0000000000000004 0x00007fffffffdf33 0x7fffffffdaf0: 0x00007fffffffdf49 0x00007fffffffdf4b 0x7fffffffdb00: 0x00007fffffffdf4d 0x0000000000000000 0x7fffffffdb10: 0x00007fffffffdf4f 0x00007fffffffdf70 0x7fffffffdb20: 0x00007fffffffdf80 0x00007fffffffdfce (gdb) x/s 0x00007fffffffdf33 0x7fffffffdf33: "/home/ad/s-test/a.out" > I'm trying to make sure > that if _start_c returns we don't get a random behavior. Yes, it should segfault executing from very small address. I tested with .intel_syntax noprefix .globl _start _start: ret mov eax, 231 xor edi, edi syscall > If we get a > systematic crash (e.g. 0 always there) that's fine, what would be > annoying would be random infinite loops etc. In the psABI description > (table 3.9) I'm seeing "undefined" before argc, which I don't find > much appealing. > > > Signed-off-by: Alexey Dobriyan > > --- > > > > Also, kernel clears all registers before starting process, > > I'm not sure why > > > > xor ebp, ebp > > > > was added. > > Hmmm psABI says: > > Only the registers listed below have specied values at process entry: > > %rbp The content of this register is unspecied at process initialization > time, but the user code should mark the deepest stack frame by setting > the frame pointer to zero. > > %rsp The stack pointer holds the address of the byte with lowest address > which is part of the stack. It is guaranteed to be 16-byte aligned at > process entry. > > %rdx a function pointer that the application should register with atexit (BA_OS). > > Thus apparently it's documented as being our job to clear it :-/ I meant, ELF loader clears all registers except rsp and aligns the stack to 16 bytes. There were problems with stack aligning, but registers, I think, were always zeroed.