Date: Mon, 07 Mar 2011 17:48:59 -0800 From: Chuck Swiger <cswiger@mac.com> To: =?utf-8?B?0JDQstGB0YLQuNC9INCa0LjQvA==?= <avstin@mail.ru> Cc: freebsd-questions@freebsd.org Subject: Re: hidden symbol `__dso_handle' in /usr/lib/crtbegin.o is referenced by DSO Message-ID: <1E9B3906-C506-429B-8BCC-4503382F60D6@mac.com> In-Reply-To: <E1Pwlmx-0002ib-00.avstin-mail-ru@f33.mail.ru> References: <E1Pwlmx-0002ib-00.avstin-mail-ru@f33.mail.ru>
next in thread | previous in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1E9B3906-C506-429B-8BCC-4503382F60D6>