I am not sure for the reasoning behind it, but it seems that newer 2.4
kernels require the additional -DEXPORT_SYMTAB be defined for any code one
wants to build as a module (if that module exports symbols). Needless to
say this breaks a lot of (non-kernel-tree) modules that would otherwise
have been compiling without problems.
What is the rationale behind this?
-Calin
On Tue, 25 Jun 2002 19:16:58 -0400 (EDT),
"Calin A. Culianu" <[email protected]> wrote:
>I am not sure for the reasoning behind it, but it seems that newer 2.4
>kernels require the additional -DEXPORT_SYMTAB be defined for any code one
>wants to build as a module (if that module exports symbols). Needless to
>say this breaks a lot of (non-kernel-tree) modules that would otherwise
>have been compiling without problems.
>
>What is the rationale behind this?
Any code that exports symbols must be compiled with -DEXPORT_SYMTAB.
That flag is used in module symbol version processing to generate the
versioned symbols.
It used to be that omitting -DEXPORT_SYMTAB would only cause an error
when CONFIG_MODVERSIONS=y. Since most developers did not use
modversions, entries were being added to the kernel tree without
correct makefile definitions. To ensure correct definitions in the
makefile for all circumstances, the code was changed to always require
-DEXPORT_SYMTAB for exporting objects, with or without
CONFIG_MODVERSIONS.
Bottom line: if you export symbols you must always define -DEXPORT_SYMTAB.