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 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 int,
> '\357', '\273', '\277'>’:
> src/utils/small_compare.hh:88:41: required from ‘struct ScVal 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 struct ScValBe : ScValBeImpl 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::parseAttributes(char*&, bool)
> [with
> int FLAGS = 2; HANDLER = openmsx::XMLLoader::XMLElementParser]’
> src/utils/rapidsax.hh:387:3: required from ‘void
> rapidsax::internal::Parser::parseDeclaration(char*&) [with
> int
> FLAGS = 2; HANDLER = openmsx::XMLLoader::XMLElementParser]’
> src/utils/rapidsax.hh:575:5: required from ‘void
> rapidsax::internal::Parser::parseNode(char*&) [with int
> FLAGS =
> 2; HANDLER = openmsx::XMLLoader::XMLElementParser]’
> src/utils/rapidsax.hh:377:4: required from
> ‘rapidsax::internal::Parser 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’}
>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
>
>