Re: potential linking bug in recursive directory descent

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Feb 24, 2009 at 4:03 PM, Sam Ravnborg <sam@xxxxxxxxxxxx> wrote:
> On Tue, Feb 24, 2009 at 02:05:25PM -0500, Fred Isaman wrote:
>> The pnfs tree base of of 2.6.29-rc5 uses the new find_last_bit
>> function (defined in
>> lib/find_last_bit.c) in a file in the fs/nfs directory.  Myself and
>> another developer (though no one else so far) get the following error
>> during compile:
>>
>>    Kernel: arch/x86/boot/bzImage is ready  (#5)
>>      Building modules, stage 2.
>>      MODPOST 515 modules
>>    ERROR: "find_last_bit" [fs/nfs/nfs.ko] undefined!
>>    make[2]: *** [__modpost] Error 1
>>    make[1]: *** [modules] Error 2
>>    make: *** [sub-make] Error 2
>>
>>
>> Note that find_last_bit() is not used in any file in the fs directory.
>> If I add it to any function that is EXPORT_SYMBOL'ed
>> from the fs directory, suddenly the compile errors go away.  (See the
>> below patch for a more concrete example.)
>>
>> I am not sure what is going on, and why it only affects some
>> developers, but it looks a lot like the kbuild system
>> is deciding that the library does not need to be included at the fs
>> directory level, so isn't including it in fs/nfs where
>> it is needed.
>
> kbuild only links in libaries if there is any users of siad library.
> And your normal config has no users of lib/find_last_bit.c so
> it is not linked into the kernel.
>

I don't understand your comment.  There *is* a user of the library in the
(modified) fs/nfs/nfs4proc.c.  The problem is that it doesn't compile unless
there is also a user in some fs/*.c.

> The general rule is that if any in tree module uses a library
> then the library is always linked in.
> And to always link in a library you need to patch the Makefile
> as Randy suggest in his mail.
>
>        Sam
>

Again, I suspect I am misunderstanding.  It seems you are suggesting
that to compile the nfs code I have to alter lib/Makefile.  While that is a
useful workaround, that is certainly not a viable solution.

Fred
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux&nblp;USB Development]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite Secrets]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux