From owner-freebsd-current@freebsd.org Sun Nov 29 17:27:43 2015 Return-Path: Delivered-To: freebsd-current@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 1CDFCA3C912 for ; Sun, 29 Nov 2015 17:27:43 +0000 (UTC) (envelope-from deischen@freebsd.org) Received: from mailman.ysv.freebsd.org (mailman.ysv.freebsd.org [IPv6:2001:1900:2254:206a::50:5]) by mx1.freebsd.org (Postfix) with ESMTP id 0147711ED for ; Sun, 29 Nov 2015 17:27:43 +0000 (UTC) (envelope-from deischen@freebsd.org) Received: by mailman.ysv.freebsd.org (Postfix) id F2B9CA3C911; Sun, 29 Nov 2015 17:27:42 +0000 (UTC) Delivered-To: current@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id D86C2A3C910 for ; Sun, 29 Nov 2015 17:27:42 +0000 (UTC) (envelope-from deischen@freebsd.org) Received: from mail.netplex.net (mail.netplex.net [204.213.176.9]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "*.netplex.net", Issuer "RapidSSL SHA256 CA - G3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id AC62F11EC for ; Sun, 29 Nov 2015 17:27:42 +0000 (UTC) (envelope-from deischen@freebsd.org) Received: from sea.ntplx.net (sea.ntplx.net [204.213.176.11]) by mail.netplex.net (8.15.1/8.15.1/NETPLEX) with ESMTP id tATHRe2Y040452; Sun, 29 Nov 2015 12:27:40 -0500 X-Virus-Scanned: by AMaViS and Clam AntiVirus (mail.netplex.net) X-Greylist: Message whitelisted by DRAC access database, not delayed by milter-greylist-4.4.3 (mail.netplex.net [204.213.176.9]); Sun, 29 Nov 2015 12:27:40 -0500 (EST) Date: Sun, 29 Nov 2015 12:27:40 -0500 (EST) From: Daniel Eischen X-X-Sender: eischen@sea.ntplx.net Reply-To: Daniel Eischen To: Konstantin Belousov cc: current@freebsd.org Subject: Re: librt symbol versioning breakage (was Re: Build failure, undefined reference to __mq_oshandle) In-Reply-To: <20151129102903.GD3448@kib.kiev.ua> Message-ID: References: <20151129102903.GD3448@kib.kiev.ua> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 Nov 2015 17:27:43 -0000 On Sun, 29 Nov 2015, Konstantin Belousov wrote: > On Sun, Nov 29, 2015 at 01:23:04AM -0500, Daniel Eischen wrote: >> On Fri, 27 Nov 2015, Daniel Eischen wrote: >> >>> Damn, please use deischen@freebsd.org for replies. >>> >>> On Fri, 27 Nov 2015, Daniel Eischen wrote: >>> >>>> On Fri, 27 Nov 2015, Daniel Eischen wrote: >>>> >>>>> $ uname -a >>>>> FreeBSD vega 11.0-CURRENT FreeBSD 11.0-CURRENT #0 r277320: Mon Jan 19 >>>>> 09:02:50 EST 2015 >>>>> deischen@vega:/usr/FreeBSD/svn/obj/usr/FreeBSD/svn/src/sys/vega amd64 >>>>> >>>>> Upgrading to today's current, 'rm -rf /usr/obj/*; make -j8 buildworld' >>>>> fails here: >>>>> >>>>> ===> lib/libc/tests/gen/execve (buildconfig) >>>>> --- all_subdir_tests --- >>>>> --- all_subdir_mqueue --- >>>>> mqtest3.o: In function `main': >>>>> /usr/FreeBSD/svn/src/tests/sys/mqueue/mqtest3.c:(.text+0x139): undefined >>>>> reference to `__mq_oshandle' >>>>> /usr/FreeBSD/svn/src/tests/sys/mqueue/mqtest3.c:(.text+0x14c): undefined >>>>> reference to `__mq_oshandle' >>>>> /usr/FreeBSD/svn/src/tests/sys/mqueue/mqtest3.c:(.text+0x16c): undefined >>>>> reference to `__mq_oshandle' >>>>> /usr/FreeBSD/svn/src/tests/sys/mqueue/mqtest3.c:(.text+0x3e6): undefined >>>>> reference to `__mq_oshandle' >>>>> /usr/FreeBSD/svn/src/tests/sys/mqueue/mqtest3.c:(.text+0x3f9): undefined >>>>> reference to `__mq_oshandle' >>>>> mqtest3.o:/usr/FreeBSD/svn/src/tests/sys/mqueue/mqtest3.c:(.text+0x40f): >>>>> more undefined references to `__mq_oshandle' follow >>>>> cc: error: linker command failed with exit code 1 (use -v to see >>>>> invocation) >>>>> >>>>> Going to try make [-j1], next, but anyone come across this? >>>> >>>> Still fails. >>>> >>>> Why do the tests in tests/sys/mqueue/ try to use non-public APIs? >> >> So I found out that sometime in the last year or so, symbol versioning >> for librt was broken and leaking symbols that shouldn't have been >> leaked. I've just committed a fix for this. >> >> Do a 'readelf -sw /usr/lib/librt.so.1 | grep GLOBAL | grep -v UND' >> and see the non FBSD_foo symbols that shouldn't be there. > > I did the following on the librt from the HEAD of about month ago: > > pooma% ls -l netboot/sandy/usr/lib/librt.so.1 > -r--r--r-- 1 root wheel 23704 Oct 24 23:35 netboot/sandy/usr/lib/librt.so.1 > > pooma% readelf -sw netboot/sandy/usr/lib/librt.so.1 | grep GLOBAL | grep -v UND | grep -v FBSDpriv | grep FBSD > 97: 0000000000000000 0 OBJECT GLOBAL DEFAULT ABS FBSD_1.0 > > But I think that your commit is the good change. Can you check librt.so.1 in your buildworld temporary build environment? $ readelf -sW /usr/obj/usr/FreeBSD/svn/src/tmp/usr/lib/librt.so.1 \ grep -v UND | grep GLOBAL There has to be a reason that tests/sys/mqueue/mqtest[3-4].c build without error when they reference __mq_oshandle. That symbol is not exported from librt. Hmm, looks like libc and libthr are also the same (leaky) in the temporary build environment (TBE). So something broke when building the TBE libraries. For r277320 on my system Jan 19, 2015, the TBE libraries must have been built correctly because mqtests[3-4] failed with unresolved references to __mq_oshandle. -- DE