incubator-stdcxx-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Martin Sebor (JIRA)" <j...@apache.org>
Subject [jira] Commented: (STDCXX-386) [XLC++] unsats building locale and localedef
Date Fri, 06 Apr 2007 23:04:32 GMT

    [ https://issues.apache.org/jira/browse/STDCXX-386?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12487354
] 

Martin Sebor commented on STDCXX-386:
-------------------------------------

The committed patch restructures the utilities in a way that makes localedef capable of behaving
like locale when passed --locale-mode as the first option. The locale utility is a just a
dummy wrapper that calls localedef with that option. This eliminates the need for the symbols
from the template registry in locale and avoids the linker error. In addition to dealing with
this problem this has the added benefit of greatly reducing the footprint of the two utilities
(since they shared most object files).

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


Mime
View raw message