cvs commit: src/lib/libc/locale utf8.c

Rong-en Fan grafan at gmail.com
Sat Oct 27 01:30:34 PDT 2007


On 10/27/07, Rong-en Fan <grafan at gmail.com> wrote:
[...]
> I admit that I really did a very bad abi damage on libc. I have been
> working on it and
> removing those inline __* functions in _ctype.h help. It can be upgraded and
> also downgraded without problems. Without those inline stuffs,
> buildworld+installworld
> time difference is less than 60 seconds, which looks good. I will post the
> patch after some more tests.
>
> As for RELENG_7 and HEAD, I'm not 100% sure whether we should restore
> the compatibility as 1) 7.0 is not released yet, 2) we don't promise
> anything in
> HEAD branch. However, if most people think get rid of inline stuffs and
> have libc compatibility are nice, then we do the same for those two branches.

After some tests, the patch is at

http://people.freebsd.org/~rafan/ctype-abi-fix-6.diff

Let me describe this patch in more details. Fist, we actually
compile those inline functions as real functions in
lib/libc/locale/nomacro.c if _EXTERNAL_CTYPE_INLINES_ is defined.
I make 4 inline functions that use the __mb_sb_limit symbol,
which break the compatibility, always compiled as real functions.
I also considered that moving those inlined function in another
C file, but I think it would make the source codes diverse
among 6 and 7/8.

Now, as it may affect performance for text processing
programs. I would like to make this in RELENG_6 only and
leave RELENG_7 and HEAD alone. Also ache@ expressed
his objection.

I have tested this patch. As it still exports __mb_sb_limit from
libc.so, users can safely upgrade and downgrade their system
without problems (I did few times, actually).

The second and third hunks of the patch is nop because we
include runetype.h in _ctype.h (but only we use inline stuffs).
These two will be fixed in HEAD and following a normal MFC.

Regards,
Rong-En Fan


More information about the cvs-src mailing list