Hi,

I think the problem occurred on big-endian systems. Are ppc64el and s390x
indeed big-endian? (IOW does the openMSX build system correctly detects
this?)

I pushed a fix upstream:

https://github.com/openMSX/openMSX/commit/0c259566e5f7a9597369b66c03d957ba7d37e5d1
This patch makes the big- and little-endian code paths more similar (it
only keeps the essential differences).

I think this will fix the problem. But I have not been able to test-compile
this myself.

Thanks for reporting.


Wouter



On Thu, Apr 2, 2020 at 3:09 PM Matthias Klose <d...@debian.org> wrote:

> Package: src:openmsx
> Version:
> Severity: serious
> Tags: sid bullseye
>
> openmsx ftbfs at least on ppc64el and s390x with
>
> src/utils/small_compare.hh: In instantiation of ‘struct ScValBe<unsigned
> int,
> '\357', '\273', '\277'>’:
> src/utils/small_compare.hh:88:41:   required from ‘struct ScVal<unsigned
> int,
> '\357', '\273', '\277'>’
> src/utils/small_compare.hh:100:37:   required from ‘const type
> SmallCompare<'\357', '\273', '\277'>::mask’
> src/utils/small_compare.hh:110:20:   required from ‘bool
> small_compare(const
> char*) [with char ...Ns = {'\357', '\273', '\277'}]’
> src/utils/rapidsax.hh:208:34:   required from ‘bool
> rapidsax::internal::next(const char*) [with char C0 = '\357'; char C1 =
> '\273';
> char C2 = '\277']’
> src/utils/rapidsax.hh:353:51:   required from here
> src/utils/small_compare.hh:84:41: error: narrowing conversion of ‘-1’ from
> ‘int’
> to ‘unsigned int’ [-Wnarrowing]
>    84 | template<typename T, char ...Ns> struct ScValBe : ScValBeImpl<T,
> 0, -1,
> Ns...> {};
>       |                                         ^~~~~~~
> src/utils/small_compare.hh: In instantiation of ‘const type
> SmallCompare<'\357',
> '\273', '\277'>::mask’:
>
> and
>
> src/utils/small_compare.hh: In instantiation of ‘const type
> SmallCompare<'t',
> ';'>::value’:
> src/utils/small_compare.hh:110:32:   required from ‘bool
> small_compare(const
> char*) [with char ...Ns = {'t', ';'}]’
> src/utils/rapidsax.hh:204:30:   required from ‘bool
> rapidsax::internal::next(const char*) [with char C0 = 't'; char C1 = ';']’
> src/utils/rapidsax.hh:281:22:   required from ‘char*
> rapidsax::internal::skipAndExpand(char*&) [with StopPred =
> rapidsax::internal::AttPred1; StopPredPure =
> rapidsax::internal::AttPurePred1;
> int FLAGS = 2]’
> src/utils/rapidsax.hh:704:52:   required from ‘void
> rapidsax::internal::Parser<FLAGS, HANDLER>::parseAttributes(char*&, bool)
> [with
> int FLAGS = 2; HANDLER = openmsx::XMLLoader::XMLElementParser]’
> src/utils/rapidsax.hh:387:3:   required from ‘void
> rapidsax::internal::Parser<FLAGS, HANDLER>::parseDeclaration(char*&) [with
> int
> FLAGS = 2; HANDLER = openmsx::XMLLoader::XMLElementParser]’
> src/utils/rapidsax.hh:575:5:   required from ‘void
> rapidsax::internal::Parser<FLAGS, HANDLER>::parseNode(char*&) [with int
> FLAGS =
> 2; HANDLER = openmsx::XMLLoader::XMLElementParser]’
> src/utils/rapidsax.hh:377:4:   required from
> ‘rapidsax::internal::Parser<FLAGS,
> HANDLER>::Parser(HANDLER&, char*) [with int FLAGS = 2; HANDLER =
> openmsx::XMLLoader::XMLElementParser]’
> src/utils/rapidsax.hh:731:35:   required from ‘void
> rapidsax::parse(HANDLER&,
> char*) [with int FLAGS = 2; HANDLER =
> openmsx::XMLLoader::XMLElementParser]’
> src/config/XMLLoader.cc:46:64:   required from here
> src/utils/small_compare.hh:99:37: error: ‘value’ is not a member of
> ‘SmallCompare<'t', ';'>::C’ {aka ‘ScVal<short unsigned int, 't', ';'>’}
>    99 |  static const typename Loader::type value = C::value;
>       |                                     ^~~~~
> make[2]: *** [build/main.mk:531:
> derived/s390-linux-debian/obj/config/XMLLoader.o] Error 1
>
>

Reply via email to