[Android] [PATCH 5/8] contrib: ffmpeg: Use --extra-cflags='-mincoming-stack-boundary=4'
Martin Storsjö
martin at martin.st
Wed Jul 25 11:44:12 CEST 2012
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.
> 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