[FFmpeg-devel] Memory leak using bitstream filters with shared libs

Måns Rullgård mans
Sun Mar 9 20:30:54 CET 2008


Uoti Urpala <uoti.urpala at pp1.inet.fi> writes:

> On Sun, 2008-03-09 at 18:35 +0000, M?ns Rullg?rd wrote:
>> Why can't the code that takes the address of a function get it from
>> the GOT instead of returning the address of the PLT entry?  The only
>> requirement for this to work would be forcing any functions whose
>> addresses are taken to be resolved at load time.  There is no need for
>> modifying code areas at runtime at all.
>
> That IS what happens in PIC code. The issue that started this thread
> happened because there was non-PIC code using the address in the
> process. I already explained in reply to your earlier mail that the code
> generated for ffmpeg.c ("movq   $0x4038a0,0x48(%rsp)") writes a direct
> value that is included in the assembler instruction itself. You need to
> use -fPIC if you want the compiler to generate extra indirection through
> the GOT.

So you're basically saying that calling PIC code from non-PIC code
doesn't work reliably, and that you're fine with that?

>> Taking the address of function should give the same result everywhere,
>> regardless of compiler/linker flags.  Anything else is in violation of
>> the C standard.
>
> What's your point here? You think a compiler or linker must not have
> flags like -Bsymbolic that can generate behavior different from the C
> standard?

Yes.  At the very least, such options should be clearly documented as
violating the standard, and when possible, a warning should be issued
whenever this happens.

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




More information about the ffmpeg-devel mailing list