[Ffmpeg-devel] Re: [PATCH] Fix compilation when using --disable-opts

Måns Rullgård mans
Sun Apr 1 13:41:56 CEST 2007


Michael Niedermayer <michaelni at gmx.at> writes:

> Hi
>
> On Sun, Apr 01, 2007 at 01:03:46PM +0200, Michael Niedermayer wrote:
> [...]
>> > 
>> > at least cabac.h, line 388
>> > "movzbl "MANGLE(ff_h264_lps_range)"(%0, %%ebx, 2), %%esi\n\t"
>> > and line 395
>> > "movzbl "MANGLE(ff_h264_lps_range)"("ret", "range", 2), "range" \n\t"\
>> > 
>> > No way to make ff_h264_lps_range RIP-relative as needed to allow
>> > for PIC at least on AMD64 it seems. At least that is my understanding of
>> > the issue so far.
>> 
>> i always thought the broken shared lib loading used on linux these days
>> can do relocations ...

Just why is this so broken anyway?  I don't consider having the option
to be broken as long as I'm not forced to use it.

>> anyway there are 3 obvious ways this code can be generated (indpendant of
>> asm vs. c)
>> 1. use relocations (fast execution, slow loading, 
>>    wastes some possibly alot of memory)
>> 2. use extra instructions (slow execution and this is speedcritical code,
>>    wastes memory but less)
>> 3. use a global unique address for each shared lib (fast and wastes no mem,
>>    also avoids all the other PIC overhead ...)

How would you ensure uniqueness between independently built libs?  I
know some systems, e.g. Solaris, keep map files in /usr/lib so the
linker can pick a free address range.  The problem with this is of
course that it falls down if you install libs in other locations.

> just to clarify this, with
> global i of course meant global on one system not global for the world or
> distribution

I figured that's what you meant, although with a 64-bit address space
even truly globally unique addresses would be theoretically possible.
In practice there would of course be the problem of coordination.
Besides, no current CPUs have a full 64-bit address space.

-- 
M?ns Rullg?rd
mans at mansr.com




More information about the ffmpeg-devel mailing list