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 <assert.h>. lang/gcc46 builts fine for me before this revision. What do you think about it? RainerReceived on Wed Dec 28 2011 - 15:55:29 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:22 UTC