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

Michael Niedermayer michaelni
Mon Jun 7 12:20:05 CEST 2010


On Mon, Jun 07, 2010 at 11:06:56AM +0100, M?ns Rullg?rd wrote:
> Michael Niedermayer <michaelni at gmx.at> writes:
> 
> > On Mon, Jun 07, 2010 at 10:14:54AM +0100, M?ns Rullg?rd wrote:
> >> Michael Niedermayer <michaelni at gmx.at> writes:
> >> 
> >> > On Mon, Jun 07, 2010 at 09:17:56AM +0100, M?ns Rullg?rd wrote:
> >> >> Michael Niedermayer <michaelni at gmx.at> writes:
> >> >> 
> >> >> >> >> >> It changes the name of the symbol.  Anything linked against current
> >> >> >> >> >> libavcodec will fail after this change.
> >> >> >> >> >
> >> >> >> >> > IMO the linker is suposed to find symbols in the linked versions
> >> >> >> >> > gnu ldso does not, so this doesnt work for us. I still think though
> >> >> >> >> > that this behavior of gnu ldso is not terribly sane
> >> >> >> >> 
> >> >> >> >> How do you expect it to figure that a differently named symbol is
> >> >> >> >> actually the same thing?  If an app lists foo at LIBAVFORMAT_52 as an
> >> >> >> >> undefined symbol, some library must provide that exact name.  For
> >> >> >> >> dynamic symbol resolution, the version tag is effectively part of the
> >> >> >> >> symbol name.
> >> >> >> >
> >> >> >> > readelf -a
> >> >> >> > for a lib linked with:
> >> >> >> > LIBC0VER
> >> >> >> > {
> >> >> >> >  global:
> >> >> >> >     functA;
> >> >> >> > };
> >> >> >> > LIBA0VER
> >> >> >> > {
> >> >> >> >  global:
> >> >> >> >   *;
> >> >> >> > }LIBC0VER;
> >> >> >> >
> >> >> >> > says:
> >> >> >> >   000000: Rev: 1  Flags: BASE   Index: 1  Cnt: 1  Name: libA0.so
> >> >> >> >   0x001c: Rev: 1  Flags: none  Index: 2  Cnt: 1  Name: LIBC0VER
> >> >> >> >   0x0038: Rev: 1  Flags: none  Index: 3  Cnt: 2  Name: LIBA0VER
> >> >> >> >   0x0054: Parent 1: LIBC0VER
> >> >> >> >
> >> >> >> > so the parent version seems stored in the elf so. And i had naively
> >> >> >> > assumed that ldso would search it too
[...]
> The version script is not
> available to users of the library, so anything you think you might
> infer from the script is simply irrelevant.

see above, the information is available to users of the lib


> 
> > compatible in the sense that an application using ver2 will with this
> > version script be linked to foo at ver1 by ld and ld.so
> >
> > iam not saying you cannot create a foo at ver2 that is incompatible
> > iam saying that if versions as specified in a version script correspond
> > to some documented API/ABIs it would violate this documentation with the
> > version script example
> 
> Perhaps what you describe would be useful in some scenario.  It is
> however NOT WHAT ACTUALLY HAPPENS.  You must distinguish between what
> things do and what you would like them to do.

i simply showed the consequences of a set of assumtations.
i dont claim these assumtations to apply in all cases

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

When you are offended at any man's fault, turn to yourself and study your
own failings. Then you will forget your anger. -- Epictetus
-------------- 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/20100607/2a1f1bb9/attachment.pgp>



More information about the ffmpeg-devel mailing list