From owner-freebsd-questions@FreeBSD.ORG Tue Mar 8 01:49:00 2011 Return-Path: Delivered-To: freebsd-questions@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 34C161065670 for ; Tue, 8 Mar 2011 01:49:00 +0000 (UTC) (envelope-from cswiger@mac.com) Received: from asmtpout022.mac.com (asmtpout022.mac.com [17.148.16.97]) by mx1.freebsd.org (Postfix) with ESMTP id 07B088FC1C for ; Tue, 8 Mar 2011 01:48:59 +0000 (UTC) MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Received: from cswiger1.apple.com ([17.209.4.71]) by asmtp022.mac.com (Oracle Communications Messaging Exchange Server 7u4-20.01 64bit (built Nov 21 2010)) with ESMTPSA id <0LHP00F4IUDNV980@asmtp022.mac.com> for freebsd-questions@freebsd.org; Mon, 07 Mar 2011 17:48:59 -0800 (PST) X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:5.2.15,1.0.148,0.0.0000 definitions=2011-03-08_01:2011-03-08, 2011-03-08, 1970-01-01 signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 ipscore=0 suspectscore=0 phishscore=0 bulkscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx engine=6.0.2-1012030000 definitions=main-1103070160 From: Chuck Swiger In-reply-to: Date: Mon, 07 Mar 2011 17:48:59 -0800 Content-transfer-encoding: quoted-printable Message-id: <1E9B3906-C506-429B-8BCC-4503382F60D6@mac.com> References: To: =?utf-8?B?0JDQstGB0YLQuNC9INCa0LjQvA==?= X-Mailer: Apple Mail (2.1082) Cc: freebsd-questions@freebsd.org Subject: Re: hidden symbol `__dso_handle' in /usr/lib/crtbegin.o is referenced by DSO X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 Mar 2011 01:49:00 -0000 On Mar 7, 2011, at 5:32 PM, =D0=90=D0=B2=D1=81=D1=82=D0=B8=D0=BD =D0=9A=D0= =B8=D0=BC wrote: > I've lately upgraded from FreeBSD 8.2-RC3 to 8.2-RELEASE via = freebsd-update and am now getting the following error when trying to = build www/webkit-gtk2 in Ports (this was pulled in by the GIMP = meta-port; the tail output of make(1) is appended): >=20 > hidden symbol `__dso_handle' in /usr/lib/crtbegin.o is referenced by = DSO >=20 > What does this mean, and how might one go about fixing it? A quick search finds a quote attributed to Martin Loewis: >> My guess is that it is the infamous .hidden conflict, where the >> binutils snapshot implements .hidden by putting a STB_LOCAL symbol in >> the dynamic symbol table (namely __dso_handle). The dynamic linker >> fails to find this symbol in the shared library, because it does not >> consider STB_LOCAL symbols. >>=20 >> The work-around is to not define HAVE_GAS_HIDDEN in auto-host.h, and >> recompile the compiler. I'm not sure what the solution is. Perhaps >> somebody should sit down and implement .hidden in the same way as >> local symbols in the symbol versioning feature. Perhaps that someone >> should be me, but I haven't started, yet. Some people have reported this to be fixed by making sure that anything = which is being compiled as a shared object uses the -shared compiler = flag. (And -fPIC and such, also.) > (The more generally applicable the answer, the better, as I've = encountered this error on several occasions while trying to rebuild = other Ports after upgrading FreeBSD.) >=20 > Finally, after upgrading from 8.2-RC3 to -RELEASE I now get a lot of = error messages of the form >=20 > grep: write error: Broken pipe >=20 > while building ports, where `grep' is variously `sed,' `sort,' or a = number of other variations. What's the cause of this, and where should = I start looking to fix it? It's likely not a problem. If you've got a pipeline and a later part of = it completes, then earlier parts of the pipeline will get a SIGPIPE if = they keep writing output. See /usr/src/gnu/usr.bin/grep/ChangeLog 1999-02-06 Alain Magloire * tests/*.awk : Linux users are seeing "Broken Pipe" on make = check. The problem is that grep does not drain its stdin, thus the = previous process in the pipeline receives a SIGPIPE. Other shells are = silent about this. There is actually no failure, since the broken pipe = is expected. You can work around it by changing the pipeline, so = that the input is drained, like this: status=3D`echo 'check' | { ${GREP} -E -e pattern >/dev/null = 2>&1; echo $?; cat >/dev/null; }`; if test $status -ne $errnu then ... = fi Excerpt email from Andreas Schwab. Regards, --=20 -Chuck