[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.

Reply via email to