Issue Details (XML | Word | Printable)

Key: STDCXX-406
Type: Bug Bug
Status: Open Open
Priority: Critical Critical
Assignee: Martin Sebor
Reporter: Martin Sebor
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
C++ Standard Library

[Compaq C++ 6.5] unsats on __rw_static_mutex

Created: 08/May/07 04:40 AM   Updated: 12/Nov/08 03:18 AM
Return to search
Issue 226 of 323 issue(s)
<< Previous | STDCXX-406 | Next >>
Component/s: Build and Installation
Affects Version/s: 4.1.3, 4.2.0
Fix Version/s: 4.3.0

Time Tracking:
Original Estimate: 8h
Original Estimate - 8h
Remaining Estimate: 6h
Time Spent - 2h Remaining Estimate - 6h
Time Spent: 2h
Time Spent - 2h Remaining Estimate - 6h

Environment: Compaq C++ 6.5/Tru64
Issue Links:
Reference

Severity: Linker Error


 Description  « Hide
All programs are failing to link with Compaq C++ 6.5 on Tru64 UNIX with the errors below:

cxx -c -pthread -I$(TOPDIR)/include -I$(BUILDDIR)/include -I$(TOPDIR)/examples/include -x cxx -nocxxstd -std strict_ansi_errors -O2 -w1 -msg_disable 450 -ptr accumulate.ti $(TOPDIR)/examples/manual/accumulate.cpp
cxx accumulate.o -o accumulate -nocxxstd -liconv -pthread -L$(BUILDDIR)/lib -lstd -lm -ptr accumulate.ti
ld:
Unresolved:
_rw::rw_static_mutex<rw::_rw_type<void, 581> >::_C_mutex
_rw::rw_static_mutex<rw::_rw_type<void, 618> >::_C_mutex
_rw::rw_static_mutex<rw::rw_type<rw::_rw_facet, 468> >::_C_mutex
_rw::_rw_static_mutex<bool>::_C_mutex
_rw::_rw_static_mutex<volatile long>::_C_mutex
_rw::rw_static_mutex<rw::rw_type<rw::_rw_locale, 819> >::_C_mutex
_rw::rw_static_mutex<rw::rw_type<rw::_rw_locale, 850> >::_C_mutex
_rw::rw_static_mutex<rw::rw_type<rw::_rw_open_cat_data, 216> >::_C_mutex
_rw::rw_static_mutex<rw::rw_type<rw::_rw_open_cat_data, 242> >::_C_mutex
_rw::rw_static_mutex<rw::rw_type<rw::_rw_open_cat_data, 267> >::_C_mutex
_rw::rw_static_mutex<rw::rw_type<rw::_rw_open_cat_data, 282> >::_C_mutex
_rw::rw_static_mutex<rw::_rw_iso2022_state_t>::_C_mutex
gmake: *** [accumulate] Error 1



 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Martin Sebor added a comment - 23/Aug/07 04:18 AM
4.2 hasn't been released yet, setting Affect Version(s) to "trunk."

