[FFmpeg-devel] [PATCH] tx_float_neon: Do not access outside stack.

Rémi Denis-Courmont remi at remlab.net
Sun Oct 9 19:54:46 EEST 2022


Le sunnuntaina 9. lokakuuta 2022, 19.36.24 EEST Reimar Döffinger a écrit :
> > While this fixes the ABI violation, it introduces multiple data
> > dependencies on stack pointer due to write-back.
> 
> That is true in principle, this is not done consistently at all.

I have not checked the FFmpeg code base, but this *is* done consistently by 
compilers and in a number of other assembler-heavy project, notably the Linux 
kernel (see especially arch/arm64/crypto/*.S).

> > The idiomatic way to do this is to allocate the entire needed stack space
> > in the first store / last load, and use positive offsets elsewhence.
> 
> Are you sure this is really relevant at all, considering it's so rarely done
> in the code?

I don't know what you base that statement on. I have rarely seen it not done 
that way. And even then, it mostly occurs inside loops, where it cannot fully 
be avoided and where there will be a couple of other instructions that don't 
suffer the data dependency.

> Just to clarify the details, then end result should look like this?
> -        stp             d8,  d9,  [sp, #-16]
> -        stp             d10, d11, [sp, #-32]
> -        stp             d12, d13, [sp, #-48]
> -        stp             d14, d15, [sp, #-64]
> +        stp             d14, d15, [sp, #-16*4]!
> +        stp             d8,  d9,  [sp, #16*3]
> +        stp             d10, d11, [sp, #16*2]
> +        stp             d12, d13, [sp, #16]

Yes.

-- 
レミ・デニ-クールモン
http://www.remlab.net/





More information about the ffmpeg-devel mailing list