Skip to contentSkip to conversation

modpost is becoming verbose

PATCH Sam Ravnborg 1 participant 1 message Jan 24, 2008

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

I have commit the following patch to kbuild.git to make modpost more verbose.

The verbosity can be adjusted by a new config option introduced in an earlier patch and you need full kbuild.git to try it out.

All patches will soon hit kbuild + lkml for review.

Sam

From 678f770eb79d245d38b33c3f0fb14c7f1c93d9ec Mon Sep 17 00:00:00 2001
From: Sam Ravnborg <[email protected]>
Date: Thu, 24 Jan 2008 21:12:37 +0100
Subject: [PATCH] kbuild: add verbose option to Section mismatch reporting in modpost

If the config option CONFIG_SECTION_MISMATCH is not set and we see a Section mismatch present the following to the user:

modpost: Found 1 section mismatch(es).
To see additional details select "Enable full Section mismatch analysis" in the Kernel Hacking menu (CONFIG_SECTION_MISMATCH).

If the option CONFIG_SECTION_MISMATCH is selected then be verbose in the Section mismatch reporting from mdopost. Sample outputs:

WARNING: o-x86_64/vmlinux.o(.text+0x7396): Section mismatch in reference from the function discover_ebda() to the variable .init.data:ebda_addr The function discover_ebda() references
the variable __initdata ebda_addr.
This is often because discover_ebda lacks a __initdata
annotation or the annotation of ebda_addr is wrong.

WARNING: o-x86_64/vmlinux.o(.data+0x74d58): Section mismatch in reference from the variable pci_serial_quirks to the function .devexit.text:pci_plx9050_exit() The variable pci_serial_quirks references
the function __devexit pci_plx9050_exit()
If the reference is valid then annotate the
variable with __exit* (see linux/init.h) or name the variable:
*driver, *_template, *_timer, *_sht, *_ops, *_probe, *_probe_one, *_console,

WARNING: o-x86_64/vmlinux.o(__ksymtab+0x630): Section mismatch in reference from the variable __ksymtab_arch_register_cpu to the function .cpuinit.text:arch_register_cpu() The symbol arch_register_cpu is exported and annotated __cpuinit
Fix this by removing the __cpuinit annotation of arch_register_cpu or drop the export.

---
 lib/Kconfig.debug        |    2 +
 scripts/Makefile.modpost |    1 +
 scripts/mod/modpost.c    |  255 ++++++++++++++++++++++++++++++++++++++++-----
 3 files changed, 229 insertions(+), 29 deletions(-)
lib/Kconfig.debug +2 -0
index c1fb0c6..d930aec 100644
@@ -108,6 +108,8 @@ config DEBUG_SECTION_MISMATCH
 	    will tell where the mismatch happens much closer to the
 	    source. The drawback is that we will report the same
 	    mismatch at least twice.
+	  - Enable verbose reporting from modpost to help solving
+	    the section mismatches reported.
 
 config DEBUG_KERNEL
 	bool "Kernel debugging"
scripts/Makefile.modpost +1 -0
index d988f5d..65e707e 100644
@@ -62,6 +62,7 @@ modpost = scripts/mod/modpost                    \
  $(if $(KBUILD_EXTMOD),-i,-o) $(kernelsymfile)   \
  $(if $(KBUILD_EXTMOD),-I $(modulesymfile))      \
  $(if $(KBUILD_EXTMOD),-o $(modulesymfile))      \
+ $(if $(CONFIG_DEBUG_SECTION_MISMATCH),,-S)      \
  $(if $(KBUILD_EXTMOD)$(KBUILD_MODPOST_WARN),-w)
 
 quiet_cmd_modpost = MODPOST $(words $(filter-out vmlinux FORCE, $^)) modules
scripts/mod/modpost.c +226 -29

350 lines not on this page · raw message

Signature · 1 line
1.5.4.rc3.14.g44397