Radeon TV-in support in Xorg CVS.

Vladimir Dergachev volodya at mindspring.com
Mon Oct 4 07:06:31 PDT 2004



On Mon, 4 Oct 2004, Adam Jackson wrote:

> On Sunday 03 October 2004 19:56, Vladimir Dergachev wrote:
>> Ohh, absolutely. This statement tests for a bug in XFree86 loader system
>> that prevented it from loading sub modules after a certain stage in
>> initialization. This was fixed before 4.4.0, but remained just in case
>> things break again.
>>
>> However, I don't understand why this would not resolve - the code to load
>> i2c module (as well as resolve the symbols from it) is just preceding this
>> line - if this line breaks so would most of other code.
>
> It's subtle.  You're taking the address of an object that isn't defined within
> the driver itself.  The buildtime linker handles this by listing
> xf86CreateI2CBusRec as required but undefined data.  There's no way for the
> runtime linker to interpose on the act of taking the address, so it requires
> that all such data references be resolvable when the module is opened via
> dlopen() - otherwise, the & operator could fail.  This check happens before
> any code in the dlopen'd module can get called, so the radeon driver never
> even gets the chance to load the i2c module.
>
> Functions can be resolved lazily, but data can't.

I see. Thank you for the explanation :)

                      best

                        Vladimir Dergachev

>
> - ajax
>



More information about the xorg mailing list