Martin Sebor added a comment - 19/Sep/07 05:44 PM
They symbols are missing because the library doesn't explicitly instantiate them and the archive doesn't include the contents of the template repository. Below is the relevant portion of the library build log. Note the use of the -ptr repository.ti compiler option and the absence of repository.ti/* on the archiver command line:

gmake: Entering directory `$(BUILDDIR)/lib'
cxx -c -D_RWSTDDEBUG -pthread -I$(TOPDIR)/include -I$(BUILDDIR)/include -x cxx -nocxxstd -std strict_ansi_errors -g -w1 -msg_disable 450 -ptr repository.ti $(TOPDIR)/src/assert.cpp
...
cxx -c -D_RWSTDDEBUG -pthread -I$(TOPDIR)/include -I$(BUILDDIR)/include -x cxx -nocxxstd -std strict_ansi_errors -g -w1 -msg_disable 450 -ptr repository.ti $(TOPDIR)/src/wcodecvt.cpp
cxx: Info: $(TOPDIR)/src/wcodecvt.cpp, line 849:
statement is unreachable
off = __rw_xlit (impl, utfbuf, utf8_len);
----------------^
cxx -c -D_RWSTDDEBUG -pthread -I$(TOPDIR)/include -I$(BUILDDIR)/include -x cxx -nocxxstd -std strict_ansi_errors -g -w1 -msg_disable 450 -ptr repository.ti $(TOPDIR)/src/wctype.cpp
ar rv libstd.a assert.o atomic-cxx.o bitset.o catalog.o codecvt.o collate.o ctype.o ctype_bits.o domain_error.o exception.o export.o facet.o file.o instance.o invalid_argument.o ios.o ios_bits.o iostore.o iostream.o iso2022.o length_error.o limits.o limits_bits.o locale_bits.o locale_body.o locale_classic.o locale_combine.o locale_core.o locale_eq.o locale_global.o locale_name.o logic_error.o memattr.o memory.o messages.o mman.o num_get.o num_put.o once.o out_of_range.o overflow_error.o punct.o random.o range_error.o runtime_error.o setlocale.o string.o strstream.o strtol.o ti_collate.o ti_filebuf.o ti_insert_dbl.o ti_insert_int.o ti_insert_ptr.o ti_ios.o ti_istream.o ti_messages.o ti_money_get.o ti_money_put.o ti_moneypunct.o ti_num_get.o ti_num_put.o ti_numpunct.o ti_ostream.o ti_podarray.o ti_streambuf.o ti_string.o ti_stringbuf.o ti_time_get.o ti_time_put.o ti_wcollate.o ti_wfilebuf.o ti_winsert_dbl.o ti_winsert_int.o ti_winsert_ptr.o ti_wios.o ti_wistream.o ti_wmessages.o ti_wmoney_get.o ti_wmoney_put.o ti_wmoneypunct.o ti_wnum_get.o ti_wnum_put.o ti_wnumpunct.o ti_wostream.o ti_wstreambuf.o ti_wstring.o ti_wstringbuf.o ti_wtime_get.o ti_wtime_put.o time_get.o time_put.o tmpbuf.o typeinfo.o underflow_error.o valarray.o vecbool.o version.o wcodecvt.o wctype.o
ar: Warning: creating libstd.a
a - assert.o
a - atomic-cxx.o
a - bitset.o
a - catalog.o
a - codecvt.o
a - collate.o
a - ctype.o
a - ctype_bits.o
a - domain_error.o
a - exception.o
a - export.o
a - facet.o
a - file.o
a - instance.o
a - invalid_argument.o
a - ios.o
a - ios_bits.o
a - iostore.o
a - iostream.o
a - iso2022.o
a - length_error.o
a - limits.o
a - limits_bits.o
a - locale_bits.o
a - locale_body.o
a - locale_classic.o
a - locale_combine.o
a - locale_core.o
a - locale_eq.o
a - locale_global.o
a - locale_name.o
a - logic_error.o
a - memattr.o
a - memory.o
a - messages.o
a - mman.o
a - num_get.o
a - num_put.o
a - once.o
a - out_of_range.o
a - overflow_error.o
a - punct.o
a - random.o
a - range_error.o
a - runtime_error.o
a - setlocale.o
a - string.o
a - strstream.o
a - strtol.o
a - ti_collate.o
a - ti_filebuf.o
a - ti_insert_dbl.o
a - ti_insert_int.o
a - ti_insert_ptr.o
a - ti_ios.o
a - ti_istream.o
a - ti_messages.o
a - ti_money_get.o
a - ti_money_put.o
a - ti_moneypunct.o
a - ti_num_get.o
a - ti_num_put.o
a - ti_numpunct.o
a - ti_ostream.o
a - ti_podarray.o
a - ti_streambuf.o
a - ti_string.o
a - ti_stringbuf.o
a - ti_time_get.o
a - ti_time_put.o
a - ti_wcollate.o
a - ti_wfilebuf.o
a - ti_winsert_dbl.o
a - ti_winsert_int.o
a - ti_winsert_ptr.o
a - ti_wios.o
a - ti_wistream.o
a - ti_wmessages.o
a - ti_wmoney_get.o
a - ti_wmoney_put.o
a - ti_wmoneypunct.o
a - ti_wnum_get.o
a - ti_wnum_put.o
a - ti_wnumpunct.o
a - ti_wostream.o
a - ti_wstreambuf.o
a - ti_wstring.o
a - ti_wstringbuf.o
a - ti_wtime_get.o
a - ti_wtime_put.o
a - time_get.o
a - time_put.o
a - tmpbuf.o
a - typeinfo.o
a - underflow_error.o
a - valarray.o
a - vecbool.o
a - version.o
a - wcodecvt.o
a - wctype.o


Martin Sebor added a comment - 19/Sep/07 06:32 PM
Same problem in 4.1.3 as well.

Martin Sebor added a comment - 19/Oct/07 01:05 AM
Unfortunately, this has to be deferred until 4.2.1.

Martin Sebor added a comment - 07/Apr/08 04:34 PM
Explicitly specifying the object files with the definitions of the symbols resolves the unsats:
cxx -nocxxstd -liconv  -pthread  \
    repository.ti/_C_mutex__Q14__rw22__rw_static_mutex__TUi.o \
    repository.ti_C_mutex__Q14__rw22__rw_static_mutex__TVl.o \
    repository.ti_C_mutex__Q14__rw22__rw_static_mutex__Tjb.o \
    repository.ti_C_mutex__Q14__rw47__rw_static_mutex__TQ14__rw18__rw_open_cat_data.o \
    repository.ti_C_mutex__Q14__rw47__rw_static_mutex__TQ14__rw18__rw_type__Tv_586_.o \
    repository.ti_C_mutex__Q14__rw47__rw_static_mutex__TQ14__rw18__rw_type__Tv_623_.o \
    repository.ti_C_mutex__Q14__rw49__rw_static_mutex__TQ14__rw20__rw_iso2022_state_t.o \
    repository.ti_C_mutex__Q14__rw65__rw_static_mutex__TQ14__rw36__rw_type__TQ14__rw10__rw_facet_365_.o \
    repository.ti_C_mutex__Q14__rw66__rw_static_mutex__TQ14__rw37__rw_type__TQ14__rw11_RandGuardT_115_.o \
    repository.ti_C_mutex__Q14__rw66__rw_static_mutex__TQ14__rw37__rw_type__TQ14__rw11__rw_locale_819_.o \
    repository.ti_C_mutex__Q14__rw66__rw_static_mutex__TQ14__rw37__rw_type__TQ14__rw11__rw_locale_827_.o \
    repository.ti_C_mutex__Q14__rw66__rw_static_mutex__TQ14__rw37__rw_type__TQ14__rw11__rw_locale_850_.o \
    repository.ti_C_mutex__Q14__rw66__rw_static_mutex__TQ14__rw37__rw_type__TQ14__rw11__rw_locale_858_.o \
    repository.ti_C_mutex__Q14__rw74__rw_static_mutex__TQ14__rw45__rw_type__TQ14__rw18__rw_time_pu3d446jb.o \
    repository.ti_C_mutex__Q14__rw74__rw_static_mutex__TQ14__rw45__rw_type__TQ14__rw18__rw_time_pu3do0s2s.o \
    -shared \
    assert.o \
    atomic-cxx.o \
    bitset.o \
    catalog.o \
    codecvt.o \
    collate.o \
    ctype.o \
    ctype_bits.o \
    domain_error.o \
    exception.o \
    export.o \
    facet.o \
    file.o \
    instance.o \
    invalid_argument.o \
    ios.o \
    ios_bits.o \
    iostore.o \
    iostream.o \
    iso2022.o \
    length_error.o \
    limits.o \
    limits_bits.o \
    locale_bits.o \
    locale_body.o \
    locale_classic.o \
    locale_combine.o \
    locale_core.o \
    locale_eq.o \
    locale_global.o \
    locale_name.o \
    logic_error.o \
    memattr.o \
    memory.o \
    messages.o \
    mman.o \
    num_get.o \
    num_put.o \
    once.o \
    out_of_range.o \
    overflow_error.o \
    punct.o \
    random.o \
    range_error.o \
    runtime_error.o \
    setlocale.o \
    string.o \
    strstream.o \
    strtol.o \
    ti_collate.o \
    ti_filebuf.o \
    ti_insert_dbl.o \
    ti_insert_int.o \
    ti_insert_ptr.o \
    ti_ios.o \
    ti_istream.o \
    ti_messages.o \
    ti_money_get.o \
    ti_money_put.o \
    ti_moneypunct.o \
    ti_num_get.o \
    ti_num_put.o \
    ti_numpunct.o \
    ti_ostream.o \
    ti_podarray.o \
    ti_streambuf.o \
    ti_string.o \
    ti_stringbuf.o \
    ti_time_get.o \
    ti_time_put.o \
    ti_wcollate.o \
    ti_wfilebuf.o \
    ti_winsert_dbl.o \
    ti_winsert_int.o \
    ti_winsert_ptr.o \
    ti_wios.o \
    ti_wistream.o \
    ti_wmessages.o \
    ti_wmoney_get.o \
    ti_wmoney_put.o \
    ti_wmoneypunct.o \
    ti_wnum_get.o \
    ti_wnum_put.o \
    ti_wnumpunct.o \
    ti_wostream.o \
    ti_wstreambuf.o \
    ti_wstring.o \
    ti_wstringbuf.o \
    ti_wtime_get.o \
    ti_wtime_put.o \
    time_get.o \
    time_put.o \
    tmpbuf.o \
    typeinfo.o \
    underflow_error.o \
    valarray.o \
    vecbool.o \
    version.o \
    wcodecvt.o \
    wctype.o \
    -o libstd15D.so.4.2.0

Martin Sebor added a comment - 25/Apr/08 12:57 AM
Unfortunately, this didn't get finished in time for the 4.2.1 release, but at least we have a workaround.
Lowered Priority and deferred to 4.2.2.

Martin Sebor added a comment - 12/Nov/08 03:18 AM
Deferred until we have access to the platform.