On 13/08/15 15:13 +0200, John Marino wrote:
On 7/31/2015 6:06 PM, John Marino wrote:
So far, DragonFly only handles the C/POSIX locale through the "generic"
locale support files, similar to FreeBSD and Darwin.  The following
patchset enables nearly complete support for named locales.  The except
is for std:messages which requires gettext support in libc which is not
present in any *BSD.  For that category, I have left generic support in
place at Jonathan's recommendation.

The support was made by talking the GNU version and adapting it to work
on DragonFly.

Testing has shown these patches to be working.  A "before" test results:
  https://gcc.gnu.org/ml/gcc-testresults/2015-07/msg01678.html
    PASS: 9883
    FAIL: 89
    XSUCC: 1
    XFAIL: 66
    UNSUP: 465
The most recent test:
  https://gcc.gnu.org/ml/gcc-testresults/2015-07/msg03024.html
    PASS:  10074
    FAIL:  32
    XFAIL: 68
    UNSUP: 401

For full disclosure, a number of improvements were made to the OS in the
area of locales, such as DragonFly being the first BSD to acquire full
collation support.

Most of the remaining failures are due to differences in locale
definitions between linux and DragonFly (DragonFly now uses CLDR POSIX
definitions, v2.0.1 currently)

Attachments:
  1. combined diff
  2. diff between gnu and dragonfly version (FYI)
  3. Suggested Changelog entry

This work should be highly interesting for FreeBSD and perhaps darwin as
well.  FreeBSD may be able to switch to it directly without any required
modifications, but of course that must be tested.

There is no risk to approving this patchset because it affects only
DragonFly.  Please consider approving this for incorporating into trunk
(also recall that my FSF copyright assignment is filed and in order.)


N.B. please CC the libstdc++ list on all libstdc++ patches.

The tests on DragonFly look excellent now, nice work.


I'd like to ping the original post
(https://gcc.gnu.org/ml/gcc-patches/2015-07/msg02678.html )
and also provide a 2-line revision of the patch set.

The first line adds "#include <xlocale.h>" to bits/c++locale.h which is
needed for the locale_t type definition.

The second change adds "#define _GLIBCXX_USE_C99 1" to dragonfly's
os_defines.h.  We copied FreeBSD's configuration, but FreeBSD doesn't
yet support C99 so it wasn't set there.  It fixes several regressions we
found after using GCC a bit.

I think that should probably be defined on FreeBSD too now, so that
the _GLIBCXX_USE_C99_DYNAMIC checks come into effect.

How does this attached patchset look?
I had to add one line to the suggested Changelog entry for os_defines.h

Committed to trunk with only minor changes to remove some trailing
whitespace in config/os/bsd/dragonfly/ctype_configure_char.cc and to
capitalize a couple of ChangeLog lines.

Thanks for the ongoing improvements to DragonFly support.

Reply via email to