[FFmpeg-devel] [PATCH] restoring binary compatibility with ffmpeg 0.5
Måns Rullgård
mans
Wed Jun 9 10:30:29 CEST 2010
Reinhard Tartler <siretart at tauware.de> writes:
> On Wed, Jun 09, 2010 at 01:59:18 (CEST), M?ns Rullg?rd wrote:
>
>> Reinhard Tartler <siretart at tauware.de> writes:
>>
>>> and my own tests to compile ffmpeg with sun's cc failed miserably.
>>
>> The FATE machine seems to build it, although it fails many tests.
>> Failing tests are only valid as arguments for non-support if little
>> hope exists for a future fix. I don't know where suncc stands on this
>> at the moment.
>>
>>> Even opencsw/blastwave seem to prefer gcc here.
>>
>> Not relevant.
>
> Well, I take that as indication that sun cc is not relevant for this
> discussion.
I don't know what those are, but they're not ffmpeg. Hence irrelevant.
>>> As for icc, AFAIUI, they claim that they manage to compile the linux
>>> kernel, so I strongly assume that they support the used asm syntax
>>> from my approach.
>>
>> The Linux kernel does not use symbol versioning. Your assumption is
>> thus invalid.
>>
>>> So what notable platforms are left?
>>
>> ARM RVCT. This compiler is fully supported and works very well indeed.
>
> I've just checked it's documentation at
> http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0474a/Beihfhej.html
>
> AFAIUI, this compiler a) supports the specific asm syntax that I've used
> in my patch,
It does not. Not even close.
> and b) does support multiple versions of the same symbol in exactly
> the same syntax as GCC.
GCC is not involved apart from the inline asm. Whatever linker armcc
uses supports the versioning.
>>>> Also, once we know how to solve this in the future the solution might be
>>>> applicable here too.
>>>
>>> With these remarks, I propse to require gcc's support for symbols with
>>> different versions and if the system compiler does not support it, then
>>> disable symbol versioning altogether. This avoids a corner case that a)
>>> is persumably very obscure and seldomly found and b) very hard to
>>> support without agreesively bumping soname on every symbol move.
>>
>> That would pointlessly disable the useful symbol versioning for those
>> compilers which fail the test. That is IMO not a good "solution".
>
> It's not pointless, it disables symbol versioning for compilers for
> platforms for which are a) very obscure and b) hard to find a
> propoer solution.
The preset problem can be solved with a recompile of the affected
app. The problems solved by the symbol versioning cannot. Do you
prefer an unsolvable problem over a solvable one?
>>> this approach is implemented by this change to configure:
>>>
>>> Index: configure
>>> ===================================================================
>>> --- configure (revision 23498)
>>> +++ configure (working copy)
>>> @@ -1086,6 +1086,7 @@
>>> struct_sockaddr_in6
>>> struct_sockaddr_sa_len
>>> struct_sockaddr_storage
>>> + symbol_versioning
>>> sys_mman_h
>>> sys_resource_h
>>> sys_select_h
>>> @@ -2733,7 +2734,10 @@
>>>
>>> echo "X{};" > $TMPV
>>> test_ldflags -Wl,--version-script,$TMPV &&
>>> - append SHFLAGS '-Wl,--version-script,\$(SUBDIR)lib\$(NAME).ver'
>>> + check_cc <<EOF append SHFLAGS '-Wl,--version-script,\$(SUBDIR)lib\$(NAME).ver' && enable symbol_versioning
>>> +int ff_foo() { }
>>> +__asm__(".symver foo,av_foo at SOME_TAG");
>>> +EOF
>>
>> This should use check_asm, but don't bother with an update until you
>> manage to convince me it should be done. That will be difficult.
>
> No, the point of using check_cc here is to test that the compiler
> supports that particular asm syntax as well. This was an requirement
> from you in an earlier post of this thread.
That is exactly what check_asm does.
--
M?ns Rullg?rd
mans at mansr.com
More information about the ffmpeg-devel
mailing list