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.133.124]) by sourceware.org (Postfix) with ESMTP id 3213E385482F for ; Tue, 4 May 2021 06:55:45 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 3213E385482F Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-198-tBhdTxAVO4m2SEeRMquidg-1; Tue, 04 May 2021 02:55:40 -0400 X-MC-Unique: tBhdTxAVO4m2SEeRMquidg-1 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id C125F1009600; Tue, 4 May 2021 06:55:39 +0000 (UTC) Received: from oldenburg.str.redhat.com (ovpn-112-137.ams2.redhat.com [10.36.112.137]) by smtp.corp.redhat.com (Postfix) with ESMTPS id DA0365C5DF; Tue, 4 May 2021 06:55:38 +0000 (UTC) From: Florian Weimer To: Florian Weimer via Libc-alpha Cc: Andreas Schwab Subject: Re: [RFC] elf: Implement filtering of symbols historically defined in libpthread References: <87h7jqguew.fsf@oldenburg.str.redhat.com> Date: Tue, 04 May 2021 08:55:52 +0200 In-Reply-To: <87h7jqguew.fsf@oldenburg.str.redhat.com> (Florian Weimer via Libc-alpha's message of "Wed, 28 Apr 2021 20:01:43 +0200") Message-ID: <875yzzyolj.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.16 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain X-Spam-Status: No, score=-6.0 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_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS, TXREP, URIBL_BLACK autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) 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: Tue, 04 May 2021 06:55:47 -0000 * Florian Weimer via Libc-alpha: > Definitions of these symbols in libc expose bugs in existing binaries > linked against earlier glibc versions. Therefore, hide these symbols > for old binaries. > > The symbol list in sysdeps/nptl/dl-pthread-weak.c contains some > symbols which have not been moved yet, but that is harmless because > the function is only invoked if the symbol is found in libc.so. > > The test suite passes on i686-gnu-linux, powerpc64-linux-gnu, > x86_64-linux-gnu with these changes. > > Is this the direction we want to go in? Then I'm going to add test > cases, probably using assembler. > > Personally I think it's not *too* bad, also not particularly nice > either. elf/dl-pthread-weak.os brings in 2-3 KiB of code (but few > run-time relocations). One possibility I have not mentioned in the > comment is to put the moved symbols into a GLIBCPTHREAD_2.34 symbol > version and use the presence of this version on the chain as an > indicator that the symbol uses special treatment. This eliminates the > separate string table. The downside is that we cannot easily add more > symbols if we discover some are missing. This happened to me during > development with pthread_mutexattr_gettype, which is a GLIBC_2.1 symbol > and therefore not actually suitable for detecting the presence of > libpthread (historically speaking). And it could happen again with > thrd_exit (which is of course much younger). I'd appreciate if someone could have a look at this patch in tell me if the approach is reasonable, all things considered. Thanks, Florian