From b6c82f0a4de142a03ec07adbf85d9d2218487e45 Mon Sep 17 00:00:00 2001 From: Edward Wang Date: Thu, 26 Jul 2012 07:28:21 -0400 Subject: [PATCH] contrib: ffmpeg: Use -mincoming-stack-boundary=4 MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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ö Signed-off-by: Rafaël Carré --- contrib/src/ffmpeg/rules.mak | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/contrib/src/ffmpeg/rules.mak b/contrib/src/ffmpeg/rules.mak index a1de6f8dbe..032c4a167c 100644 --- a/contrib/src/ffmpeg/rules.mak +++ b/contrib/src/ffmpeg/rules.mak @@ -87,6 +87,17 @@ endif # Linux ifdef HAVE_LINUX FFMPEGCONF += --target-os=linux --enable-pic + +ifeq ($(ANDROID_ABI), x86) +ifdef HAVE_ANDROID +# Android-x86 gcc doesn't guarantee an aligned stack, but this is +# handled by __attribute__((force_align_arg_pointer)) in libavcodec +# already, so we tell gcc to assume this alignment, so we don't need +# to waste a precious register in assembly functions to realign it. +FFMPEG_CFLAGS += -mincoming-stack-boundary=4 +endif # HAVE_ANDROID +endif # x86 + endif # Windows -- 2.11.4.GIT