On 2017/05/09 12:25, Juan Francisco Cantero Hurtado wrote:
> On Tue, May 09, 2017 at 11:24:27AM +1000, Jonathan Gray wrote:
> > On Mon, May 08, 2017 at 10:47:56PM +0200, Donovan Watteau wrote:
> > > Hi,
> > > 
> > > ScummVM and ResidualVM share some code, and it looks like they 
> > > trigger an old bug with GCC 4.2.1 on ppc.
> > > 
> > > All the games having voices crash at startup on macppc, with what
> > > looks like some miscompiled code in audio/decoders/voc.cpp for
> > > ScummVM, and common/stream.cpp for ResidualVM.
> > > 
> > > After some trial and error, it looks like this is a bug with
> > > -funit-at-a-time on GCC 4.2.1.  I see this problem on macppc,
> > > but it could also happen on arm, judging by the following
> > > similar reports:
> > > http://www.smartmontools.org/ticket/219
> > > https://gcc.gnu.org/ml/gcc-help/2010-11/msg00038.html
> > 
> > I think you should only do this for powerpc for now, as
> > otherwise aarch64 has no chance of building.
> > 
> 
> With MODGCC4_ARCHS=${GCC3_ARCHS} ${GCC4_ARCHS}, the port will use clang
> on aarch64.

But if you just change that, WANTLIB will be missing the c++ libs.

> > > 
> > > So, using -fno-unit-at-a-time could be an option and works, but
> > > it looks like a complex and random bug in GCC 4.2, so I think it's
> > > probably safer to compile ScummVM and ResidualVM with a newer
> > > compiler that doesn't miscompile this in the first place.
> > > 
> > > The crashes disappear on macppc when compiling with GCC 4.9.
> > > 
> > > Switch to .tar.xz distfiles while there, as this was debugged
> > > on an extremely poor link where saving a bit of bandwidth helped.
> > > 
> > > games/scummvm:
> > > 
> > > Index: Makefile
> > > ===================================================================
> > > RCS file: /cvs/ports/games/scummvm/Makefile,v
> > > retrieving revision 1.68
> > > diff -u -p -r1.68 Makefile
> > > --- Makefile      10 Apr 2017 11:46:19 -0000      1.68
> > > +++ Makefile      8 May 2017 20:24:55 -0000
> > > @@ -5,6 +5,8 @@ V=                1.9.0
> > >  DISTNAME=        scummvm-${V}
> > >  CATEGORIES=      games x11 emulators
> > >  MASTER_SITES=    http://www.scummvm.org/frs/scummvm/${V}/
> > > +EXTRACT_SUFX=    .tar.xz
> > > +REVISION=        0
> > >  
> > >  HOMEPAGE=        http://www.scummvm.org/
> > >  
> > > @@ -13,12 +15,18 @@ MAINTAINER=   Jonathan Gray <jsg@openbsd.o
> > >  # GPLv2+
> > >  PERMIT_PACKAGE_CDROM=    Yes
> > >  
> > > -WANTLIB += FLAC SDL2 c faad freetype jpeg m mad png pthread sndio 
> > > ${LIBCXX}
> > > +WANTLIB += FLAC SDL2 c faad freetype jpeg m mad png pthread sndio
> > >  WANTLIB += theoradec z
> > >  
> > >  .if ${MACHINE_ARCH} == "i386"
> > >  BUILD_DEPENDS=   devel/nasm
> > >  .endif
> > > +
> > > +# GCC 4.2.1 miscompiles this on at least ppc, so play safe and
> > > +# just use a newer compiler everywhere.
> > > +MODULES= gcc4
> > > +MODGCC4_ARCHS=   *
> > > +MODGCC4_LANGS=   c++
> > >  
> > >  RUN_DEPENDS=     devel/desktop-file-utils
> > >  LIB_DEPENDS=     audio/libmad \
> > > Index: distinfo
> > > ===================================================================
> > > RCS file: /cvs/ports/games/scummvm/distinfo,v
> > > retrieving revision 1.34
> > > diff -u -p -r1.34 distinfo
> > > --- distinfo      1 Nov 2016 13:03:14 -0000       1.34
> > > +++ distinfo      8 May 2017 20:24:55 -0000
> > > @@ -1,2 +1,2 @@
> > > -SHA256 (scummvm-1.9.0.tar.gz) = 
> > > tfDO8sSds8UhjPhe9xhUi3Ctj6Wks20h3ywGcVBVgfU=
> > > -SIZE (scummvm-1.9.0.tar.gz) = 33252122
> > > +SHA256 (scummvm-1.9.0.tar.xz) = 
> > > JBftyxrVHKBagXxYru5hC8bbVEKYTozyjopf2RTorgU=
> > > +SIZE (scummvm-1.9.0.tar.xz) = 22020384
> > > 
> > > games/residualvm:
> > > 
> > > Index: Makefile
> > > ===================================================================
> > > RCS file: /cvs/ports/games/residualvm/Makefile,v
> > > retrieving revision 1.7
> > > diff -u -p -r1.7 Makefile
> > > --- Makefile      10 Apr 2017 11:46:19 -0000      1.7
> > > +++ Makefile      8 May 2017 20:24:58 -0000
> > > @@ -5,7 +5,7 @@ COMMENT =         interpreter for some LucasArt
> > >  V =                      0.2.1
> > >  DISTNAME =               residualvm-${V}-sources
> > >  PKGNAME =                residualvm-${V}
> > > -REVISION =               1
> > > +REVISION =               2
> > >  
> > >  CATEGORIES =             games
> > >  
> > > @@ -14,7 +14,7 @@ HOMEPAGE =              http://residualvm.org/
> > >  # GPLv2+
> > >  PERMIT_PACKAGE_CDROM =   Yes
> > >  
> > > -WANTLIB += GL SDL c freetype iconv jpeg m mad mpeg2 ogg png pthread 
> > > ${LIBCXX}
> > > +WANTLIB += GL SDL c freetype iconv jpeg m mad mpeg2 ogg png pthread
> > >  WANTLIB += theoradec vorbis vorbisfile z
> > >  
> > >  MASTER_SITES =           ${MASTER_SITE_SOURCEFORGE:=residualvm/}
> > > @@ -29,6 +29,12 @@ LIB_DEPENDS =          audio/libmad \
> > >                   multimedia/libtheora
> > >  RUN_DEPENDS =            devel/desktop-file-utils \
> > >                   x11/gtk+3,-guic
> > > +
> > > +# GCC 4.2.1 miscompiles this on at least ppc, so play safe and
> > > +# just use a newer compiler everywhere.
> > > +MODULES =                gcc4
> > > +MODGCC4_ARCHS =          *
> > > +MODGCC4_LANGS =          c++
> > >  
> > >  SEPARATE_BUILD = Yes
> > >  USE_GMAKE =              Yes
> > > 
> > 
> 
> -- 
> Juan Francisco Cantero Hurtado http://juanfra.info
> 

Reply via email to