From owner-freebsd-current@FreeBSD.ORG Wed Dec 28 17:57:45 2011 Return-Path: Delivered-To: freebsd-current@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D219A106564A for ; Wed, 28 Dec 2011 17:57:45 +0000 (UTC) (envelope-from andreast-list@fgznet.ch) Received: from smtp.fgznet.ch (mail.fgznet.ch [81.92.96.47]) by mx1.freebsd.org (Postfix) with ESMTP id 4444C8FC15 for ; Wed, 28 Dec 2011 17:57:44 +0000 (UTC) Received: from deuterium.andreas.nets (dhclient-91-190-14-19.flashcable.ch [91.190.14.19]) by smtp.fgznet.ch (8.13.8/8.13.8/Submit_SMTPAUTH) with ESMTP id pBSHsBKA007458; Wed, 28 Dec 2011 18:54:12 +0100 (CET) (envelope-from andreast-list@fgznet.ch) Message-ID: <4EFB5894.7030306@fgznet.ch> Date: Wed, 28 Dec 2011 18:57:40 +0100 From: Andreas Tobler User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.5; rv:8.0) Gecko/20111105 Thunderbird/8.0 MIME-Version: 1.0 To: Rainer Hurling , Ed Schouten References: <4EFAF3FC.60002@zedat.fu-berlin.de> <20111228135808.GW50300@deviant.kiev.zoral.com.ua> <4EFB2344.3000302@zedat.fu-berlin.de> <20111228142957.GX50300@deviant.kiev.zoral.com.ua> <4EFB447D.3000808@gwdg.de> In-Reply-To: <4EFB447D.3000808@gwdg.de> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.64 on 81.92.96.47 Cc: Kostik Belousov , Current FreeBSD , "O. Hartmann" Subject: Re: /usr/local/lib/gcc46/gcc/x86_64-portbld-freebsd9.0/4.6.3/../../../libstdc++.a: could not read symbols: Bad value X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 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: Wed, 28 Dec 2011 17:57:45 -0000 On 28.12.11 17:31, Rainer Hurling wrote: > On 28.12.2011 15:29 (UTC+1), Kostik Belousov wrote: >> On Wed, Dec 28, 2011 at 03:10:12PM +0100, O. Hartmann wrote: >>> Am 12/28/11 14:58, schrieb Kostik Belousov: >>>> On Wed, Dec 28, 2011 at 11:48:28AM +0100, O. Hartmann wrote: >>>>> Hello out here. >>>>> >>>>> I run into a problem since one of the last portupdates and I do not know >>>>> whether this has to do with binutils or gcc46 or even FreeBSD 9.0/10.0 >>>>> AMD64. >>>>> >>>>> Background: >>>>> We use a scientific graphical toolset for planetary research called >>>>> ISIS3, which is provided by the USGS. We patched ISIS3 to run on FreeBSD >>>>> 8/9/10 so far and it ran well with FreeBSD 8.2-STABLE and 9.0-PRE a >>>>> couple of weeks ago. >>>>> On all of my boxes, I do frequently a portupgrade, so I saw binutils got >>>>> bumped up and gcc 4.6 is also getting really frequently changed these days. >>>>> After a some portupdates within the last weeks, I just decided to >>>>> compile ISIS3 again to keep it "fresh and on track", but it won't >>>>> compile anymore. >>>>> >>>>> On all FreeBSD 9.0-PRERELEASE and FreeBSD 10.0-CURRENT (all AMD64 and >>>>> CLANG built) I receive in some subfolders containing sources the >>>>> follwoing error: >>>>> >>>>> [...] >>>>> Adding API object [UniqueIOCachingAlgorithm] >>>>> Adding API object [UniversalGroundMap] >>>>> Adding API object [UserInterface] >>>>> Adding API object [VariableLineScanCameraDetectorMap] >>>>> Adding API object [VecFilter] >>>>> Adding API object [WorldMapper] >>>>> Adding API object [iException] >>>>> Adding API object [iString] >>>>> Adding API object [iTime] >>>>> Working on Package [mex] (11:30:15) >>>>> Adding API object [HrscCamera] >>>>> /usr/local/bin/ld: >>>>> /usr/local/lib/gcc46/gcc/x86_64-portbld-freebsd9.0/4.6.3/../../../libstdc++.a(functexcept.o): >>>>> relocation R_X86_64_32 against `std::bad_exception::~bad_exception()' >>>>> can not be used when making a shared object; recompile with -fPIC >>>>> /usr/local/lib/gcc46/gcc/x86_64-portbld-freebsd9.0/4.6.3/../../../libstdc++.a: >>>>> could not read symbols: Bad value >>>>> collect2: ld returned 1 exit status >>>>> gmake[5]: *** [plugin] Error 1 >>>>> cp: libHrscCamera.so: No such file or directory >>>>> gmake[4]: *** [install] Error 1 >>>> The error is completely clear as it is: the build tries to link static >>>> library libstdc++.so into shared object. This is not supported. >>> >>> Thanks, Kostik, for the fast response. >>> The error isn't so clear to me, sorry. I thought libstdc++.a is the >>> static library and it is taken to be referenced/compiled into a shared >> Linked in. >> >>> object created by the application I try to compile. >> Right, and this is not supported. Code linked into shared object must >> be compiled PIC. An .a library usually does not contain objects compiled >> by PIC, ld just dutifully reported back. >> >>> >>> I'm much more confused now, since I thought the last time I compiled >>> that piece of software, I never got any error like that. Well, clang >>> fails with some obscure errors on the code itself and I'm unwilling to >>> correct them, I'll try the legacy gcc 4.2.1 and will report what's >>> happening. >> >> It might have worked by accident (because libstdc++.a objects referenced >> during the link did not carried unsupported relocations), or, much more >> likely, the build system has changed and started doing stupid things. >> It must not link static libraries into shared objects. >> >> You should examine why it does this, and fix it. Changing compilers is >> just wasting a time. > > > Hmm, I get a similar error when trying to build lang/gcc46 on recent > 10-CURRENT: > > ---------------------------------------------------------------- > [..snip..] > Making all in include > gmake[4]: Entering directory > `/usr/ports/lang/gcc46/work/build/x86_64-portbld-freebsd10.0/libstdc++-v3/include' > mkdir -p ./x86_64-portbld-freebsd10.0/bits/stdc++.h.gch > /usr/ports/lang/gcc46/work/build/./gcc/xgcc -shared-libgcc > -B/usr/ports/lang/gcc46/work/build/./gcc -nostdinc++ > -L/usr/ports/lang/gcc46/work/build/x86_64-portbld-freebsd10.0/libstdc++-v3/src > -L/usr/ports/lang/gcc46/work/build/x86_64-portbld-freebsd10.0/libstdc++-v3/src/.libs > -B/usr/local/x86_64-portbld-freebsd10.0/bin/ > -B/usr/local/x86_64-portbld-freebsd10.0/lib/ -isystem > /usr/local/x86_64-portbld-freebsd10.0/include -isystem > /usr/local/x86_64-portbld-freebsd10.0/sys-include -x c++-header > -nostdinc++ -g -O2 -pipe -I/usr/local/include -fno-strict-aliasing > -I/usr/ports/lang/gcc46/work/build/x86_64-portbld-freebsd10.0/libstdc++-v3/include/x86_64-portbld-freebsd10.0 > -I/usr/ports/lang/gcc46/work/build/x86_64-portbld-freebsd10.0/libstdc++-v3/include > -I/usr/ports/lang/gcc46/work/gcc-4.6-20111209/libstdc++-v3/libsupc++ -O2 > -g -std=gnu++0x > /usr/ports/lang/gcc46/work/gcc-4.6-20111209/libstdc++-v3/include/precompiled/stdc++.h > \ > -o x86_64-portbld-freebsd10.0/bits/stdc++.h.gch/O2ggnu++0x.gch > In file included from > /usr/ports/lang/gcc46/work/build/x86_64-portbld-freebsd10.0/libstdc++-v3/include/chrono:38:0, > from > /usr/ports/lang/gcc46/work/gcc-4.6-20111209/libstdc++-v3/include/precompiled/stdc++.h:100: > /usr/ports/lang/gcc46/work/build/x86_64-portbld-freebsd10.0/libstdc++-v3/include/ratio:133:31: > error: macro "_Static_assert" passed 3 arguments, but takes just 2 > In file included from > /usr/ports/lang/gcc46/work/gcc-4.6-20111209/libstdc++-v3/include/precompiled/stdc++.h:103:0: > /usr/ports/lang/gcc46/work/build/x86_64-portbld-freebsd10.0/libstdc++-v3/include/future:376:39: > error: macro "_Static_assert" passed 4 arguments, but takes just 2 > In file included from > /usr/ports/lang/gcc46/work/build/x86_64-portbld-freebsd10.0/libstdc++-v3/include/memory:85:0, > from > /usr/ports/lang/gcc46/work/gcc-4.6-20111209/libstdc++-v3/include/precompiled/stdc++.h:81: > /usr/ports/lang/gcc46/work/build/x86_64-portbld-freebsd10.0/libstdc++-v3/include/bits/unique_ptr.h: > In constructor 'constexpr std::unique_ptr<_Tp, _Dp>::unique_ptr()': > /usr/ports/lang/gcc46/work/build/x86_64-portbld-freebsd10.0/libstdc++-v3/include/bits/unique_ptr.h:117:59: > error: constexpr constructor does not have empty body > /usr/ports/lang/gcc46/work/build/x86_64-portbld-freebsd10.0/libstdc++-v3/include/bits/unique_ptr.h: > In constructor 'constexpr std::unique_ptr<_Tp, > _Dp>::unique_ptr(std::nullptr_t)': > /usr/ports/lang/gcc46/work/build/x86_64-portbld-freebsd10.0/libstdc++-v3/include/bits/unique_ptr.h:139:59: > error: constexpr constructor does not have empty body > /usr/ports/lang/gcc46/work/build/x86_64-portbld-freebsd10.0/libstdc++-v3/include/bits/unique_ptr.h: > In constructor 'constexpr std::unique_ptr<_Tp [], _Dp>::unique_ptr()': > /usr/ports/lang/gcc46/work/build/x86_64-portbld-freebsd10.0/libstdc++-v3/include/bits/unique_ptr.h:279:59: > error: constexpr constructor does not have empty body > /usr/ports/lang/gcc46/work/build/x86_64-portbld-freebsd10.0/libstdc++-v3/include/bits/unique_ptr.h: > In constructor 'constexpr std::unique_ptr<_Tp [], > _Dp>::unique_ptr(std::nullptr_t)': > /usr/ports/lang/gcc46/work/build/x86_64-portbld-freebsd10.0/libstdc++-v3/include/bits/unique_ptr.h:301:59: > error: constexpr constructor does not have empty body > In file included from > /usr/ports/lang/gcc46/work/build/x86_64-portbld-freebsd10.0/libstdc++-v3/include/cassert:45:0, > from > /usr/ports/lang/gcc46/work/gcc-4.6-20111209/libstdc++-v3/include/precompiled/stdc++.h:34: > /usr/include/assert.h: At global scope: > /usr/include/assert.h:62:23: error: '_Static_assert' does not name a type > /usr/include/assert.h:62:23: error: '_Static_assert' does not name a type > gmake[4]: *** > [x86_64-portbld-freebsd10.0/bits/stdc++.h.gch/O2ggnu++0x.gch] Fehler 1 > gmake[4]: Leaving directory > `/usr/ports/lang/gcc46/work/build/x86_64-portbld-freebsd10.0/libstdc++-v3/include' > gmake[3]: *** [all-recursive] Fehler 1 > gmake[3]: Leaving directory > `/usr/ports/lang/gcc46/work/build/x86_64-portbld-freebsd10.0/libstdc++-v3' > gmake[2]: *** [all] Fehler 2 > gmake[2]: Leaving directory > `/usr/ports/lang/gcc46/work/build/x86_64-portbld-freebsd10.0/libstdc++-v3' > gmake[1]: *** [all-target-libstdc++-v3] Fehler 2 > gmake[1]: Leaving directory `/usr/ports/lang/gcc46/work/build' > gmake: *** [bootstrap-lean] Fehler 2 > *** Error code 1 > Stop in /usr/ports/lang/gcc46. > ---------------------------------------------------------------- > > > I guess that this error could have something to do with r228902 from > 2011-12-26: > > /head/include/assert.h: As per C11, add static_assert() to. > > lang/gcc46 builts fine for me before this revision. What do you think > about it? This commit _is_ responsible for this failure. I see the same. (Added Ed@) Andreas