From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 125103 invoked by alias); 9 Oct 2019 09:23:47 -0000 Mailing-List: contact gnu-gabi-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Post: List-Help: List-Subscribe: Sender: gnu-gabi-owner@sourceware.org Received: (qmail 125077 invoked by uid 89); 9 Oct 2019 09:23:47 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Checked: by ClamAV 0.100.3 on sourceware.org X-Virus-Found: No X-Spam-SWARE-Status: No, score=-6.0 required=5.0 tests=AWL,BAYES_00,SPF_HELO_PASS autolearn=ham version=3.3.1 spammy=innovation X-Spam-Status: No, score=-6.0 required=5.0 tests=AWL,BAYES_00,SPF_HELO_PASS autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on sourceware.org X-Spam-Level: X-Spam-User: qpsmtpd, 3 recipients X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 09 Oct 2019 09:23:46 +0000 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 63A3710CC1E1; Wed, 9 Oct 2019 09:23:45 +0000 (UTC) Received: from oldenburg2.str.redhat.com (dhcp-192-200.str.redhat.com [10.33.192.200]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 9D6975D6B0; Wed, 9 Oct 2019 09:23:44 +0000 (UTC) From: Florian Weimer To: gnu-gabi@sourceware.org Cc: binutils@sourceware.org, libc-alpha@sourceware.org Subject: Dynamic tag assignment request: Disable symbol version coverage check Date: Tue, 01 Jan 2019 00:00:00 -0000 Message-ID: <87bluq6zmo.fsf@oldenburg2.str.redhat.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.6.2 (mx1.redhat.com [10.5.110.65]); Wed, 09 Oct 2019 09:23:45 +0000 (UTC) X-IsSubscribed: yes X-SW-Source: 2019-q4/txt/msg00000.txt.bz2 I'd like to receive an assignment for a dynamic tag value which we will use in the dynamic linker to disable the coverage check for symbol versions. This is what the coverage check does: For each verneed entry, it checks that the name shared object (identified by its soname) implements all the versions listed in the vernaux entries for the verneed entry. I believe this check was added so that the loader can tell immediately at load time if all the required symbols are present, even if lazy binding is used. (Obviously, this requires proper symbol versioning practices, and one cannot add a new symbol to an existing version once the shared object has been released to the world.) A side-effect of this check is that it is currently impossible to use LD_PRELOAD to load new symbol versions that come from linking to a newer version of a shared object. The coverage check will not notice that the version is provided by the preloaded object and will still fail. In contrast, if the glibc dynamic loader encounters the new dynamic tag in any of the initially loaded objects, it will disable the version coverage check. The idea is that a developer who builds an LD_PRELOAD object can set the dynamic tag and add completely new symbol versions. >From a user perspective, it will look like just another preloaded object. I guess I'm looking for an assignment like this: #define DT_GNU_NOSYMVERCHECK 0x6ffffdf4 This is GNU-specific because symbol versioning is a GNU innovation. (Solaris has shared object versioning, but it is completely different, despite version scripts sharing some syntactic similarities.) Thanks, Florian