From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 84905 invoked by alias); 11 Apr 2016 09:34:08 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Received: (qmail 84849 invoked by uid 89); 11 Apr 2016 09:34:07 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.9 required=5.0 tests=BAYES_00,RP_MATCHES_RCVD,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=doe, dt_needed, DT_NEEDED, boom X-HELO: mx1.redhat.com Subject: Re: Incorrect IFUNC use in libpthread for fork, vfork wrapper [BZ #19861] To: Richard Henderson , Szabolcs Nagy References: <56FBD238.1010101@redhat.com> <56FC032B.6040700@redhat.com> <20160330191045.GN9862@port70.net> <56FC2E3D.4020901@redhat.com> Cc: GNU C Library , Roland McGrath From: Florian Weimer Message-ID: <570B6F88.4010308@redhat.com> Date: Mon, 11 Apr 2016 09:34:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.6.0 MIME-Version: 1.0 In-Reply-To: <56FC2E3D.4020901@redhat.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-SW-Source: 2016-04/txt/msg00187.txt.bz2 On 03/30/2016 09:51 PM, Richard Henderson wrote: > Come to think of it, we had the same situation of the same symbol version being > provided by two libraries prior to removing fork from libpthread too, so when > providing compatibility symbols we must be mindful of that -- proper > dependencies on libpthread may well not exist. Considering that libpthread has a DT_NEEDED entry for libc.so.6, doe we actually need the compatibility wrapper? I removed it, built a special libdofork.so which has a DT_NEEDED entry for libpthread.so.0 only, and got this with a glibc built that doesn't have the compatibility wrapper: 12074: symbol=fork; lookup in file=/tmp/boom [0] 12074: symbol=fork; lookup in file=./nptl/libpthread.so.0 [0] 12074: symbol=fork; lookup in file=./libdofork.so [0] 12074: symbol=fork; lookup in file=./libc.so.6 [0] 12074: binding file ./libdofork.so [0] to ./libc.so.6 [0]: normal symbol `fork' [GLIBC_2.2.5] So it seems to work just as before. The difference will be visible with dlopen, but will that matter? Florian