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

Rafaël Carré funman at videolan.org
Wed Jul 25 11:45:45 CEST 2012


Le 2012-07-25 11:44, Martin Storsjö a écrit :
> On Wed, 25 Jul 2012, Rafaël Carré wrote:
> 
>> 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).
> 
> Not sure if this is an objection against the patch or just the description 
> here. The info in the commit message has all the details - libavcodec has 
> entry point stuff which makes sure it is aligned on entry, and hopefully 
> gcc keeps it aligned across the calls within the library then.

This was against the description, I think this option forces gcc to
align stack, rather than assume an alignement

>> info gcc seems to say stack pointer is aligned before making function calls
> 
> This would support the assumption that gcc would keep the stack aligned.
> 
> // Martin


More information about the Android mailing list