From patchwork Thu May 26 16:49:59 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella X-Patchwork-Id: 54422 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 120E83836E52 for ; Thu, 26 May 2022 16:59:50 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 120E83836E52 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1653584390; bh=mIsoBODNxGVyNdhJpp2x04tBplzdzw4kUwmhftlMCUk=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=s0RQ5TAhTJ5Kw3bt/hV6vmLvGbmVEqTEAn4Si6nLMp6ju2bR5h25D77utCMqd/Pc+ d7Pq6UkcKt/FQ1ZILxUSlNGQLTPJbKeunEpk+uSoCN6yHnnerlZcRtr2NdNdBQ6hc5 i28//0egXxxh4uoR+HvuEqQBKn/tUu2VgvcrLh6Q= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-oa1-x31.google.com (mail-oa1-x31.google.com [IPv6:2001:4860:4864:20::31]) by sourceware.org (Postfix) with ESMTPS id B3B2B3836677 for ; Thu, 26 May 2022 16:50:27 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org B3B2B3836677 Received: by mail-oa1-x31.google.com with SMTP id 586e51a60fabf-f2bb84f9edso2827045fac.10 for ; Thu, 26 May 2022 09:50:27 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=mIsoBODNxGVyNdhJpp2x04tBplzdzw4kUwmhftlMCUk=; b=5V3qsusFrpqa2Ow4L1cg0sDET7DppvUt4PQpoEZKEPrc1zl+UFOKEViCBtz+LeLDsw BbW06DcRgCcQTZVchJgforr35KTqZJBtEp7z21kytbUAJc4wmGasRSClioJQ2VltJaqV xdYNLc1/13esv8vvJ5HqWNsiVu5C4cyJENiLOa0CG7AUnnKtZkFjXuMZJLFNFQsT1XIi +YfvByEvklRERedQhr4GafWtdpg83dlJJp0Qvwsil8E3zasJLkyUSw/oGOGV/yv1llvk syXrf49ZX3JF3kfORKdFv06ciUAyyy4FfAhn6sal6M91l4JO8VvzgfirTaSLkKIMVM6L gX3A== X-Gm-Message-State: AOAM531r01fR0XvlCq7o9wv+iHPakSyjM7aN4Zw5iY8ybACWnr0KDpqP 8O6iMCHy3JCBcFdYgXCbph0D3dwo4BwHVg== X-Google-Smtp-Source: ABdhPJzsI13ySoUGJ1DEIoYDI5IXrp1O9jHpTh/7iGLu/CxDojLFWVL9JMscoi4GPltDYTo/SlU29A== X-Received: by 2002:a05:6870:8314:b0:ee:72a1:ce63 with SMTP id p20-20020a056870831400b000ee72a1ce63mr1731874oae.285.1653583827202; Thu, 26 May 2022 09:50:27 -0700 (PDT) Received: from birita.. ([2804:431:c7cb:9f85:b1e1:5370:63bd:a2ac]) by smtp.gmail.com with ESMTPSA id y26-20020a9d461a000000b0060603221255sm802521ote.37.2022.05.26.09.50.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 May 2022 09:50:26 -0700 (PDT) To: libc-alpha@sourceware.org, Szabolcs Nagy Subject: [PATCH 13/17] s390: Remove _dl_skip_args usage Date: Thu, 26 May 2022 13:49:59 -0300 Message-Id: <20220526165003.705355-14-adhemerval.zanella@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220526165003.705355-1-adhemerval.zanella@linaro.org> References: <20220526165003.705355-1-adhemerval.zanella@linaro.org> MIME-Version: 1.0 X-Spam-Status: No, score=-12.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Adhemerval Zanella via Libc-alpha From: Adhemerval Zanella Reply-To: Adhemerval Zanella Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" Since ad43cac44a the generic code already shuffles the argv/envp/auxv on the stack to remove the ld.so own arguments and thus _dl_skip_args is always 0. So there is no need to adjust the argc or argv. Checked on s390x-linux-gnu and s390-linux-gnu. --- sysdeps/s390/s390-32/dl-machine.h | 46 ------------------------------- sysdeps/s390/s390-64/dl-machine.h | 16 ----------- 2 files changed, 62 deletions(-) diff --git a/sysdeps/s390/s390-32/dl-machine.h b/sysdeps/s390/s390-32/dl-machine.h index 4392abb355..b69787b0ad 100644 --- a/sysdeps/s390/s390-32/dl-machine.h +++ b/sysdeps/s390/s390-32/dl-machine.h @@ -186,52 +186,6 @@ _dl_start_user:\n\ # Point %r12 at the GOT.\n\ l %r12,.Ladr0-.Llit(%r13)\n\ ar %r12,%r13\n\ - # See if we were run as a command with the executable file\n\ - # name as an extra leading argument.\n\ - l %r1,_dl_skip_args@GOT(%r12)\n\ - l %r1,0(%r1) # load _dl_skip_args\n\ - ltr %r1,%r1\n\ - je 4f # Skip the arg adjustment if there were none.\n\ - # Get the original argument count.\n\ - l %r0,96(%r15)\n\ - # Subtract _dl_skip_args from it.\n\ - sr %r0,%r1\n\ - # Store back the modified argument count.\n\ - st %r0,96(%r15)\n\ - # Copy argv and envp forward to account for skipped argv entries.\n\ - # We skipped at least one argument or we would not get here.\n\ - la %r6,100(%r15) # Destination pointer i.e. &argv[0]\n\ - lr %r5,%r6\n\ - lr %r0,%r1\n\ - sll %r0,2\n # Number of skipped bytes.\n\ - ar %r5,%r0 # Source pointer = Dest + Skipped args.\n\ - # argv copy loop:\n\ -1: l %r7,0(%r5) # Load a word from the source.\n\ - st %r7,0(%r6) # Store the word in the destination.\n\ - ahi %r5,4\n\ - ahi %r6,4\n\ - ltr %r7,%r7\n\ - jne 1b # Stop after copying the NULL.\n\ - # envp copy loop:\n\ -2: l %r7,0(%r5) # Load a word from the source.\n\ - st %r7,0(%r6) # Store the word in the destination.\n\ - ahi %r5,4\n\ - ahi %r6,4\n\ - ltr %r7,%r7\n\ - jne 2b # Stop after copying the NULL.\n\ - # Now we have to zero out the envp entries after NULL to allow\n\ - # start.S to properly find auxv by skipping zeroes.\n\ - # zero out loop:\n\ - lhi %r7,0\n\ -3: st %r7,0(%r6) # Store zero.\n\ - ahi %r6,4 # Advance dest pointer.\n\ - ahi %r1,-1 # Subtract one from the word count.\n\ - ltr %r1,%r1\n\ - jne 3b # Keep copying if the word count is non-zero.\n\ - # Adjust _dl_argv\n\ - la %r6,100(%r15)\n\ - l %r1,_dl_argv@GOT(%r12)\n\ - st %r6,0(%r1)\n\ # The special initializer gets called with the stack just\n\ # as the application's entry point will see it; it can\n\ # switch stacks if it moves these contents over.\n\ diff --git a/sysdeps/s390/s390-64/dl-machine.h b/sysdeps/s390/s390-64/dl-machine.h index 7a94b3a7a6..74be0552dc 100644 --- a/sysdeps/s390/s390-64/dl-machine.h +++ b/sysdeps/s390/s390-64/dl-machine.h @@ -167,22 +167,6 @@ _dl_start_user:\n\ lgr %r8,%r2\n\ # Point %r12 at the GOT.\n\ larl %r12,_GLOBAL_OFFSET_TABLE_\n\ - # See if we were run as a command with the executable file\n\ - # name as an extra leading argument.\n\ - lghi %r1,_dl_skip_args@GOT\n\ - lg %r1,0(%r1,%r12)\n\ - lgf %r1,0(%r1) # load _dl_skip_args\n\ - # Get the original argument count.\n\ - lg %r0,160(%r15)\n\ - # Subtract _dl_skip_args from it.\n\ - sgr %r0,%r1\n\ - # Adjust the stack pointer to skip _dl_skip_args words.\n\ - sllg %r1,%r1,3\n\ - agr %r15,%r1\n\ - # Set the back chain to zero again\n\ - xc 0(8,%r15),0(%r15)\n\ - # Store back the modified argument count.\n\ - stg %r0,160(%r15)\n\ # The special initializer gets called with the stack just\n\ # as the application's entry point will see it; it can\n\ # switch stacks if it moves these contents over.\n\