[XLC++] unsats building locale and localedef
--------------------------------------------
Key: STDCXX-386
URL: https://issues.apache.org/jira/browse/STDCXX-386
Project: C++ Standard Library
Issue Type: Bug
Affects Versions: 4.1.3
Environment: XLC++ 7.0, 8.0 on AIX
Reporter: Martin Sebor
Assigned To: Martin Sebor
Fix For: 4.2
Building stdcxx utilities in $BUILDDIR/bin with XLC++ 7.0 works when no targets
are specified as well as when each target is specified separately. However,
building both locale and localedef (in that order) fails with the linker errors
below.
When using XLC++ 8.0 (and trunk) the localedef fails to link even with the
default invocation of make. This is most likely because we reuse the same
template registry for both programs. Quoting from the -qtemplateregistry
section of the XLC++ 8.0 reference manual for AIX:
Template registry files must not be shared between different programs. If
there are two or more programs whose source is in the same directory, relying
on the default template registry file stored in the current working directory
will result in this situation, and may lead to incorrect results.
$ nice gmake clean >/dev/null && nice gmake locale localedef
xlCcore -c -I/amd/devco/sebor/stdcxx-4.1.3/include/ansi -D_RWSTDDEBUG
-D_RWSTD_USE_CONFIG -I/build/sebor/stdcxx-4.1.3-xlc-7.0.0.9-11s/include
-I/amd/devco/sebor/stdcxx-4.1.3/include
-I/amd/devco/sebor/stdcxx-4.1.3/include/loc -g
-qtemplateregistry=repository.ti /amd/devco/sebor/stdcxx-4.1.3/util/locale.cpp
xlCcore -c -I/amd/devco/sebor/stdcxx-4.1.3/include/ansi -D_RWSTDDEBUG
-D_RWSTD_USE_CONFIG -I/build/sebor/stdcxx-4.1.3-xlc-7.0.0.9-11s/include
-I/amd/devco/sebor/stdcxx-4.1.3/include
-I/amd/devco/sebor/stdcxx-4.1.3/include/loc -g
-qtemplateregistry=repository.ti
/amd/devco/sebor/stdcxx-4.1.3/util/aliases.cpp
xlCcore -c -I/amd/devco/sebor/stdcxx-4.1.3/include/ansi -D_RWSTDDEBUG
-D_RWSTD_USE_CONFIG -I/build/sebor/stdcxx-4.1.3-xlc-7.0.0.9-11s/include
-I/amd/devco/sebor/stdcxx-4.1.3/include
-I/amd/devco/sebor/stdcxx-4.1.3/include/loc -g
-qtemplateregistry=repository.ti
/amd/devco/sebor/stdcxx-4.1.3/util/charmap.cpp
xlCcore -c -I/amd/devco/sebor/stdcxx-4.1.3/include/ansi -D_RWSTDDEBUG
-D_RWSTD_USE_CONFIG -I/build/sebor/stdcxx-4.1.3-xlc-7.0.0.9-11s/include
-I/amd/devco/sebor/stdcxx-4.1.3/include
-I/amd/devco/sebor/stdcxx-4.1.3/include/loc -g
-qtemplateregistry=repository.ti
/amd/devco/sebor/stdcxx-4.1.3/util/codecvt.cpp
xlCcore -c -I/amd/devco/sebor/stdcxx-4.1.3/include/ansi -D_RWSTDDEBUG
-D_RWSTD_USE_CONFIG -I/build/sebor/stdcxx-4.1.3-xlc-7.0.0.9-11s/include
-I/amd/devco/sebor/stdcxx-4.1.3/include
-I/amd/devco/sebor/stdcxx-4.1.3/include/loc -g
-qtemplateregistry=repository.ti
/amd/devco/sebor/stdcxx-4.1.3/util/collate.cpp
xlCcore -c -I/amd/devco/sebor/stdcxx-4.1.3/include/ansi -D_RWSTDDEBUG
-D_RWSTD_USE_CONFIG -I/build/sebor/stdcxx-4.1.3-xlc-7.0.0.9-11s/include
-I/amd/devco/sebor/stdcxx-4.1.3/include
-I/amd/devco/sebor/stdcxx-4.1.3/include/loc -g
-qtemplateregistry=repository.ti /amd/devco/sebor/stdcxx-4.1.3/util/def.cpp
xlCcore -c -I/amd/devco/sebor/stdcxx-4.1.3/include/ansi -D_RWSTDDEBUG
-D_RWSTD_USE_CONFIG -I/build/sebor/stdcxx-4.1.3-xlc-7.0.0.9-11s/include
-I/amd/devco/sebor/stdcxx-4.1.3/include
-I/amd/devco/sebor/stdcxx-4.1.3/include/loc -g
-qtemplateregistry=repository.ti /amd/devco/sebor/stdcxx-4.1.3/util/ctype.cpp
xlCcore -c -I/amd/devco/sebor/stdcxx-4.1.3/include/ansi -D_RWSTDDEBUG
-D_RWSTD_USE_CONFIG -I/build/sebor/stdcxx-4.1.3-xlc-7.0.0.9-11s/include
-I/amd/devco/sebor/stdcxx-4.1.3/include
-I/amd/devco/sebor/stdcxx-4.1.3/include/loc -g
-qtemplateregistry=repository.ti
/amd/devco/sebor/stdcxx-4.1.3/util/diagnostic.cpp
xlCcore -c -I/amd/devco/sebor/stdcxx-4.1.3/include/ansi -D_RWSTDDEBUG
-D_RWSTD_USE_CONFIG -I/build/sebor/stdcxx-4.1.3-xlc-7.0.0.9-11s/include
-I/amd/devco/sebor/stdcxx-4.1.3/include
-I/amd/devco/sebor/stdcxx-4.1.3/include/loc -g
-qtemplateregistry=repository.ti /amd/devco/sebor/stdcxx-4.1.3/util/memchk.cpp
xlCcore -c -I/amd/devco/sebor/stdcxx-4.1.3/include/ansi -D_RWSTDDEBUG
-D_RWSTD_USE_CONFIG -I/build/sebor/stdcxx-4.1.3-xlc-7.0.0.9-11s/include
-I/amd/devco/sebor/stdcxx-4.1.3/include
-I/amd/devco/sebor/stdcxx-4.1.3/include/loc -g
-qtemplateregistry=repository.ti
/amd/devco/sebor/stdcxx-4.1.3/util/messages.cpp
xlCcore -c -I/amd/devco/sebor/stdcxx-4.1.3/include/ansi -D_RWSTDDEBUG
-D_RWSTD_USE_CONFIG -I/build/sebor/stdcxx-4.1.3-xlc-7.0.0.9-11s/include
-I/amd/devco/sebor/stdcxx-4.1.3/include
-I/amd/devco/sebor/stdcxx-4.1.3/include/loc -g
-qtemplateregistry=repository.ti
/amd/devco/sebor/stdcxx-4.1.3/util/monetary.cpp
xlCcore -c -I/amd/devco/sebor/stdcxx-4.1.3/include/ansi -D_RWSTDDEBUG
-D_RWSTD_USE_CONFIG -I/build/sebor/stdcxx-4.1.3-xlc-7.0.0.9-11s/include
-I/amd/devco/sebor/stdcxx-4.1.3/include
-I/amd/devco/sebor/stdcxx-4.1.3/include/loc -g
-qtemplateregistry=repository.ti
/amd/devco/sebor/stdcxx-4.1.3/util/numeric.cpp
xlCcore -c -I/amd/devco/sebor/stdcxx-4.1.3/include/ansi -D_RWSTDDEBUG
-D_RWSTD_USE_CONFIG -I/build/sebor/stdcxx-4.1.3-xlc-7.0.0.9-11s/include
-I/amd/devco/sebor/stdcxx-4.1.3/include
-I/amd/devco/sebor/stdcxx-4.1.3/include/loc -g
-qtemplateregistry=repository.ti /amd/devco/sebor/stdcxx-4.1.3/util/path.cpp
xlCcore -c -I/amd/devco/sebor/stdcxx-4.1.3/include/ansi -D_RWSTDDEBUG
-D_RWSTD_USE_CONFIG -I/build/sebor/stdcxx-4.1.3-xlc-7.0.0.9-11s/include
-I/amd/devco/sebor/stdcxx-4.1.3/include
-I/amd/devco/sebor/stdcxx-4.1.3/include/loc -g
-qtemplateregistry=repository.ti
/amd/devco/sebor/stdcxx-4.1.3/util/scanner.cpp
xlCcore -c -I/amd/devco/sebor/stdcxx-4.1.3/include/ansi -D_RWSTDDEBUG
-D_RWSTD_USE_CONFIG -I/build/sebor/stdcxx-4.1.3-xlc-7.0.0.9-11s/include
-I/amd/devco/sebor/stdcxx-4.1.3/include
-I/amd/devco/sebor/stdcxx-4.1.3/include/loc -g
-qtemplateregistry=repository.ti /amd/devco/sebor/stdcxx-4.1.3/util/time.cpp
xlCcore locale.o aliases.o charmap.o codecvt.o collate.o def.o ctype.o
diagnostic.o memchk.o messages.o monetary.o numeric.o path.o scanner.o time.o
-o locale -I/amd/devco/sebor/stdcxx-4.1.3/include/ansi -D_RWSTDDEBUG
-D_RWSTD_USE_CONFIG -liconv -brtl -qtemplateregistry=repository.ti
-L/build/sebor/stdcxx-4.1.3-xlc-7.0.0.9-11s/lib -lstd11s
-I/amd/devco/sebor/stdcxx-4.1.3/include/ansi -D_RWSTDDEBUG
-D_RWSTD_USE_CONFIG -I/build/sebor/stdcxx-4.1.3-xlc-7.0.0.9-11s/include
-I/amd/devco/sebor/stdcxx-4.1.3/include
-I/amd/devco/sebor/stdcxx-4.1.3/include/loc -lm
xlCcore -c -I/amd/devco/sebor/stdcxx-4.1.3/include/ansi -D_RWSTDDEBUG
-D_RWSTD_USE_CONFIG -I/build/sebor/stdcxx-4.1.3-xlc-7.0.0.9-11s/include
-I/amd/devco/sebor/stdcxx-4.1.3/include
-I/amd/devco/sebor/stdcxx-4.1.3/include/loc -g
-qtemplateregistry=repository.ti
/amd/devco/sebor/stdcxx-4.1.3/util/localedef.cpp
xlCcore localedef.o aliases.o charmap.o codecvt.o collate.o ctype.o def.o
diagnostic.o messages.o monetary.o numeric.o path.o time.o scanner.o -o
localedef -I/amd/devco/sebor/stdcxx-4.1.3/include/ansi -D_RWSTDDEBUG
-D_RWSTD_USE_CONFIG -liconv -brtl -qtemplateregistry=repository.ti
-L/build/sebor/stdcxx-4.1.3-xlc-7.0.0.9-11s/lib -lstd11s
-I/amd/devco/sebor/stdcxx-4.1.3/include/ansi -D_RWSTDDEBUG
-D_RWSTD_USE_CONFIG -I/build/sebor/stdcxx-4.1.3-xlc-7.0.0.9-11s/include
-I/amd/devco/sebor/stdcxx-4.1.3/include
-I/amd/devco/sebor/stdcxx-4.1.3/include/loc -lm
ld: 0711-317 ERROR: Undefined symbol:
.__rw::__rb_tree<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,std::pair<const
std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,wchar_t>,__rw::__select1st<std::pair<const
std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,wchar_t>,std::basic_string<char,std::char_traits<char>,std::allocator<char> >
>,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char>
> >,std::allocator<std::pair<const
std::basic_string<char,std::char_traits<char>,std::allocator<char> >,wchar_t> >
>::find(const
std::basic_string<char,std::char_traits<char>,std::allocator<char> >&)
ld: 0711-317 ERROR: Undefined symbol:
.__rw::__rb_tree<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,std::pair<const
std::basic_string<char,std::char_traits<char>,std::allocator<char> >,unsigned
int>,__rw::__select1st<std::pair<const
std::basic_string<char,std::char_traits<char>,std::allocator<char> >,unsigned
int>,std::basic_string<char,std::char_traits<char>,std::allocator<char> >
>,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char>
> >,std::allocator<std::pair<const
std::basic_string<char,std::char_traits<char>,std::allocator<char> >,unsigned
int> > >::__rb_tree(const
std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> >
>&,const std::allocator<std::pair<const
std::basic_string<char,std::char_traits<char>,std::allocator<char> >,unsigned
int> >&)
ld: 0711-317 ERROR: Undefined symbol:
.__rw::__rb_tree<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,std::pair<const
std::basic_string<char,std::char_traits<char>,std::allocator<char> >,unsigned
int>,__rw::__select1st<std::pair<const
std::basic_string<char,std::char_traits<char>,std::allocator<char> >,unsigned
int>,std::basic_string<char,std::char_traits<char>,std::allocator<char> >
>,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char>
> >,std::allocator<std::pair<const
std::basic_string<char,std::char_traits<char>,std::allocator<char> >,unsigned
int> > >::~__rb_tree()
ld: 0711-317 ERROR: Undefined symbol: .__rw::__rb_tree<wchar_t,std::pair<const
wchar_t,std::basic_string<char,std::char_traits<char>,std::allocator<char> >
>,__rw::__select1st<std::pair<const
wchar_t,std::basic_string<char,std::char_traits<char>,std::allocator<char> >
>,wchar_t>,std::less<wchar_t>,std::allocator<std::pair<const
wchar_t,std::basic_string<char,std::char_traits<char>,std::allocator<char> > >
> >::find(const wchar_t&)
ld: 0711-317 ERROR: Undefined symbol:
.__rw::__rb_tree<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,std::pair<const
std::basic_string<char,std::char_traits<char>,std::allocator<char> >,unsigned
int>,__rw::__select1st<std::pair<const
std::basic_string<char,std::char_traits<char>,std::allocator<char> >,unsigned
int>,std::basic_string<char,std::char_traits<char>,std::allocator<char> >
>,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char>
> >,std::allocator<std::pair<const
std::basic_string<char,std::char_traits<char>,std::allocator<char> >,unsigned
int> > >::_C_insert(const std::pair<const
std::basic_string<char,std::char_traits<char>,std::allocator<char> >,unsigned
int>&,std::pair<__rw::__rw_debug_iter<__rw::__rb_tree<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,std::pair<const
std::basic_string<char,std::char_traits<char>,std::allocator<char> >,unsigned
int>,__rw::__select1st<std::pair<const
std::basic_string<char,std::char_traits<char>,std::allocator<char> >,unsigned
int>,std::basic_string<char,std::char_traits<char>,std::allocator<char> >
>,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char>
> >,std::allocator<std::pair<const
std::basic_string<char,std::char_traits<char>,std::allocator<char> >,unsigned
int> > >,__rw::__rw_tree_iter<std::pair<const
std::basic_string<char,std::char_traits<char>,std::allocator<char> >,unsigned
int>,long,std::pair<const
std::basic_string<char,std::char_traits<char>,std::allocator<char> >,unsigned
int>*,std::pair<const
std::basic_string<char,std::char_traits<char>,std::allocator<char> >,unsigned
int>&,__rw::__rw_rb_tree_node<std::allocator<std::pair<const
std::basic_string<char,std::char_traits<char>,std::allocator<char> >,unsigned
int> >,std::pair<const
std::basic_string<char,std::char_traits<char>,std::allocator<char> >,unsigned
int>,std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,__rw::__select1st<std::pair<const
std::basic_string<char,std::char_traits<char>,std::allocator<char> >,unsigned
int>,std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >
>,__rw::__rw_tree_iter<std::pair<const
std::basic_string<char,std::char_traits<char>,std::allocator<char> >,unsigned
int>,long,std::pair<const
std::basic_string<char,std::char_traits<char>,std::allocator<char> >,unsigned
int>*,std::pair<const
std::basic_string<char,std::char_traits<char>,std::allocator<char> >,unsigned
int>&,__rw::__rw_rb_tree_node<std::allocator<std::pair<const
std::basic_string<char,std::char_traits<char>,std::allocator<char> >,unsigned
int> >,std::pair<const
std::basic_string<char,std::char_traits<char>,std::allocator<char> >,unsigned
int>,std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,__rw::__select1st<std::pair<const
std::basic_string<char,std::char_traits<char>,std::allocator<char> >,unsigned
int>,std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > >
>,bool>&,bool)
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.
gmake: *** [localedef] Error 8
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.