Subject: Re: [Boost-bugs] [Boost C++ Libraries] #10505: Use gcc/clang built-in endianity macros (too)
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2015-05-18 20:13:13
#10505: Use gcc/clang built-in endianity macros (too)
---------------------------------+----------------------
Reporter: Jan Hudec <bulb@â¦> | Owner: grafik
Type: Bugs | Status: reopened
Milestone: To Be Determined | Component: predef
Version: Boost 1.56.0 | Severity: Problem
Resolution: | Keywords:
---------------------------------+----------------------
Changes (by anonymous):
* status: closed => reopened
* resolution: obsolete =>
Comment:
The current version fixes the part of the problem that the checks on in
`endian.h` lines 72-99 now won't trigger in the errorneous Bionic libc
case when `_BYTE_ORDER` is defined, but `_LITTLE_ENDIAN` is not.
However, the gcc 4.6 toolchain (which we still need, because binaries
built with newer ones don't work on Android < 2.3 and our code otherwise
works on 2.1 just fine) does //not// define `__LITTLE_ENDIAN__`, so the
fallbacks further down on lines 106 and 124 don't trigger on x86 (on arm
the `__ARMEL__` define is found).
So I would still suggest adding the test for the older gcc macros:
{{{
#if defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) && \
defined(__ORDER_LITTLE_ENDIAN__) &&
defined(__ORDER_PDP_ENDIAN__)
# if (__BYTE_ORDER == __ORDER_BIG_ENDIAN__)
# undef BOOST_ENDIAN_BIG_BYTE
# define BOOST_ENDIAN_BIG_BYTE BOOST_VERSION_NUMBER_AVAILABLE
# endif
# if (__BYTE_ORDER == __ORDER_LITTLE_ENDIAN__)
# undef BOOST_ENDIAN_LITTLE_BYTE
# define BOOST_ENDIAN_LITTLE_BYTE BOOST_VERSION_NUMBER_AVAILABLE
# endif
# if (__BYTE_ORDER == __ORDER_PDP_ENDIAN__)
# undef BOOST_ENDIAN_LITTLE_WORD
# define BOOST_ENDIAN_LITTLE_WORD BOOST_VERSION_NUMBER_AVAILABLE
# endif
#endif
}}}
Since things depend on these in the gcc-provided headers, they should be
reliable in gcc and clang.
Sorry, I missed the question on new year's eve.
PS: I wanted to make the line references to github, but trac won't accept
it.
-- Ticket URL: <https://svn.boost.org/trac/boost/ticket/10505#comment:6> Boost C++ Libraries <http://www.boost.org/> Boost provides free peer-reviewed portable C++ source libraries.
This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:18 UTC