[FFmpeg-devel] [PATCH] Fix missing used attribute for inline assembly variables

Thomas Köppe tkoeppe at google.com
Tue Oct 31 17:52:14 EET 2017


+Teresa, who drafted the patch initially.

On 31 October 2017 at 15:38, Michael Niedermayer <michael at niedermayer.cc>
wrote:

> On Tue, Oct 31, 2017 at 12:16:18PM +0000, Thomas Köppe wrote:
> > Variables used in inline assembly need to be marked with
> attribute((used)).
>
> This should not be the case.
> Variables referenced through in/out operands should not need that.
> Only ones accessed directly bypassing operands should need this
>

I've added Teresa to the thread, who initially analyzed the problem. (For
background on ThinLTO, see here cppcon talk:
https://www.youtube.com/watch?v=p9nH2vZ2mNo.)

[...]
> > -    #define DECLARE_ALIGNED(n,t,v)      t __attribute__ ((aligned (n)))
> v
> > +    #define DECLARE_ALIGNED(n,t,v)      t av_used __attribute__
> ((aligned (n))) v
>
> which variables actually are affected/ need this ?
>

Without this annotation, and when compiling and linking with ThinLTO, I get
an undefined reference to "ff_h264_cabac_tables", and also to
"ff_pw_96", "ff_pw_53",
"ff_pw_42", "ff_w1111" and many more.


> Marking all aligned variables as used makes it harder to spot unused
> variables leading to accumulation of cruft
>

I see. Maybe we can annotate only the affected variables more granularly?


More information about the ffmpeg-devel mailing list