Bug 453566
| Summary: | glib2 broken on big endian architectures | ||
|---|---|---|---|
| Product: | [Fedora] Fedora | Reporter: | Tomas Mraz <tmraz> |
| Component: | glib2 | Assignee: | Matthias Clasen <mclasen> |
| Status: | CLOSED RAWHIDE | QA Contact: | Fedora Extras Quality Assurance <extras-qa> |
| Severity: | high | Docs Contact: | |
| Priority: | high | ||
| Version: | rawhide | ||
| Target Milestone: | --- | ||
| Target Release: | --- | ||
| Hardware: | powerpc | ||
| OS: | Linux | ||
| Whiteboard: | |||
| Fixed In Version: | Doc Type: | Bug Fix | |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2008-07-03 04:49:35 UTC | Type: | --- |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Embargoed: | |||
| Bug Depends On: | 449944 | ||
| Bug Blocks: | |||
|
Description
Tomas Mraz
2008-07-01 12:04:20 UTC
Tomas, do you have a workaround that I can use in glib until autoconf is fixed ? Does this look like it will work ? --- configure.in.endian 2008-07-02 11:43:44.000000000 -0400 +++ configure.in 2008-07-02 11:46:20.000000000 -0400 @@ -3159,18 +3159,21 @@ g_have_gnuc_visibility=$g_have_gnuc_visibility g_have_sunstudio_visibility=$g_have_sunstudio_visibility -case xyes in -x$ac_cv_c_bigendian) +if test x$ac_cv_c_bigendian = xyes; then g_byte_order=G_BIG_ENDIAN g_bs_native=BE g_bs_alien=LE - ;; -*) - g_byte_order=G_LITTLE_ENDIAN - g_bs_native=LE - g_bs_alien=BE - ;; -esac +else + if test x$ac_cv_c_bigendian = xuniversal then + g_byte_order=G_BIG_ENDIAN + g_bs_native=BE + g_bs_alien=LE + else + g_byte_order=G_LITTLE_ENDIAN + g_bs_native=LE + g_bs_alien=BE + fi +fi g_pollin=$glib_cv_value_POLLIN g_pollout=$glib_cv_value_POLLOUT No, that would make it break on little endian machines, because the
ac_cv_c_bigendian contains always universal with this autoconf version.
You can try to add something like this after the AC_C_BIGENDIAN:
if test x$ac_cv_c_bigendian = xuniversal ; then
AC_TRY_COMPILE([#include <endian.h>], [#if __BYTE_ORDER == __BIG_ENDIAN.
#else.
#error Not a big endian.
#endif],.
ac_cv_c_bigendian=yes
,AC_TRY_COMPILE([#include <endian.h>], [#if __BYTE_ORDER == __LITTLE_ENDIAN.
#else.
#error Not a little endian.
#endif],.
ac_cv_c_bigendian=no
,AC_MSG_WARN([Could not determine endianness.])))
fi
I've added these workarounds in 2.17.3-1.fc10 |