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 ---

Reply via email to