[Android] [PATCH 5/8] contrib: ffmpeg: Use --extra-cflags='-mincoming-stack-boundary=4'

Rafaël Carré funman at videolan.org
Wed Jul 25 09:33:02 CEST 2012


Le 2012-07-25 04:51, Edward Wang a écrit :
> The issue here is that android-x86 doesn't guarantee an aligned stack, which means some of the inline asm functions will waste an extra register on realigning the stack.
> 
> libavcodec does however have stuff in place in all entrypoints that realign the stack on all calls into the library. If you build with --extra-cflags='-mincoming-stack-boundary=4', gcc assumes that the stack actually is aligned already, which the entry points ensure, so this inline asm builds fine.
> 
> Pointed-out-by: Martin Storsjö <martin at martin.st>
> ---
>  contrib/src/ffmpeg/rules.mak |    9 +++++++++
>  1 files changed, 9 insertions(+), 0 deletions(-)
> 
> diff --git a/contrib/src/ffmpeg/rules.mak b/contrib/src/ffmpeg/rules.mak
> index ed6d8e8..fb069a3 100644
> --- a/contrib/src/ffmpeg/rules.mak
> +++ b/contrib/src/ffmpeg/rules.mak
> @@ -82,6 +82,15 @@ endif
>  # Linux
>  ifdef HAVE_LINUX
>  FFMPEGCONF += --target-os=linux --enable-pic
> +
> +ifeq ($(ANDROID_ABI), x86)
> +ifdef HAVE_ANDROID
> +# Android-x86 doesn't guarantee an aligned stack, so we tell gcc to
> +# assume that the stack actually is aligned already

The comment is a bit misleading, if Android-x86 doesn't guarantee
alignement, then we can't assume that the stack is aligned (since it is
not).

info gcc seems to say stack pointer is aligned before making function calls

> +FFMPEGCONF += --extra-cflags='-mincoming-stack-boundary=4'
> +endif # HAVE_ANDROID
> +endif # x86
> +
>  endif
>  
>  # Windows
> 



More information about the Android mailing list