[Buildroot] [PATCH v2 1/2] package/sdl2: disable altivec built-in function for PowerPC

Sam Bobroff sam.bobroff at au1.ibm.com
Wed Mar 1 02:13:11 UTC 2017


On Wed, Mar 01, 2017 at 12:24:52AM +0100, Romain Naour wrote:
> As reported in this bug report [1], altivec support in SDL break
> arbitrary C++ code.
> 
> Issue reported by test-pkg script while testing supertux package:
>     error: could not convert 'true' from 'bool' to '__vector(4) __bool int'
> 
> [1] https://bugs.debian.org/cgi-bin/bugreport.cgi/?bug=770670
> 
> Signed-off-by: Romain Naour <romain.naour at gmail.com>
> Cc: Sam Bobroff <sam.bobroff at au1.ibm.com>

Hi Romain,

If you want to keep alitvec support on you can probably work around this
problem by using -std=gnu99 (which I used for mpv, see
package/mpv/0002-fix-powerpc64-altivec.patch).

Cheers,
Sam.

> ---
>  package/sdl2/sdl2.mk | 10 ++++++++++
>  1 file changed, 10 insertions(+)
> 
> diff --git a/package/sdl2/sdl2.mk b/package/sdl2/sdl2.mk
> index d2ee50d..628d906 100644
> --- a/package/sdl2/sdl2.mk
> +++ b/package/sdl2/sdl2.mk
> @@ -23,6 +23,16 @@ SDL2_CONF_OPTS += \
>  # We must enable static build to get compilation successful.
>  SDL2_CONF_OPTS += --enable-static
>  
> +# From https://bugs.debian.org/cgi-bin/bugreport.cgi/?bug=770670
> +# "The problem lies within SDL_cpuinfo.h.  It includes altivec.h, which by
> +# definition provides an unconditional vector, pixel and bool define in
> +# standard-c++ mode.  In GNU-c++ mode this names are only defined
> +# context-sensitive by cpp.  SDL_cpuinfo.h is included by SDL.h.
> +# Including altivec.h makes arbitrary code break."
> +ifeq ($(BR2_POWERPC_CPU_HAS_ALTIVEC),y)
> +SDL2_CONF_OPTS += --disable-altivec
> +endif
> +
>  ifeq ($(BR2_PACKAGE_HAS_UDEV),y)
>  SDL2_DEPENDENCIES += udev
>  SDL2_CONF_OPTS += --enable-libudev
> -- 
> 2.9.3




More information about the buildroot mailing list