[patch] Default to --enable-libstdcxx-time=auto
Rainer Orth
ro@CeBiTec.Uni-Bielefeld.DE
Fri May 24 21:22:00 GMT 2013
Benjamin De Kosnik <bkoz@redhat.com> writes:
>>> I get the
>> > following testsuite regressions on Solaris 10/x86:
>> >
>> > FAIL: 30_threads/async/54297.cc (test for excess errors)
>> > WARNING: 30_threads/async/54297.cc compilation failed to produce
>> > executable FAIL: 30_threads/condition_variable_any/53830.cc (test
>> > for excess errors) WARNING:
>> > 30_threads/condition_variable_any/53830.cc compilation failed to
>> > produ e executable FAIL: 30_threads/this_thread/3.cc (test for
>> > excess errors) WARNING: 30_threads/this_thread/3.cc compilation
>> > failed to produce executable FAIL: 30_threads/this_thread/4.cc
>> > (test for excess errors) WARNING: 30_threads/this_thread/4.cc
>> > compilation failed to produce executable FAIL:
>> > 30_threads/thread/native_handle/cancel.cc (test for excess errors)
>> > WARNING: 30_threads/thread/native_handle/cancel.cc compilation
>> > failed to produc e executable
>> >
>> > All of them have the same root cause:
>> >
>> > Excess errors:
>> > Undefined first referenced
>> > symbol in file
>> > nanosleep /var/tmp//ccQhmiwd.o (symbol
>> > belongs to implicit dependency /lib/librt.so.1) ld: fatal: symbol
>> > referencing errors. No output written to ./54297.exe collect2:
>> > error: ld returned 1 exit status
>> >
>> > It seems that now every single C++ program needs to be linked with
>> > -lrt, not only libstdc++.so. This will also happen on Solaris 9
>> > (bootstrap still running), while on Solaris 11 nanosleep and the
>> > others were integrated into libc.so.1.
>
> So you'll need conditional LDFLAGS for solaris 9 and 10 only?
Strictly speaking, yes. In Solaris 11, the librt functions were moved
to libc, but librt is left behind as a filter on libc. It were best to
wrap -lrt in -z ignore/-z record (the Solaris equivalents of
--as-needed/--no-as-needed) when linking C++ programs, which is one
reason I think this is best handled with a new libstdc++.spec since most
of the configury is already present in libstdc++, along the lines of
libgfortran.spec.
acinclude.m4 would have to be amended to use AC_SEARCH_LIBS rather than
hardcoding the addition of -lrt to GLIBCXX_LIBS.
For the moment, this patch
http://gcc.gnu.org/ml/gcc-patches/2013-05/msg01488.html
does the job which is far less intrusive than adding libstdc++.spec, but
is certainly suboptimal.
Rainer
--
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University
More information about the Gcc-patches
mailing list