New AIX failures
David Edelsohn
dje@watson.ibm.com
Mon Jun 3 15:04:00 GMT 2002
>>>>> B Kosnik writes:
Ben> There is also a new ctype failure on AIX. It's not a new failure, just
Ben> counted as one: it's a test that used to be XFAILED.
Ben> Can you check it out? I believe it's the 22_locale/ctype_to_char.cc
Ben> test.
ctype_to_char.exe is overflowing the stack. Stepping in a
debugger and stopping soon after the program goes out of control, the
traceback looks like:
#70 0xd10d36a4 in std::ctype<char>::do_toupper(char) const (this=0xf05a82fc,
__c=115 's')
at /gcc/dje/build/powerpc-ibm-aix4.3.3.0-20020602/powerpc-ibm-aix4.3.3.0/libstdc++-v3/include/bits/locale_facets.h:88
#71 0xd10d36a4 in std::ctype<char>::do_toupper(char) const (this=0xf05a82fc,
__c=115 's')
at /gcc/dje/build/powerpc-ibm-aix4.3.3.0-20020602/powerpc-ibm-aix4.3.3.0/libstdc++-v3/include/bits/locale_facets.h:88
#72 0xd10d36a4 in std::ctype<char>::do_toupper(char) const (this=0xf05a82fc,
__c=115 's')
at /gcc/dje/build/powerpc-ibm-aix4.3.3.0-20020602/powerpc-ibm-aix4.3.3.0/libstdc++-v3/include/bits/locale_facets.h:88
#73 0x10000d00 in std::__ctype_abstract_base<char>::toupper(char) const (
this=0x2ff227a8, __c=115 's')
at /gcc/dje/build/powerpc-ibm-aix4.3.3.0-20020602/powerpc-ibm-aix4.3.3.0/libstdc++-v3/include/bits/locale_facets.h:88
#74 0x10000748 in test01() ()
at /gcc/dje/src/libstdc++-v3/testsuite/22_locale/ctype_to_char.cc:83
#75 0x10000c6c in main ()
at /gcc/dje/src/libstdc++-v3/testsuite/22_locale/ctype_to_char.cc:136
#76 0x100001dc in __start ()
I assume that the definition actually is coming from the OS config
bits in ctype_noninline.h and is recursing because AIX ctype.h has
#define _toupper(__a) toupper(__a)
#define _tolower(__a) tolower(__a)
The macros only are defined for _XOPEN_SOURCE which we define for other
reasons.
_toupper and _tolower are symbols in libc.a, but they apparently
have a limited domain of only lower-case and only upper-case.
Another part of AIX ctype.h defines toupper and tolower in terms
of __OBJ_DATA, but says that it only is valid for "C" and "POSIX"
locales.
I think the correct solution is for ctype_noninline.h to invoke
AIX toupper() and tolower() subroutines. What is the appropriate
libstdc++-v3 header file syntax to force libstdc++ to access the AIX
extern "C" toupper() function?
Thanks, David
More information about the Libstdc++
mailing list