I noticed that you use "-DX_LOCALE" while compiling xfree86. That means xserver will use its own xlocale, not glibc's.
I removed the "-DX_LOCALE" and recompiled the xfree86. Now I can use xim under en_US.UTF-8 and zh_CN.UTF-8( ie. we can use scim or fcitx or ... for QT).
I also added some locales (en_US.UTF-8 and zh_CN.UTF-8 ...) in glibc when building the cross-toolchain. But I don't know whether it will change the result.
Please consider this before you present the new release.
And forgive my english.