[FFmpeg-devel] [PATCH] restoring binary compatibility with ffmpeg 0.5
Michael Niedermayer
michaelni
Thu Jun 10 20:16:31 CEST 2010
On Thu, Jun 10, 2010 at 05:12:53PM +0200, Reinhard Tartler wrote:
> On Thu, Jun 10, 2010 at 17:04:45 (CEST), M?ns Rullg?rd wrote:
>
> > Michael Niedermayer <michaelni at gmx.at> writes:
> >
> >> On Mon, Jun 07, 2010 at 07:24:30AM +0200, Reinhard Tartler wrote:
> >>> On So, Jun 06, 2010 at 22:29:25 (CEST), Reimar D?ffinger wrote:
> >>>
> >>> > 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)?
> >>>
> >>> I've tried this as well, but unfortunately, this doesn't work out:
> >>>
> >>> >> objdump -T /tmp/ffmpeg/lib/libavcodec.so.52 | grep av_init_packet
> >>> 000c0ce0 g DF .text 00000058 LIBAVFORMAT_52 av_init_packet
> >>>
> >>> >> ffplay /tmp/Elephants_Dream-720p-Stereo.webm
> >>> FFplay version SVN-r0.5.1-4:0.5.1-1ubuntu1, Copyright (c) 2003-2009 Fabrice Bellard, et al.
> >>> configuration: --extra-version=4:0.5.1-1ubuntu1 --prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --disable-stripping --disable-vhook --enable-runtime-cpudetect --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdc1394 --enable-shared --disable-static
> >>> libavutil 49.15. 0 / 49.15. 0
> >>> libavcodec 52.20. 1 / 52.72. 2
> >>> libavformat 52.31. 0 / 52.64. 2
> >>> libavdevice 52. 1. 0 / 52. 2. 0
> >>> libavfilter 0. 4. 0 / 0. 4. 0
> >>> libswscale 0. 7. 1 / 0.11. 0
> >>> libpostproc 51. 2. 0 / 51. 2. 0
> >>> built on Mar 4 2010 12:35:30, gcc: 4.4.3
> >>> ffplay: relocation error: ffplay: symbol av_init_packet, version LIBAVFORMAT_52 not defined in file libavformat.so.52 with link time reference
> >>>
> >>> It seems that this symbol really needs to be in libavformat.
> >>
> >> Following fixes it (at least with my ld.so, ive not tried it without the
> >> other bugfixes, but ill look into it if that alone doesnt work for you)
> >>
> >> I think its reasonable if the ffmpeg project requires a linker that is not
> >> full of such arbitrary failure conditions.
> >
> > I think it is totally unreasonable that to require a linker that
> > doesn't exist and doesn't stand a chance in hell of ever existing, no
> > matter how superior it may be technically, morally, or otherwise.
so you are basically saying that shortcomings in the linker should never be
fixed but everyone should work around them.
if thats not unreasonable than nothing is.
Either way your rant doesnt change it
moving a symbol with enabled versioning requires a soname bump or asm symver
tricks with the gnu linker.
you (mans) objected to symver tricks (and i dont really like them either,
though objecting might be unreasonable given the lack of alternatives),
and i object to soname bumps
thus its just not going to work with the gnu linker like it or not,
unreasonable or not.
And a single line change in the linker fixes it
Its ok if people choose not to fix the linker but i choose not to workaround
its bugs either.
Whats left is
1. Perform symbol moves so that they work with the hypothetical fixed linker
2. Completely ignore the issue and let the distro maintainers deal with it
3. Something we missed
doing 1 is not hurting the existing linkers compared to 2 thus i must say
calling it unreasonable is in itself a bit unreasonable.
>
> I totally agree. Moreover, I can very well imagine that existing
> applications rely on this particular behavior.
elaborate please, if the issue is real it likely can be fixed
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
Freedom in capitalist society always remains about the same as it was in
ancient Greek republics: Freedom for slave owners. -- Vladimir Lenin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20100610/9ba6ac82/attachment.pgp>
More information about the ffmpeg-devel
mailing list