This is the mail archive of the mailing list for the libstdc++ project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Current testsuite failure analysis on i386-unknown-freebsd4.7

Every current (newly recent) failure on mainline appears related to
locale support in some way or another.  Please bare with me, I barely
(pun not intended ;-) understand plain C locale, much less the C++-style.

``generic - This model does very little, and is what is used by default.''

Generic implies that only C89 locale support is available.  First
general question, should generic locale at least pass the bulk of the
22_locale tests or `does very little' (in statement quoted above from
documentation) imply that other than the C++ ABI being supported, the
backing implementation is mostly missing?  Since __c_locale is a
complete placeholder, I don't see how anything related to a non-"C"
locale() could possibly work.

``ieee_1003.1-200x - This is a complete, though untested,
  implementation based on the IEEE standard.''

I also tried --enable-clocale=ieee_1003.1-2001 (since I think we have
all the required entry points) before sending this report, however it
will not currently build.  The issue appears to be internal to the
libstdc++-v3 code base (missing _GLIBCPP_NUM_CATEGORIES macro) and
nothing related to the platform.  Also, configure reported: ``checking
for clocale to use... generic'' but running make later seemed to link
in a mix of locale/ieee_1003.1-2001 and locale/generic versions of
code (only used generic when no ieee_1003.1-2001 version).  I added
the obvious define for _GLIBCPP_NUM_CATEGORIES 0, but
and still fail to compile with many missing templates
and/or prototypes (i.e. looks like zero people are using this code and
it hasn't been maintained since the above comment was written).  Oh well.

Current generic locale failures on i386-unknown-freebsd4.7 with the
reason as best I could determine:

  30  terminate called after throwing an instance of
      '__gnu_cxx_test::environment_variable' what():  LC_ALL forja_JP.eucjp

Reason: locale doesn't exist on machine; should test cases fail for this reason?

   1  "d == 1234.5" failed: "22_locale/num_get/get/char/", line 47

Reason: 1234,5 parses (incorrectly?) in de_DE locale to 1234

Under generic, it is unclear that we make any pretense of handling
this case since: the first call to setlocale() in the program is
buried within the std::__convert_to_v<double> implementation.  By that
point, the parsing of the stream related to decimal point has already
occurred (the string passed into __convert_to_v<double>() is bounded
to four characters: "1234").

   1  "dp1 != dp2" failed: "22_locale/locale/cons/", line 85
   2  "dp1 != dp2" failed: "22_locale/moneypunct/members/char/", line 78
   1  "dp1 != dp3" failed: "22_locale/moneypunct_byname/", line 91
   1  "dp1 != dp3" failed: "22_locale/numpunct_byname/", line 69
   2  "dp2 != dp3" failed: "22_locale/numpunct/members/char/", line 73

Reason: all failing for the same reason, never calling setlocale() /
localeconv()->decimal_point to learn related locale's proper setting.

At this point, I looked closely at the generic implementation and
decided that it isn't even using the API guaranteed by C89?  What's
up?  Should I make generic support a non-placeholder __c_locale based
on the cloned return from localeconv()?  Or must I clone the entire
generic tree to "POSIX" / "BSD" and then make the change?  Generic
already assumes that setlocale() and localeconv() calls are available
and struct lconv's members were encoded in the C89 standard.  If
various ports can't take my proposed generic improvement, I guess I'd
rather conditionalize on autoconf tests than clone the entire tree.

   1  "errorstate == ios_base::eofbit"
      failed: "22_locale/time_get/get_date/char/", line 89
   2  "errorstate == ios_base::eofbit"
      failed: "22_locale/time_get/get_time/char/", line 73
   1  "errorstate == ios_base::eofbit"
      failed: "22_locale/time_get/get_weekday/char/", line 73
   1  "failures == 0" failed: "24_iterators/", line 607
   2  "i1 == -1" failed: "22_locale/collate/compare/char/", line 72
   1  "i1 == -1" failed: "22_locale/collate_byname/", line 64
   2  "i2 == -1" failed: "22_locale/collate/transform/char/", line 64
   1  "l == l1" failed: "22_locale/num_get/get/char/", line 84
   2  "result1 == "1.294.967.294+++++++""
      failed: "22_locale/num_put/put/char/", line 92
   1  "result1 == "2,147,483,647""
      failed: "22_locale/num_put/put/char/", line 78
   2  "result1 == ",00 ""
      failed: "22_locale/money_put/put/char/", line 79
   1  "result1 == ",00 ""
      failed: "22_locale/money_put/put/char/", line 76
   2  "result1 == digits1" failed: "22_locale/money_get/get/char/", line 84
   1  "result1 == digits1" failed: "22_locale/money_get/get/char/", line 80
   1  "result11 == "dimanche, the second of avril""
      failed: "22_locale/time_put/put/char/", line 66
   2  "result2 == "Son"" failed: "22_locale/time_put/put/char/", line 65
   1  "result3 == digits4" failed: "22_locale/money_get/get/char/", line 83
   1  "result4 == "dim"" failed: "22_locale/time_put/put/char/", line 64
   1  "result5 == "HK$7,200,000,000.00""
      failed: "22_locale/money_put/put/char/", line 84
   1  "result7 == "Sonntag, the second of April""
      failed: "22_locale/time_put/put/char/", line 67
   1  "result9 == digits1" failed: "22_locale/money_get/get/char/", line 86
   2  "s01 == "bitte"" failed: "22_locale/messages/members/char/", line 60
   1  "s01 == "bitte"" failed: "22_locale/messages_byname/", line 58
   1  "s01 == "s'il vous plaît""
      failed: "22_locale/messages/members/char/", line 60
   1  "std::isalpha(ch, loc)" failed: "22_locale/ctype/is/char/", line 48
   1  "time10.tm_mday == time_bday.tm_mday"
      failed: "22_locale/time_get/get_date/char/", line 87
   1  "time10.tm_wday == time_bday.tm_wday"
      failed: "22_locale/time_get/get_weekday/char/", line 72
   2  "tmp = ctable" failed: "22_locale/ctype/cons/char/", line 60
   1  "ul == 0xbffff74c" failed: "22_locale/num_get/get/char/", line 51
   2  "ul == ul1" failed: "22_locale/num_get/get/char/", line 99
   2  "v_c != v_de" failed: "22_locale/ctype/is/char/", line 97

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]