From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12olkn2083.outbound.protection.outlook.com [40.92.23.83]) by sourceware.org (Postfix) with ESMTPS id 2B7D63858D28 for ; Tue, 18 Apr 2023 04:52:31 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 2B7D63858D28 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=maskray.me Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=maskray.me ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NHE8WRl0siaiEc8uOZQHSV0Bm9CQG/PekrmVJQB22BD/ljhg7bsOIgQ94jbg0gMr1T5zSYeI4X3fHaLJzhKRs7ptbhoPNimLE8UUT3G1GNsSeaIceCqa8zebCIu3MuOA/expuKw/xjLkOyhJuhOpZtishBEgRqF011zDitaM7b8p1fs4u/rGrkiB7ua7hyrDhia8tvS45fmBOgq7Ax9mZOzdTdD4HPD8fthfF+O0ugcL/zaiPkHh1doSAnnLBmgOYYDvyV8tIZSeJUU11RtwWK1RTrQOhMACYGqRlKIyBtQgtSKI0thDQkhEQRwG7N8NAuKP6EaUvCI6KtJxIeRAZg== 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=rz+veTUhYRRGrLlOfHiLwiQOgEmbH/UCd6wpGmM6VUM=; b=caZnXDUS/525AIzlFkhmanSjV92o5KxL3Kr5cxQm4gb155VKuDQwmv68OKxTZj8fSj/ms6WpRjOpy1bFGv/+sZwSqvjOeBkzumiEepWQnZehwBEdjh8ZYUl69ZN150QbZUg4A9gbeyu2f1HbDgaQ0+MoFTcF+EUO0eZvYp5t+jIOb41cvIlFaqiou91PDJSy9ctVJqAOgxZSRXeOd+W3oVqslbDBuPwy1BO4+S72Ux3Q7+alj4iIyG+lkOuEib7k9xvgAg+u2+Wl9ODL28gkFrBM+rLHZglzEq1L9dor6aosTS+5w8I9XufZq+SGFJPMxdI8dsBdz6kW+D54fxe5wQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none Received: from DS7PR12MB5765.namprd12.prod.outlook.com (2603:10b6:8:74::19) by LV2PR12MB5773.namprd12.prod.outlook.com (2603:10b6:408:17b::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6298.45; Tue, 18 Apr 2023 04:52:28 +0000 Received: from DS7PR12MB5765.namprd12.prod.outlook.com ([fe80::5b4b:77d7:9922:f37e]) by DS7PR12MB5765.namprd12.prod.outlook.com ([fe80::5b4b:77d7:9922:f37e%2]) with mapi id 15.20.6298.045; Tue, 18 Apr 2023 04:52:28 +0000 X-Gm-Message-State: AAQBX9fYui1WBqQag9MWhEv/ggOPVU6lwMGXwKBmhyRNWasGARsBqIRr 2wUY4SIUzp+9UqNBmyvSS8qjUFBgmZcp1cTT4aM= X-Google-Smtp-Source: AKy350YzQjEbH7ReYdugle9xgrQsqTbhiNObwUEUqX+/6uPEU12dtT4nQVR3sAWIIk/bveBppO0RAqLq+9P6M5y6f9Y= X-Received: by 2002:a63:541d:0:b0:50b:eb56:b675 with SMTP id i29-20020a63541d000000b0050beb56b675mr256222pgb.7.1681793546155; Mon, 17 Apr 2023 21:52:26 -0700 (PDT) References: <20221111032740.edekvhgrceu6frws@gmail.com> In-Reply-To: <20221111032740.edekvhgrceu6frws@gmail.com> From: Fangrui Song Date: Mon, 17 Apr 2023 21:52:15 -0700 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: foo (VER_NDX_GLOBAL) and foo@@v1 in one DSO To: binutils@sourceware.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-TMN: [22kHzNZYImf6Cu+LL0S7BjQigQ61d1kL] X-ClientProxiedBy: MW4PR02CA0027.namprd02.prod.outlook.com (2603:10b6:303:16d::32) To DS7PR12MB5765.namprd12.prod.outlook.com (2603:10b6:8:74::19) X-Microsoft-Original-Message-ID: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS7PR12MB5765:EE_|LV2PR12MB5773:EE_ X-MS-Office365-Filtering-Correlation-Id: f9cf3613-721a-42cc-f7a0-08db3fc8b5dd X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: pONaIsVMzgA8QK4O32/8PHahntBxU5Fe6tJbgqveaFdyybFcsN3FOukfGEkGNaHSivzmpRtajQRvn8g+5TD1xFLlGS9k0YBBg5xJTCb64y9lp5sBip4Quem6+l2N6O2QJTGMlI8zr227rFyIeJXPAIUaZShsWoUcSd4FitEM1sEsSneGzAKBGM1nG0bgMFO2cmbk7yDyLqLsE9eBO8lZS8uY47ZexIvCF2AKEKWq5HSJAJpLduUJDhnee5j9no3IMV/kdYex1HniDt2x5ApLess0F38DHJShUU2nJqxwg9/2KMoAB5BgfM36eqajZ8wAFSFLUJBNgsRs+cx0BRp4XQh6hGPvvhvp1XYpQNSZ7mDLUd8sGeibJwTAotomQ/uyjnQsYOX2IANUiowe/qqq2ZtD/AOkJlE8jGUTHQUlO9/RIxp5/LXqn+8MI9zBgTVdyzggljL9+T0M1FPcr+C8TCAln9GhJT1Z9Uz+2MtPoOoTr9bASqPMpl+M3PhzUemI5tWAoqPFf7s+aPV/fqdxTdnWnDLLp2VFT8JjbTtIP6AR4gVSxwoRfG/E3Yd3M/bKxmQjJN5H+DkBXQRd7VklrR4HhWaX/xNTdjMK4VpusEk= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?UDJGWXZaMllXM0RGeUdVVXNiTmdIR3NKZGV5UzFPcjFUNjU5dmhlblFmUHVO?= =?utf-8?B?UlNFSCtYcnd3QmhvNlMya0xaSktveXVHYnA3VkNJK1FxbHZnU2xzcHNPVlJ2?= =?utf-8?B?bzJjVTBBV1U3THRXZGgzSCswZSt6cW1zN2xzc042STN0NVhMaGF3T0l0d0da?= =?utf-8?B?eENuSEdwVWlYWkhJUzZGdGt0ekNMUXhaUjN4QXVFZU0wLzA1MHYyT0hGTUJp?= =?utf-8?B?YzcxQ3ZWYlZYdnR0N21md2huMDloSXpOSnRVdnNkSnRyVzNTdTFnMTlsbDl3?= =?utf-8?B?V2NtWUY4TGw5ZFoxWTFuRmh0VzFadTV3SFJiUmdWQ1Y5OHF0WkxyRzdKVnIv?= =?utf-8?B?V0lpM3JYWGgxbys4c0g3VkpRMlZQRlE3aVFjNlNVMHc3ZG5xTUQwWEd0NjRl?= =?utf-8?B?eVN3V2lJWUVrUTBzdHhLWE9UYm5SaFJjbWljSUs5bXRGdVBIeml0QVlKeTFp?= =?utf-8?B?bXYvQWJrSFhtemh4WUY3OWRzVzVOK3kzTGhmS0pCVnY1K1FicWFwU0RmU0JD?= =?utf-8?B?SUVlNm1hdFgyUHB5Z3V6OE9xc3FtSklVdXlEb2hJYTYyZk9TcHZMaFJTWXQw?= =?utf-8?B?YUViZitxaTIwZFRaMUVGeVNkOGxPc2Z2cWZLcHhGeDJDcTJaZzA4Q1k5UGNM?= =?utf-8?B?MmY5RzZvOXU0RkJwdGpqY2o2ZVNWQmJRTmZqRjU4VFFSZ29kemNwUGVDNEta?= =?utf-8?B?MDJuaFFTQVloOHpKS3ZESXd4T2kzWlkrZkRnbmNSbTN4cVpHWHd5eWtYRVFJ?= =?utf-8?B?R3VwOWZsMGZQcnZNT1lFQUpUajhhQ2R4b0duN3RhRzdybDA0R0d1OWZzUkdv?= =?utf-8?B?d3dwcE0xYkxoNlBraC84dXpaTEVVVktSaWxCQlExdXBNSVRuOUliNkxVS2cy?= =?utf-8?B?WmxpdE1xdjQxZ3l2UTI1SytkMllGODVwRjdYMks0WnEyWVphM29qNEppSklr?= =?utf-8?B?azFXR3ZhVVgzbm8vMHZJUW9DWCtOTHRJWkppVk5Ya3hWZWRHQjlmMHJHNStX?= =?utf-8?B?ZUlnUnp0UW83eHdXb0NYRFcrcEQ1ajRzdEdUM1ZFOWRSQTlPUDhZZ1NRUEJa?= =?utf-8?B?YVNsbVZlRnRZWUNGWklNYjd5QWJwb2FCakpPR0RFQmRKd2kwL0w5T0pJelgw?= =?utf-8?B?bXQvZDB0RDFkZGJlVU81SU9LZEliSDhNTkdqTnpZMUdpYTBEQStKNXNJdllU?= =?utf-8?B?NkowWWIwbFJJeDRnNFlPdktlNWNqMnF1Z1kzU1pKUytnS1Q1cjkyRkVNSkhZ?= =?utf-8?B?MUtZT0ZNZlNnclBQb01zeEk1SXB3dEMvRkE3ZmhYREhXM1NpUkE4WUJVL25p?= =?utf-8?B?cEVnWXdIYnZIWGRnWkN5aTlmdTh0Y3hKYU5IdFpRaE5rNVdHYzRVaVhrSVRz?= =?utf-8?B?bEt5ZlBBTEZFdWhRbEprVkNXdGdTK050d3F0bGtWUmVQR0VJTHFETGFOeU5Q?= =?utf-8?B?czZ2a3FQdWxLbFQvMlg0WUZOcldIeUNPdzRHcnpXdU9HeUNzY3A4NjJnYWNF?= =?utf-8?B?VmExSVN1bUVPa21HV1ltbHhucVpINlc1WGM3ZjNXRGRaWUhWTnZhQXVQeVpy?= =?utf-8?Q?VRCDkVsUjU27PkfF0xFMguYWyxVtQQAw6dkB8PqJWRb/3P?= X-OriginatorOrg: sct-15-20-4755-11-msonline-outlook-71ea3.templateTenant X-MS-Exchange-CrossTenant-Network-Message-Id: f9cf3613-721a-42cc-f7a0-08db3fc8b5dd X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB5765.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Apr 2023 04:52:28.3499 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV2PR12MB5773 X-Spam-Status: No, score=-1.2 required=5.0 tests=BAYES_00,KAM_DMARC_STATUS,KAM_INFOUSMEBIZ,KAM_STOCKGEN,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On Thu, Nov 10, 2022 at 7:27=E2=80=AFPM Fangrui Song wrote: > > Hello, I find a strange use of VER_NDX_GLOBAL and look forward to your th= oughts. > > cat > a.s < .globl foo > .symver foo, foo@@@v1 > foo: > nop > ret > > .globl foo_compat > .symver foo_compat, foo@, remove > foo_compat: > ret > e > cat > a.ver < v1 {}; > e > cat > b.c < extern void foo(void); > int main(void) { foo(); } > e > > gcc -fuse-ld=3Dbfd -shared -nostdlib -Wl,--version-script=3Da.ver a.s -o = a.so > gcc -fuse-ld=3Dbfd -g b.c ./a.so -o b > > exit > > In a.so, we have a default version foo@@v1 as well as a VER_NDX_GLOBAL fo= o. > The VER_NDX_GLOBAL foo is unusual. > > ``` > % readelf -W --dyn-s -V a.so > > Symbol table '.dynsym' contains 4 entries: > Num: Value Size Type Bind Vis Ndx Name > 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND > 1: 0000000000001000 0 NOTYPE GLOBAL DEFAULT 7 foo@@v1 > 2: 0000000000001002 0 NOTYPE GLOBAL DEFAULT 7 foo > 3: 0000000000000000 0 OBJECT GLOBAL DEFAULT ABS v1 > > Version symbols section '.gnu.version' contains 4 entries: > Addr: 0x000000000000028e Offset: 0x00028e Link: 3 (.dynsym) > 000: 0 (*local*) 2 (v1) 1h 2 (v1) > > Version definition section '.gnu.version_d' contains 2 entries: > Addr: 0x0000000000000298 Offset: 0x000298 Link: 4 (.dynstr) > 000000: Rev: 1 Flags: BASE Index: 1 Cnt: 1 Name: a.so > 0x001c: Rev: 1 Flags: none Index: 2 Cnt: 1 Name: v1 > ``` > > There are two strange things: > > * foo is a VER_NDX_GLOBAL VERSYM_HIDDEN symbol (shown as `1h`). Is this a= n expected use case? > * foo co-exist with foo@@v1. Is this an expected use case? > > In my understanding, when a stem symbol has a @ form, the unversioned VER= _NDX_GLOBAL form cannot exist. > In the example above, `.symver foo_compat, foo@v0, remove` would be fine. > > The above is reduced from a real world case of https://github.com/libfuse= /libfuse/blob/fuse_2_9_bugfix/lib/fuse.c#L4955 > `FUSE_SYMVER(".symver fuse_new_compat2,fuse_new@");` > > % readelf -W --dyn-s /lib/x86_64-linux-gnu/libfuse.so.2 G fuse_new > 200: 00000000000148b0 72 FUNC GLOBAL DEFAULT 13 fuse_new@FUSE= _2.5 > 201: 0000000000014870 16 FUNC GLOBAL DEFAULT 13 fuse_new = # this is VERSYM_HIDDEN > 202: 0000000000014750 8 FUNC GLOBAL DEFAULT 13 fuse_new@@FUS= E_2.6 > 203: 0000000000014860 11 FUNC GLOBAL DEFAULT 13 fuse_new@FUSE= _2.2 > 216: 0000000000014880 35 FUNC GLOBAL DEFAULT 13 fuse_new_comp= at1@@FUSE_2.2 > 218: 0000000000014870 16 FUNC GLOBAL DEFAULT 13 fuse_new_comp= at2@@FUSE_2.2 > 228: 0000000000014860 11 FUNC GLOBAL DEFAULT 13 fuse_new_comp= at22@@FUSE_2.5 > 230: 00000000000148b0 72 FUNC GLOBAL DEFAULT 13 fuse_new_comp= at25@@FUSE_2.6 Ping about thoughts:)