From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2056.outbound.protection.outlook.com [40.107.20.56]) by sourceware.org (Postfix) with ESMTPS id C609B3858C53 for ; Wed, 13 Apr 2022 08:09:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org C609B3858C53 Received: from AS8PR04CA0115.eurprd04.prod.outlook.com (2603:10a6:20b:31e::30) by PAXPR08MB7060.eurprd08.prod.outlook.com (2603:10a6:102:1df::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5144.29; Wed, 13 Apr 2022 08:09:53 +0000 Received: from AM5EUR03FT050.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:31e:cafe::73) by AS8PR04CA0115.outlook.office365.com (2603:10a6:20b:31e::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5164.18 via Frontend Transport; Wed, 13 Apr 2022 08:09:53 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM5EUR03FT050.mail.protection.outlook.com (10.152.17.47) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5164.19 via Frontend Transport; Wed, 13 Apr 2022 08:09:52 +0000 Received: ("Tessian outbound 9613c00560a5:v118"); Wed, 13 Apr 2022 08:09:52 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: bb1d7b4a2a1f7b9a X-CR-MTA-TID: 64aa7808 Received: from c61670daf9be.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 9CA7DC54-5667-401D-A1FD-D3626D8D9817.1; Wed, 13 Apr 2022 08:09:45 +0000 Received: from EUR04-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id c61670daf9be.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Wed, 13 Apr 2022 08:09:45 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TxoU++3dYwRRscvsHZHZMZCk6XgiPRmQy31pdN3gxDPpnmrtlmmDZqBfTU0PAhMO+aZuWIkbmlEom+OqfGsclN39DUxYCT43fUuherYjNPcdmgvSnPu7XY9Ks233IV1wigAmWUBDlAUMpTL9EvaGMg+dZbhYan++LDwdBmZCz0Hc15ft2bm9w1uUWn4m1bdDapw+hl6kcPoz/GZQU8DV6dvCdeV/QUa20qGxwtUsSX5dLeFpODKmnrdmfZkmwza7bfQ8Oa5NYL1NfBvlTzbe2AyuYb3Cdn9s2fycX3Dtcp/KHWPpOv2X8daFgmKtfH9LL9MtdvIwaC+HQJ+J1o5JVg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Fd83iMR2DHBGMPY1qTS162JPOMqr9loqqvznjOrqyF4=; b=kqHq7KDD+AQ11X4SeMxqqKLEKnpGVDApCIlt/ViMu90j4rFLps0flZ/d1tF9ebULG48rsCXDxCXcYYtYH4On0PwG6beTXlZ7GtMt1nm3UoJcxNVvfzCrZS2GK94ql79PT4Ub1uzZt7rakpluRz3EBHba7mVD4YdqksdErgU+YkdnRPQTfm3HO7gnicJ7NGBPJuykG1ZOsMLg8gRePxp0aNCgszeuhMVPYXdy5PdO6ZjPutwlOW8tCC2sePlhcj4cz2E4IjtgY0CAJzjsb8XD6BEWPHt494HlCU/55tSNy4MNp6JQtRCmdCAA7jVnxcSo8kHefCM2K3yvKlrUkX3vJA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from DB9PR08MB7179.eurprd08.prod.outlook.com (2603:10a6:10:2cc::19) by AM9PR08MB7088.eurprd08.prod.outlook.com (2603:10a6:20b:41c::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5144.29; Wed, 13 Apr 2022 08:09:42 +0000 Received: from DB9PR08MB7179.eurprd08.prod.outlook.com ([fe80::6092:f7f0:3af2:fbca]) by DB9PR08MB7179.eurprd08.prod.outlook.com ([fe80::6092:f7f0:3af2:fbca%6]) with mapi id 15.20.5144.030; Wed, 13 Apr 2022 08:09:41 +0000 Date: Wed, 13 Apr 2022 08:09:27 +0000 From: Szabolcs Nagy To: Florian Weimer Cc: Szabolcs Nagy via Libc-alpha Subject: Re: [PATCH 2/3] aarch64: Use generic argv adjustment in ld.so [BZ #23293] Message-ID: References: <6b8ed2f8c240e8d2ee4386e423a4765c39aa56ef.1649767418.git.szabolcs.nagy@arm.com> <877d7u75ms.fsf@oldenburg.str.redhat.com> Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <877d7u75ms.fsf@oldenburg.str.redhat.com> X-ClientProxiedBy: LO2P265CA0193.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:9e::13) To DB9PR08MB7179.eurprd08.prod.outlook.com (2603:10a6:10:2cc::19) MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: 7f189764-cca3-4f7b-4978-08da1d24fd26 X-MS-TrafficTypeDiagnostic: AM9PR08MB7088:EE_|AM5EUR03FT050:EE_|PAXPR08MB7060:EE_ X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: CnTyYuRoUSmxGiimE0bcLqSkXerbgjWatDsa9Tdqyw7bQtB2m0XjDMnNynIGuB26W8GtGDTY/rWNkuIr+j+8iMHMRdWie9Y7tLRNRAo/H0Q9GLK+c4UvkVGVzEfNMUXrhKfFtLqSYTjqIZgsyFHsXEUwIduViC8Dc7nSypLNW1dMmNPx5nzgGQZbNa4yWy08Zgcl/9nuqWkYvSNp4oc28vywG5fZjqOX3j8+mSwlcWZZ9sEgEzTNMexWJI4CsM+MXYjLq5+udlPIEHMQKAsDrp4CBYoLr1krOjT0F/V3vt6+5nrJSE9qJbk8F0c+OvnzL0lSJHmVkHZBQHZGawLNMbYNPOn9QfjgnLMKZLjyHwneZNaPKAwgtoeuvKnZKCOeylYGFRdtAdTcFWiVVXxAz3XROCqN2OCBGuCx4iM7bgZ6RahzC4dXg3jnHuiN1V75sXtdX+olj/FtasEKhFpfCn1DM0Tj2ByHLRaNQN92ubszUYMzzmhvd5bt0G5QhjnHPaRw+axjYClgCsv5ene3jtlH4V+l6oFKQI+rulGH2hIJuypNHqH9zJJHPL+M/XxK8yRBrz0GyugUmffVEfkmpcShNi8yU7JyEzj7LBLFbdYoYydvqznxhve6EFrlwdtVGjlBKy9ZjFX3UmwSogmUdAJPAcAy1rG5h2oWiTzYyX20etjT4qNe8OqOEH3rFDlMW+5/SkStLpm8KUFml7o8Fg== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB9PR08MB7179.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(6486002)(86362001)(4326008)(36756003)(498600001)(6916009)(8936002)(38100700002)(186003)(2616005)(26005)(66556008)(66476007)(8676002)(66946007)(83380400001)(6512007)(6506007)(6666004)(2906002)(5660300002)(44832011)(41533002)(67856001); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR08MB7088 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM5EUR03FT050.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 276d3771-9612-49d2-4953-08da1d24f674 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Q5JDzc8lBVEcS9upOSXUQwytzh/F17JqfmMizVY/QL9xBKj36dpt2EA4zVpNlllmvY96e4iROQaWgQgM4fph0pwu/CljW7enuirSsLTuPcHuyqwYbIeYC3AO8zWvbl6mEJ6FmiBWHSRpjBXhkDEPeZPjCDRnLyh9D9vzaqUJHwUB1tQJ29UYMOY/QJKohyC3Qpyzjqa8opssZdOn9wPqwRfUt54V53bt8AfQoNGfGs2PHccMlJXRnLt/5Mydz/Gxj6X2PiGJTZm5FmLLF1AkafTcAIfq+kyaydkMv3mLeqTYAqNBgQS7Dt+MTPHAdTsnKYbb706+LYXvVVfFKFtYwtOKbtl791lqMrHZcTCQMwx0qNf+IUdutcZuY9l8bYcVIZB+rb+vIZZkwqVQiAdDL/XMz8Mj4j5EF+t9HQYXGeQBVqyCO5Bbr5CrG8MUZ1TtMsjs8JzR6UiNZ8OJCEZFCpJBA3yyj7VLLlN4X2GXkr1+JkzjHjHFAZV2fC8dBSmVIEF6Zg2eF1nxGUNoTqZ0hqrDO6fZ1loJHzoxbyPIBLlOXU2NCwfe3tSGxcz2qxFxon3c+a08jPpN+mnLelvKvfp/P2bjPCXPH1id/kNmlLZkcw3mK4NhgF+LoQ8pbBuQMYMwVeaidVQJG7qv/ohFv3calTG8RRQzv5IRjDQ07og5EzHPQqizw/YNsuqMwm1Fdv/ageK97tuoLLG2Zn2ZvqhJ4Z6hd0zEywkM+U2nNVQ= X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(13230001)(4636009)(36840700001)(40470700004)(46966006)(83380400001)(81166007)(6512007)(316002)(47076005)(86362001)(8936002)(2906002)(5660300002)(44832011)(36756003)(36860700001)(6506007)(6666004)(6486002)(26005)(336012)(82310400005)(40460700003)(356005)(70206006)(70586007)(4326008)(508600001)(6862004)(186003)(8676002)(2616005)(41533002)(67856001); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Apr 2022 08:09:52.9050 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7f189764-cca3-4f7b-4978-08da1d24fd26 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: AM5EUR03FT050.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR08MB7060 X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) 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-List-Received-Date: Wed, 13 Apr 2022 08:09:58 -0000 The 04/12/2022 16:12, Florian Weimer wrote: > * Szabolcs Nagy via Libc-alpha: > > > A seemingly simpler approach is to deal with unaligned sp in crt1.o, > > i.e. align sp in the entry point of the exe before __libc_start_main > > and pass unaligned sp from ld.so after updating argc (like it is done > > on x86), however this is not a backward compatible solution, new ld.so > > would not work with old exe on targets where old crt1 does not align. > > I do not understand this comment. Main executable crt1 runs after this > code in ld.so. ld.so has a custom crt1 equivalent in a > assembler fragment. i mean now the entire set of argv, env, auxv is moved in memory so we can keep sp as is. instead we could bump sp such that the first few argv is dropped. the only thing needed for that to work is to handle the unaligned sp in the _start code of the exe (sp can be immediately aligned down after saving it into some other register). however aligned sp at entry is now abi. (the elf entry does not have to follow the c call abi so i think it could have been otherwise). > > + argv = (char **) (sp + 1); /* Necessary aliasing violation. */ > > + p = sp + _dl_skip_args; > > + /* Shuffle argv down. */ > > + do > > + *++sp = *++p; > > + while (*p); > > *p != NULL? > will fix these. > This looks like a memmove. Maybe this will need > -fno-tree-loop-distribute-patterns in the future? > > > + /* Shuffle envp down. */ > > + do > > + *++sp = *++p; > > + while (*p); > > Likewise. > > > + auxv = (ElfW(auxv_t) *) (sp + 1); /* Necessary aliasing violation. */ > > + /* Shuffle auxv down. */ > > + void *a, *b; /* Use a pair of pointers for an auxv entry. */ > > + do > > + { > > + a = *++p; > > + b = *++p; > > + *++sp = a; > > + *++sp = b; > > + } > > + while (a); > > Likewise. note: technically it should be (auxp->a_type != 0) but i wanted to avoid dealing with elfxx_auxv_t while moving auxv. > > + > > + /* Update globals in rtld. */ > > + _dl_argv = argv; > > + _environ = argv + argc + 1; > > + GLRO(dl_auxv) = auxv; > > + /* No longer need to skip args. */ > > + _dl_skip_args = 0; > > +} > > +#endif > > Maybe we can remove _dl_skip_args completely? it can be removed if all targets use this adjustment code. but e.g. x86_64 ld.so _start just bumps sp up by _dl_skip_args and then aligns sp down in the _start of the exe. i'm not against changing this (x86_64 would work too with arg adjustment and generic code is better than custom solutions)