[FFmpeg-devel] ABI break in 4.3

Tomas Härdin tjoppen at acc.umu.se
Sun Jul 5 18:08:51 EEST 2020


sön 2020-07-05 klockan 14:10 +0200 skrev Jan Engelhardt:
> On Sunday 2020-07-05 13:39, Tomas Härdin wrote:
> > > > Downgrading to a .so file with a lower minor version number than
> > > > the program is built against can never be expected to work. Else
> > > > we couldn't add new functions without a major bump.
> > > 
> > > It requires the use ELF symbol versions -- which ffmpeg fails to
> > > do properly.[...]
> > 
> > This is a fair point. I didn't actually know the loader can do stuff
> > like this, sounds super handy. How hard would it be to get that going?
> 
> Change libavcodec.v to
> 
> LIBAVCODEC_58 {
>   global:
>   av_foo;
>   av_bar;
>   av_whatever_else_there_is;...
>   local:
>   *;
> };
> LIBAVCODEC_58.91 {
>   global:
>   avpriv_mpeg4audio_get_config2;
> } LIBAVCODEC_58;
> LIBAVCODEC_58.123 { /* future example */
>   global:
>   avblahblah;
> } LIBAVCODEC_58.91;
> 
> Repeat likewise for other .v files. The file is no longer a template. The
> automatic substitution of "_MAJOR" by the build system needs to cease. Version
> numbers in the file are supposed to be fixed (among the set of all .so files
> that share a SONAME).

Interesting. This also makes what's changed between versions more
explicit. Can this be checked by machine as well? Like having a post-
receive hook that makes sure the .v files are consistent, or maybe have
FATE check it somehow.

This probably needs to be passed through the technical committee. But I
don't think it'll break the ABI like Timo suggests, if we bump minor at
the same time.

/Tomas



More information about the ffmpeg-devel mailing list