2005-03-28 11:10:30

by Josef E. Galea

[permalink] [raw]
Subject: EXPORT_SYMBOL question

Hi,

I have 2 modules. The first one uses EXPORT_SYMBOL to make some function
available to other modules. These prototypes for these functions were
also put in a header file. Now the second module uses the functions the
functions defined in the first module by and includes the afore
mentioned header file. However when i'm compiling the module, I get a
symbol underfined warning. When I load the module it works as expected.
Is there any way to get rid of these warnings.

Another problem I'm having is that when I load the second module I get
`no version for "rbnode_initialize" found: kernel tainted.'
(rbnode_initialize is one of the functions exported by the first
module). Both MODULE_LICENSE("GPL"); and MODULE_VERSION are declared in
the two modules. Is there anything I'm missing?

Thanks
Josef Galea


2005-03-28 11:18:19

by Sam Ravnborg

[permalink] [raw]
Subject: Re: EXPORT_SYMBOL question

On Mon, Mar 28, 2005 at 01:10:35PM +0200, Josef E. Galea wrote:
> Hi,
>
> I have 2 modules. The first one uses EXPORT_SYMBOL to make some function
> available to other modules. These prototypes for these functions were
> also put in a header file. Now the second module uses the functions the
> functions defined in the first module by and includes the afore
> mentioned header file. However when i'm compiling the module, I get a
> symbol underfined warning. When I load the module it works as expected.
> Is there any way to get rid of these warnings.
>
> Another problem I'm having is that when I load the second module I get
> `no version for "rbnode_initialize" found: kernel tainted.'
> (rbnode_initialize is one of the functions exported by the first
> module). Both MODULE_LICENSE("GPL"); and MODULE_VERSION are declared in
> the two modules. Is there anything I'm missing?

You need to compile both modules at the same time.
Do something like this for your two modules foo and bar:

modules/Makefile
obj-y := foo/ bar/
modules/foo/ <= Your foo module
modules/bar/ <= Your bar module

Then when building the modules stay in modules/ and
execute:
make -C <path-to-kernel-src> M=`pwd`

And to install modules:
make -C <path-to-kernel-src> M=`pwd` modules_install

Sam

2005-03-28 11:46:46

by Josef E. Galea

[permalink] [raw]
Subject: Re: EXPORT_SYMBOL question

Sam Ravnborg wrote:

>On Mon, Mar 28, 2005 at 01:10:35PM +0200, Josef E. Galea wrote:
>
>
>>Hi,
>>
>>I have 2 modules. The first one uses EXPORT_SYMBOL to make some function
>>available to other modules. These prototypes for these functions were
>>also put in a header file. Now the second module uses the functions the
>>functions defined in the first module by and includes the afore
>>mentioned header file. However when i'm compiling the module, I get a
>>symbol underfined warning. When I load the module it works as expected.
>>Is there any way to get rid of these warnings.
>>
>>Another problem I'm having is that when I load the second module I get
>>`no version for "rbnode_initialize" found: kernel tainted.'
>>(rbnode_initialize is one of the functions exported by the first
>>module). Both MODULE_LICENSE("GPL"); and MODULE_VERSION are declared in
>>the two modules. Is there anything I'm missing?
>>
>>
>
>You need to compile both modules at the same time.
>Do something like this for your two modules foo and bar:
>
>modules/Makefile
>obj-y := foo/ bar/
>modules/foo/ <= Your foo module
>modules/bar/ <= Your bar module
>
>Then when building the modules stay in modules/ and
>execute:
>make -C <path-to-kernel-src> M=`pwd`
>
>And to install modules:
>make -C <path-to-kernel-src> M=`pwd` modules_install
>
> Sam
>
>
>
Thanks for your help. That solved both the warnings and the kernel
tainted message.

Josef