From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTPS id 309463858418 for ; Wed, 8 Dec 2021 10:06:25 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 309463858418 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-421-IAmKLN1EMyGxzB_TBQUq7A-1; Wed, 08 Dec 2021 05:06:21 -0500 X-MC-Unique: IAmKLN1EMyGxzB_TBQUq7A-1 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 640D91932480; Wed, 8 Dec 2021 10:06:20 +0000 (UTC) Received: from oldenburg.str.redhat.com (unknown [10.39.193.123]) by smtp.corp.redhat.com (Postfix) with ESMTPS id AC31660BF1; Wed, 8 Dec 2021 10:06:19 +0000 (UTC) From: Florian Weimer To: Andreas Schwab Cc: Florian Weimer via Libc-alpha Subject: Re: [PATCH] Fix glibc 2.34 ABI omission (missing GLIBC_2.34 in dynamic loader) References: <87h7bjmnt0.fsf@oldenburg.str.redhat.com> <87czm7qv2f.fsf@igel.home> Date: Wed, 08 Dec 2021 11:06:17 +0100 In-Reply-To: <87czm7qv2f.fsf@igel.home> (Andreas Schwab's message of "Wed, 08 Dec 2021 10:56:08 +0100") Message-ID: <875yrzmmw6.fsf@oldenburg.str.redhat.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain X-Spam-Status: No, score=-6.5 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NONE, TXREP 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, 08 Dec 2021 10:06:26 -0000 * Andreas Schwab: > On Dez 08 2021, Florian Weimer via Libc-alpha wrote: > >> The glibc 2.34 release really should have added a GLIBC_2.34 >> symbol to the dynamic loader. > > Well, the ship has sailed. Has it? It's just software, we can change it. It's different from other ABI changes in that we wouldn't be using the symbol version node immediately, and the actual symbol (if we start to use it) would already be there in libc.so.6. >> With it, we could move functions such as dlopen or pthread_key_create >> that work on process-global state into the dynamic loader (once we >> have fixed a longstanding issue with static linking). > > Why does this depend on the frozen release? Say we move dlopen into ld.so in glibc 2.36. It will no longer be present in libc.so.6. Applications linked against glibc 2.36 will continue referencing dlopen@GLIBC_2.34, but with a soname baked into the version reference that mentions the dynamic loader (say, ld64.so.1). On the current glibc 2.34 release, the dynamic loader sees that soname, checks if the object has a version node for GLIBC_2.34, and refuses loading the application because ld64.so.1 does not have this version node. Thanks, Florian