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<assert.h>. > > 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_at_) AndreasReceived on Wed Dec 28 2011 - 16:57:45 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:22 UTC