[FFmpeg-devel] [PATCH] restoring binary compatibility with ffmpeg 0.5

Reimar Döffinger Reimar.Doeffinger
Sun Jun 6 22:29:25 CEST 2010


On Sun, Jun 06, 2010 at 09:38:07PM +0200, Reinhard Tartler wrote:
> In any case, find below the 'best' fix, that admittedly only works on
> gnu platforms. Michael, please comment if you prefer the half fix that
> fixes the issue on gcc/gas platforms (and doesn't regress on others) or
> bumping major of libavformat.

How sure are we this is actually correct?
The cases I could find documented (which only involve one library)
also require changes to the version script.
In case it was only one library, something like this:
Index: libavcodec.v
===================================================================
--- libavcodec.v        (revision 23508)
+++ libavcodec.v        (working copy)
@@ -1,3 +1,7 @@
+LIBAVFORMAT_52 {
+        global: av_init_packet;
+};
 LIBAVCODEC_$MAJOR {
+        global: av_init_packet;
         global: *;
-};
+} LIBAVFORMAT_52;

However here we have the problem that this would break e.g. on Solaris,
since a symbol is not allowed to have multiple versions there.
I think the real mistake was made during the move: the version should
never have been changed, despite the move to a different library...
Am I right that changing the linker script to
LIBAVFORMAT_52 {
        global: av_init_packet;
};
LIBAVCODEC_$MAJOR {
        global: *;
};
would avoid the compatibility issue with 0.5 (though breaking it
for several versions in-between)?



More information about the ffmpeg-devel mailing list