[PATCH 002/002] scripts/Makefile.modpost: New Kbuild variable EXTRA_SYMBOLS

From: Richard Hacker
Date: Thu Feb 28 2008 - 03:40:54 EST


This patch adds a new (Kbuild) Makefile variable EXTRA_SYMBOLS. The
space separated list of files assigned to EXTRA_SYMBOLS is used when
calling scripts/mod/modpost during stage 2 of the Kbuild process for
non-kernel-tree modules. When the previous patch 001/002 is applied to
modpost.c, modpost loads these files during initialisation of its symbol
table.

Signed-off-by: Richard Hacker <lerichi@xxxxxxx>

---
The previous patch in this series (001/002) added a new command line
argument -E to scripts/mod/modpost.c, instructing modpost to process
the symbols in that file during initialisation of its symbol tables.

This patch introduces a new make variable EXTRA_SYMBOLS. The space
separated list of files assigned to this variable is passed to modpost
using the the new -E command line argument. This introduces the possibility
to supply a set of Modules.symvers for modpost to load during initialisation
of it symbol tables.

I hope this patch is useful and finds its way into the kernel.

o Changes from the previous attempt:
- Documentation update

diff -uprN -X linux-2.6.24/Documentation/dontdiff
linux-2.6.24-vanilla/Documentation/kbuild/modules.txt
linux-2.6.24/Documentation/kbuild/modules.txt
--- linux-2.6.24-vanilla/Documentation/kbuild/modules.txt 2008-01-18
22:43:41.000000000 +0100
+++ linux-2.6.24/Documentation/kbuild/modules.txt 2008-02-28
09:30:55.000000000 +0100
@@ -486,7 +486,7 @@ Module.symvers contains a list of all ex
Sometimes, an external module uses exported symbols from another
external module. Kbuild needs to have full knowledge on all symbols
to avoid spitting out warnings about undefined symbols.
- Two solutions exist to let kbuild know all symbols of more than
+ Three solutions exist to let kbuild know all symbols of more than
one external module.
The method with a top-level kbuild file is recommended but may be
impractical in certain situations.
@@ -523,6 +523,12 @@ Module.symvers contains a list of all ex
containing the sum of all symbols defined and not part of the
kernel.

+ Use make variable EXTRA_SYMBOLS in the Makefile
+ If it is impractical to copy Module.symvers from another
+ module, you can assign a space separated list of files to
+ EXTRA_SYMBOLS in your Makfile. These files will be loaded
+ by modpost during the initialisation of its symbol tables.
+
=== 8. Tips & Tricks

--- 8.1 Testing for CONFIG_FOO_BAR
diff -uprN -X linux-2.6.24/Documentation/dontdiff
linux-2.6.24-vanilla/scripts/Makefile.modpost
linux-2.6.24/scripts/Makefile.modpost
--- linux-2.6.24-vanilla/scripts/Makefile.modpost 2008-01-18
22:47:09.000000000 +0100
+++ linux-2.6.24/scripts/Makefile.modpost 2008-02-27 21:14:36.000000000 +0100
@@ -41,6 +41,12 @@ _modpost: __modpost

include include/config/auto.conf
include scripts/Kbuild.include
+
+ifneq ($(KBUILD_EXTMOD),)
+# Include the module's Makefile to find EXTRA_SYMBOLS
+include $(if $(wildcard $(KBUILD_EXTMOD)/Kbuild), $(KBUILD_EXTMOD)/Kbuild,
$(KBUILD_EXTMOD)/Makefile)
+endif
+
include scripts/Makefile.lib

kernelsymfile := $(objtree)/Module.symvers
@@ -61,6 +67,7 @@ modpost = scripts/mod/modpost
$(if $(CONFIG_MODULE_SRCVERSION_ALL),-a,) \
$(if $(KBUILD_EXTMOD),-i,-o) $(kernelsymfile) \
$(if $(KBUILD_EXTMOD),-I $(modulesymfile)) \
+ $(if $(EXTRA_SYMBOLS), $(patsubst %, -E %,$(EXTRA_SYMBOLS))) \
$(if $(KBUILD_EXTMOD),-o $(modulesymfile)) \
$(if $(KBUILD_EXTMOD)$(KBUILD_MODPOST_WARN),-w)

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/