Your message dated Wed, 30 Dec 2020 21:22:24 +0100
with message-id <fece6ce4-2ec3-2735-74bc-194eb5eeb...@debian.org>
and subject line Re: Bug#978612: libboost1.74-dev: Fails to detect the
endianness on s390x architecture
has caused the Debian Bug report #978612,
regarding libboost1.74-dev: Fails to detect the endianness on s390x architecture
to be marked as done.
This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.
(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact ow...@bugs.debian.org
immediately.)
--
978612: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=978612
Debian Bug Tracking System
Contact ow...@bugs.debian.org with problems
--- Begin Message ---
Package: libboost1.74-dev
Version: 1.74.0-6
Severity: important
Dear Maintainer,
The Boost library is failing to detect the endianness of an s390x
system, at least when it is done throught the macros
BOOST_ENDIAN_LITTLE_BYTE and BOOST_ENDIAN_BIG_BYTE.
The s390x architecture is big-endian. However the following program
test.c:
///////// test.c ////////////////////////////////////////
#include <boost/predef/other/endian.h>
#if defined(BOOST_ENDIAN_LITTLE_BYTE)
According to Boost, this system is little-endian.
#elif defined(BOOST_ENDIAN_BIG_BYTE)
According to Boost, this system is big-endian.
#else
Boost cannot determine the endianness of this system.
#endif
////////////////////////////////////////////////////////
when fed into the C preprocessor on an s390x system, yields the
following:
$ cpp -E test.c | tail -n1
According to Boost, this system is little-endian.
This problem causes the release-critical Bug#977357 against the libgdf
package (FTBFS on s390x).
Best regards,
Rafael Laboissière
--- End Message ---
--- Begin Message ---
Hi,
Il 29/12/20 10:00, Rafael Laboissière ha scritto:
The s390x architecture is big-endian. However the following program
test.c:
///////// test.c ////////////////////////////////////////
#include <boost/predef/other/endian.h>
#if defined(BOOST_ENDIAN_LITTLE_BYTE)
According to Boost, this system is little-endian.
#elif defined(BOOST_ENDIAN_BIG_BYTE)
According to Boost, this system is big-endian.
#else
Boost cannot determine the endianness of this system.
#endif
////////////////////////////////////////////////////////
The macro are always defined, you should test their value, not their
existence. Basically, you need to use
#if BOOST_ENDIAN_LITTLE_BYTE
instead of
#if defined(BOOST_ENDIAN_LITTLE_BYTE)
With this change, your program correctly says that s390x is big-endian.
Giovanni.
--
Giovanni Mascellani <g.mascell...@gmail.com>
--- End Message ---