From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-oi1-x236.google.com (mail-oi1-x236.google.com [IPv6:2607:f8b0:4864:20::236]) by sourceware.org (Postfix) with ESMTPS id BF1A53846060 for ; Fri, 10 Jun 2022 12:22:21 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org BF1A53846060 Received: by mail-oi1-x236.google.com with SMTP id v143so12595920oie.13 for ; Fri, 10 Jun 2022 05:22:21 -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:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=E//ybMPe60M6qxmkVf4iocizBNM1N04IkilD23506vc=; b=oMSkHlGb0iVdU/Mt8NG7gBm0GQVW24lpWjUvyZWRkaeI9yBRvgEFLfB5PGGMq1yo2f 4cjbucMdX9ugupHKE0JVnOCPC+XriSOVyU0GgY1BSlrAVmG+jv88tvUcMyQWnQ5Q1zHx xZZGBRoImztBFvg10xNySntFjLpGCJIhzRsj/QEMeWPb07z+Tn3MTUSmUaiIR0lDNbwK canho5GPLI2W4dF83Wq/7ebD4D13hc/sWHz1YBIWI6WfQRTQl9PE7wUYSPgWtOWRmOpe oad6SIeYr/fN3IWOBSuXdvndlxaVGK0DPPJK9UOVGxdXWcq6v8b4fdI5Xa8PATZ9FSBZ R1eQ== X-Gm-Message-State: AOAM53046gvsFT9mPTTSKViaI9YglW0p66c7t2BYi1NbTBMqM3OVd7iC C8oo9jzItXy2mqVIlFeJIZAKEbM4FdXPgQ== X-Google-Smtp-Source: ABdhPJyAwlTKzsFFnhx2bzkWwY6kX5ctctTNFwgddlTE6/WRvDqpebCm4/7hI7XKP/H74YnZbD3f9g== X-Received: by 2002:aca:da85:0:b0:32e:b063:2451 with SMTP id r127-20020acada85000000b0032eb0632451mr4212903oig.159.1654863740741; Fri, 10 Jun 2022 05:22:20 -0700 (PDT) Received: from birita.. ([2804:431:c7cb:a613:818b:b86c:a3f8:d455]) by smtp.gmail.com with ESMTPSA id j22-20020a056808035600b0032e3cca8561sm9799954oie.21.2022.06.10.05.22.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Jun 2022 05:22:20 -0700 (PDT) From: Adhemerval Zanella To: libc-stable@sourceware.org Cc: Carlos O'Donell Subject: [COMMITTED 2.34,2.35] nios2: Remove _dl_skip_args usage (BZ# 29187) Date: Fri, 10 Jun 2022 09:22:15 -0300 Message-Id: <20220610122215.525429-1-adhemerval.zanella@linaro.org> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-12.9 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-stable@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-stable mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Jun 2022 12:22:23 -0000 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 with qemu-user that arguments are correctly passed on both constructors and main program. Reviewed-by: Carlos O'Donell (cherry picked from commit 4868ba5d257a7fb415674e79c4ae5a3af2827f55) --- NEWS | 1 + sysdeps/nios2/dl-machine.h | 50 ++++++++------------------------------ 2 files changed, 11 insertions(+), 40 deletions(-) diff --git a/NEWS b/NEWS index fdd46be860..04fe72b5f6 100644 --- a/NEWS +++ b/NEWS @@ -102,6 +102,7 @@ The following bugs are resolved with this release: [29097] time: fchmodat does not handle 64 bit time_t for AT_SYMLINK_NOFOLLOW [29165] libc: [Regression] broken argv adjustment + [29187] dynamic-link: [regression] broken argv adjustment for nios2 [29203] libc: daemon is not y2038 aware [29204] libc: getusershell is not 2038 aware [29207] libc: posix_fallocate fallback implementation is not y2038 diff --git a/sysdeps/nios2/dl-machine.h b/sysdeps/nios2/dl-machine.h index 430ca5d7ae..47b3f6acd7 100644 --- a/sysdeps/nios2/dl-machine.h +++ b/sysdeps/nios2/dl-machine.h @@ -128,53 +128,23 @@ _start:\n\ ldw r8, %call(_dl_nios2_get_gp_value)(r22)\n\ callr r8\n\ mov gp, r2\n\ -\n\ - /* Find the number of arguments to skip. */\n\ - ldw r8, %got(_dl_skip_args)(r22)\n\ - ldw r8, 0(r8)\n\ \n\ /* Find the main_map from the GOT. */\n\ ldw r4, %got(_rtld_local)(r22)\n\ ldw r4, 0(r4)\n\ \n\ - /* Find argc. */\n\ - ldw r5, 0(sp)\n\ - sub r5, r5, r8\n\ - stw r5, 0(sp)\n\ -\n\ - /* Find the first unskipped argument. */\n\ - slli r8, r8, 2\n\ - addi r6, sp, 4\n\ - add r9, r6, r8\n\ - mov r10, r6\n\ -\n\ - /* Shuffle argv down. */\n\ -3: ldw r11, 0(r9)\n\ - stw r11, 0(r10)\n\ - addi r9, r9, 4\n\ - addi r10, r10, 4\n\ - bne r11, zero, 3b\n\ + /* Load adjusted argc. */\n\ + ldw r2, %got(_dl_argc)(r22)\n\ + ldw r5, 0(r2)\n\ \n\ - /* Shuffle envp down. */\n\ - mov r7, r10\n\ -4: ldw r11, 0(r9)\n\ - stw r11, 0(r10)\n\ - addi r9, r9, 4\n\ - addi r10, r10, 4\n\ - bne r11, zero, 4b\n\ -\n\ - /* Shuffle auxv down. */\n\ -5: ldw r11, 4(r9)\n\ - stw r11, 4(r10)\n\ - ldw r11, 0(r9)\n\ - stw r11, 0(r10)\n\ - addi r9, r9, 8\n\ - addi r10, r10, 8\n\ - bne r11, zero, 5b\n\ -\n\ - /* Update _dl_argv. */\n\ + /* Load adjsuted argv. */\n\ ldw r2, %got(_dl_argv)(r22)\n\ - stw r6, 0(r2)\n\ + ldw r6, 0(r2)\n\ +\n\ + /* envp = argv + argc + 1 */\n\ + addi r7, r5, 1\n\ + slli r7, r7, 2\n\ + add r7, r7, r6\n\ \n\ /* Call _dl_init through the PLT. */\n\ ldw r8, %call(_dl_init)(r22)\n\ -- 2.34.1