[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