Commit 519cb688 authored by Linus Torvalds's avatar Linus Torvalds

Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild

* git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild:
  scsi: fix dependency bug in aic7 Makefile
  kbuild: add svn revision information to setlocalversion
  kbuild: do not warn about __*init/__*exit symbols being exported
  Move Kconfig.instrumentation to arch/Kconfig and init/Kconfig
  Add HAVE_KPROBES
  Add HAVE_OPROFILE
  Create arch/Kconfig
  Fix ARM to play nicely with generic Instrumentation menu
  kconfig: ignore select of unknown symbol
  kconfig: mark config as changed when loading an alternate config
  kbuild: Spelling/grammar fixes for config DEBUG_SECTION_MISMATCH
  Remove __INIT_REFOK and __INITDATA_REFOK
  kbuild: print only total number of section mismatces found
parents 2f98735c 8891fec6
menuconfig INSTRUMENTATION #
bool "Instrumentation Support" # General architecture dependent options
default y #
---help---
Say Y here to get to see options related to performance measurement,
system-wide debugging, and testing. This option alone does not add any
kernel code.
If you say N, all options in this submenu will be skipped and
disabled. If you're trying to debug the kernel itself, go see the
Kernel Hacking menu.
if INSTRUMENTATION
config PROFILING
bool "Profiling support (EXPERIMENTAL)"
help
Say Y here to enable the extended profiling support mechanisms used
by profilers such as OProfile.
config OPROFILE config OPROFILE
tristate "OProfile system profiling (EXPERIMENTAL)" tristate "OProfile system profiling (EXPERIMENTAL)"
depends on PROFILING && !UML depends on PROFILING
depends on ARCH_SUPPORTS_OPROFILE || ALPHA || ARM || BLACKFIN || IA64 || M32R || PARISC || PPC || S390 || SUPERH || SPARC depends on HAVE_OPROFILE
help help
OProfile is a profiling system capable of profiling the OProfile is a profiling system capable of profiling the
whole system, include the kernel, kernel modules, libraries, whole system, include the kernel, kernel modules, libraries,
...@@ -29,10 +13,13 @@ config OPROFILE ...@@ -29,10 +13,13 @@ config OPROFILE
If unsure, say N. If unsure, say N.
config HAVE_OPROFILE
def_bool n
config KPROBES config KPROBES
bool "Kprobes" bool "Kprobes"
depends on KALLSYMS && MODULES && !UML depends on KALLSYMS && MODULES
depends on X86_32 || IA64 || PPC || S390 || SPARC64 || X86_64 || AVR32 depends on HAVE_KPROBES
help help
Kprobes allows you to trap at almost any kernel address and Kprobes allows you to trap at almost any kernel address and
execute a callback function. register_kprobe() establishes execute a callback function. register_kprobe() establishes
...@@ -40,10 +27,5 @@ config KPROBES ...@@ -40,10 +27,5 @@ config KPROBES
for kernel debugging, non-intrusive instrumentation and testing. for kernel debugging, non-intrusive instrumentation and testing.
If in doubt, say "N". If in doubt, say "N".
config MARKERS config HAVE_KPROBES
bool "Activate markers" def_bool n
help
Place an empty function call at each marker site. Can be
dynamically changed for a probe function.
endif # INSTRUMENTATION
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
config ALPHA config ALPHA
bool bool
default y default y
select HAVE_OPROFILE
help help
The Alpha is a 64-bit general-purpose processor designed and The Alpha is a 64-bit general-purpose processor designed and
marketed by the Digital Equipment Corporation of blessed memory, marketed by the Digital Equipment Corporation of blessed memory,
...@@ -649,8 +650,6 @@ source "drivers/Kconfig" ...@@ -649,8 +650,6 @@ source "drivers/Kconfig"
source "fs/Kconfig" source "fs/Kconfig"
source "kernel/Kconfig.instrumentation"
source "arch/alpha/Kconfig.debug" source "arch/alpha/Kconfig.debug"
# DUMMY_CONSOLE may be defined in drivers/video/console/Kconfig # DUMMY_CONSOLE may be defined in drivers/video/console/Kconfig
......
...@@ -10,6 +10,8 @@ config ARM ...@@ -10,6 +10,8 @@ config ARM
default y default y
select RTC_LIB select RTC_LIB
select SYS_SUPPORTS_APM_EMULATION select SYS_SUPPORTS_APM_EMULATION
select HAVE_OPROFILE
select HAVE_KPROBES if (!XIP_KERNEL)
help help
The ARM series is a line of low-power-consumption RISC chip designs The ARM series is a line of low-power-consumption RISC chip designs
licensed by ARM Ltd and targeted at embedded applications and licensed by ARM Ltd and targeted at embedded applications and
...@@ -135,6 +137,23 @@ config FIQ ...@@ -135,6 +137,23 @@ config FIQ
config ARCH_MTD_XIP config ARCH_MTD_XIP
bool bool
if OPROFILE
config OPROFILE_ARMV6
def_bool y
depends on CPU_V6 && !SMP
select OPROFILE_ARM11_CORE
config OPROFILE_MPCORE
def_bool y
depends on CPU_V6 && SMP
select OPROFILE_ARM11_CORE
config OPROFILE_ARM11_CORE
bool
endif
config VECTORS_BASE config VECTORS_BASE
hex hex
default 0xffff0000 if MMU || CPU_HIGH_VECTOR default 0xffff0000 if MMU || CPU_HIGH_VECTOR
...@@ -1128,8 +1147,6 @@ endmenu ...@@ -1128,8 +1147,6 @@ endmenu
source "fs/Kconfig" source "fs/Kconfig"
source "arch/arm/Kconfig.instrumentation"
source "arch/arm/Kconfig.debug" source "arch/arm/Kconfig.debug"
source "security/Kconfig" source "security/Kconfig"
......
menuconfig INSTRUMENTATION
bool "Instrumentation Support"
default y
---help---
Say Y here to get to see options related to performance measurement,
system-wide debugging, and testing. This option alone does not add any
kernel code.
If you say N, all options in this submenu will be skipped and
disabled. If you're trying to debug the kernel itself, go see the
Kernel Hacking menu.
if INSTRUMENTATION
config PROFILING
bool "Profiling support (EXPERIMENTAL)"
help
Say Y here to enable the extended profiling support mechanisms used
by profilers such as OProfile.
config OPROFILE
tristate "OProfile system profiling (EXPERIMENTAL)"
depends on PROFILING && !UML
help
OProfile is a profiling system capable of profiling the
whole system, include the kernel, kernel modules, libraries,
and applications.
If unsure, say N.
config OPROFILE_ARMV6
bool
depends on OPROFILE && CPU_V6 && !SMP
default y
select OPROFILE_ARM11_CORE
config OPROFILE_MPCORE
bool
depends on OPROFILE && CPU_V6 && SMP
default y
select OPROFILE_ARM11_CORE
config OPROFILE_ARM11_CORE
bool
config KPROBES
bool "Kprobes"
depends on KALLSYMS && MODULES && !UML && !XIP_KERNEL
help
Kprobes allows you to trap at almost any kernel address and
execute a callback function. register_kprobe() establishes
a probepoint and specifies the callback. Kprobes is useful
for kernel debugging, non-intrusive instrumentation and testing.
If in doubt, say "N".
config MARKERS
bool "Activate markers"
help
Place an empty function call at each marker site. Can be
dynamically changed for a probe function.
endif # INSTRUMENTATION
...@@ -10,6 +10,8 @@ config AVR32 ...@@ -10,6 +10,8 @@ config AVR32
# With EMBEDDED=n, we get lots of stuff automatically selected # With EMBEDDED=n, we get lots of stuff automatically selected
# that we usually don't need on AVR32. # that we usually don't need on AVR32.
select EMBEDDED select EMBEDDED
select HAVE_OPROFILE
select HAVE_KPROBES
help help
AVR32 is a high-performance 32-bit RISC microprocessor core, AVR32 is a high-performance 32-bit RISC microprocessor core,
designed for cost-sensitive embedded applications, with particular designed for cost-sensitive embedded applications, with particular
...@@ -54,9 +56,6 @@ config ARCH_HAS_ILOG2_U32 ...@@ -54,9 +56,6 @@ config ARCH_HAS_ILOG2_U32
config ARCH_HAS_ILOG2_U64 config ARCH_HAS_ILOG2_U64
def_bool n def_bool n
config ARCH_SUPPORTS_OPROFILE
def_bool y
config GENERIC_HWEIGHT config GENERIC_HWEIGHT
def_bool y def_bool y
......
...@@ -24,6 +24,7 @@ config RWSEM_XCHGADD_ALGORITHM ...@@ -24,6 +24,7 @@ config RWSEM_XCHGADD_ALGORITHM
config BLACKFIN config BLACKFIN
bool bool
default y default y
select HAVE_OPROFILE
config ZONE_DMA config ZONE_DMA
bool bool
...@@ -973,8 +974,6 @@ source "drivers/Kconfig" ...@@ -973,8 +974,6 @@ source "drivers/Kconfig"
source "fs/Kconfig" source "fs/Kconfig"
source "kernel/Kconfig.instrumentation"
source "arch/blackfin/Kconfig.debug" source "arch/blackfin/Kconfig.debug"
source "security/Kconfig" source "security/Kconfig"
......
...@@ -213,8 +213,6 @@ source "drivers/pci/Kconfig" ...@@ -213,8 +213,6 @@ source "drivers/pci/Kconfig"
source "drivers/usb/Kconfig" source "drivers/usb/Kconfig"
source "kernel/Kconfig.instrumentation"
source "arch/cris/Kconfig.debug" source "arch/cris/Kconfig.debug"
source "security/Kconfig" source "security/Kconfig"
......
...@@ -375,8 +375,6 @@ source "drivers/Kconfig" ...@@ -375,8 +375,6 @@ source "drivers/Kconfig"
source "fs/Kconfig" source "fs/Kconfig"
source "kernel/Kconfig.instrumentation"
source "arch/frv/Kconfig.debug" source "arch/frv/Kconfig.debug"
source "security/Kconfig" source "security/Kconfig"
......
...@@ -223,8 +223,6 @@ endmenu ...@@ -223,8 +223,6 @@ endmenu
source "fs/Kconfig" source "fs/Kconfig"
source "kernel/Kconfig.instrumentation"
source "arch/h8300/Kconfig.debug" source "arch/h8300/Kconfig.debug"
source "security/Kconfig" source "security/Kconfig"
......
...@@ -15,6 +15,8 @@ config IA64 ...@@ -15,6 +15,8 @@ config IA64
select ACPI if (!IA64_HP_SIM) select ACPI if (!IA64_HP_SIM)
select PM if (!IA64_HP_SIM) select PM if (!IA64_HP_SIM)
select ARCH_SUPPORTS_MSI select ARCH_SUPPORTS_MSI
select HAVE_OPROFILE
select HAVE_KPROBES
default y default y
help help
The Itanium Processor Family is Intel's 64-bit successor to The Itanium Processor Family is Intel's 64-bit successor to
...@@ -600,8 +602,6 @@ config IRQ_PER_CPU ...@@ -600,8 +602,6 @@ config IRQ_PER_CPU
source "arch/ia64/hp/sim/Kconfig" source "arch/ia64/hp/sim/Kconfig"
source "kernel/Kconfig.instrumentation"
source "arch/ia64/Kconfig.debug" source "arch/ia64/Kconfig.debug"
source "security/Kconfig" source "security/Kconfig"
......
...@@ -8,6 +8,7 @@ mainmenu "Linux/M32R Kernel Configuration" ...@@ -8,6 +8,7 @@ mainmenu "Linux/M32R Kernel Configuration"
config M32R config M32R
bool bool
default y default y
select HAVE_OPROFILE
config SBUS config SBUS
bool bool
...@@ -426,8 +427,6 @@ source "drivers/Kconfig" ...@@ -426,8 +427,6 @@ source "drivers/Kconfig"
source "fs/Kconfig" source "fs/Kconfig"
source "kernel/Kconfig.instrumentation"
source "arch/m32r/Kconfig.debug" source "arch/m32r/Kconfig.debug"
source "security/Kconfig" source "security/Kconfig"
......
...@@ -678,8 +678,6 @@ endmenu ...@@ -678,8 +678,6 @@ endmenu
source "fs/Kconfig" source "fs/Kconfig"
source "kernel/Kconfig.instrumentation"
source "arch/m68k/Kconfig.debug" source "arch/m68k/Kconfig.debug"
source "security/Kconfig" source "security/Kconfig"
......
...@@ -711,8 +711,6 @@ source "drivers/Kconfig" ...@@ -711,8 +711,6 @@ source "drivers/Kconfig"
source "fs/Kconfig" source "fs/Kconfig"
source "kernel/Kconfig.instrumentation"
source "arch/m68knommu/Kconfig.debug" source "arch/m68knommu/Kconfig.debug"
source "security/Kconfig" source "security/Kconfig"
......
config MIPS config MIPS
bool bool
default y default y
select HAVE_OPROFILE
# Horrible source of confusion. Die, die, die ... # Horrible source of confusion. Die, die, die ...
select EMBEDDED select EMBEDDED
select RTC_LIB select RTC_LIB
...@@ -2095,8 +2096,6 @@ source "drivers/Kconfig" ...@@ -2095,8 +2096,6 @@ source "drivers/Kconfig"
source "fs/Kconfig" source "fs/Kconfig"
source "kernel/Kconfig.instrumentation"
source "arch/mips/Kconfig.debug" source "arch/mips/Kconfig.debug"
source "security/Kconfig" source "security/Kconfig"
......
...@@ -7,6 +7,7 @@ mainmenu "Linux/PA-RISC Kernel Configuration" ...@@ -7,6 +7,7 @@ mainmenu "Linux/PA-RISC Kernel Configuration"
config PARISC config PARISC
def_bool y def_bool y
select HAVE_OPROFILE
help help
The PA-RISC microprocessor is designed by Hewlett-Packard and used The PA-RISC microprocessor is designed by Hewlett-Packard and used
in many of their workstations & servers (HP9000 700 and 800 series, in many of their workstations & servers (HP9000 700 and 800 series,
...@@ -272,8 +273,6 @@ source "drivers/Kconfig" ...@@ -272,8 +273,6 @@ source "drivers/Kconfig"
source "fs/Kconfig" source "fs/Kconfig"
source "kernel/Kconfig.instrumentation"
source "arch/parisc/Kconfig.debug" source "arch/parisc/Kconfig.debug"
source "security/Kconfig" source "security/Kconfig"
......
...@@ -87,6 +87,8 @@ config ARCH_NO_VIRT_TO_BUS ...@@ -87,6 +87,8 @@ config ARCH_NO_VIRT_TO_BUS
config PPC config PPC
bool bool
default y default y
select HAVE_OPROFILE
select HAVE_KPROBES
config EARLY_PRINTK config EARLY_PRINTK
bool bool
...@@ -713,8 +715,6 @@ source "arch/powerpc/sysdev/qe_lib/Kconfig" ...@@ -713,8 +715,6 @@ source "arch/powerpc/sysdev/qe_lib/Kconfig"
source "lib/Kconfig" source "lib/Kconfig"
source "kernel/Kconfig.instrumentation"
source "arch/powerpc/Kconfig.debug" source "arch/powerpc/Kconfig.debug"
source "security/Kconfig" source "security/Kconfig"
......
...@@ -42,6 +42,8 @@ config GENERIC_CALIBRATE_DELAY ...@@ -42,6 +42,8 @@ config GENERIC_CALIBRATE_DELAY
config PPC config PPC
bool bool
default y default y
select HAVE_OPROFILE
select HAVE_KPROBES
config PPC32 config PPC32
bool bool
...@@ -1256,8 +1258,6 @@ endmenu ...@@ -1256,8 +1258,6 @@ endmenu
source "lib/Kconfig" source "lib/Kconfig"
source "kernel/Kconfig.instrumentation"
source "arch/ppc/Kconfig.debug" source "arch/ppc/Kconfig.debug"
source "security/Kconfig" source "security/Kconfig"
......
...@@ -51,6 +51,8 @@ mainmenu "Linux Kernel Configuration" ...@@ -51,6 +51,8 @@ mainmenu "Linux Kernel Configuration"
config S390 config S390
def_bool y def_bool y
select HAVE_OPROFILE
select HAVE_KPROBES
source "init/Kconfig" source "init/Kconfig"
...@@ -526,8 +528,6 @@ source "drivers/Kconfig" ...@@ -526,8 +528,6 @@ source "drivers/Kconfig"
source "fs/Kconfig" source "fs/Kconfig"
source "kernel/Kconfig.instrumentation"
source "arch/s390/Kconfig.debug" source "arch/s390/Kconfig.debug"
source "security/Kconfig" source "security/Kconfig"
......
...@@ -8,6 +8,7 @@ mainmenu "Linux/SuperH Kernel Configuration" ...@@ -8,6 +8,7 @@ mainmenu "Linux/SuperH Kernel Configuration"
config SUPERH config SUPERH
def_bool y def_bool y
select EMBEDDED select EMBEDDED
select HAVE_OPROFILE
help help
The SuperH is a RISC processor targeted for use in embedded systems The SuperH is a RISC processor targeted for use in embedded systems
and consumer electronics; it was also used in the Sega Dreamcast and consumer electronics; it was also used in the Sega Dreamcast
...@@ -896,8 +897,6 @@ source "drivers/Kconfig" ...@@ -896,8 +897,6 @@ source "drivers/Kconfig"
source "fs/Kconfig" source "fs/Kconfig"
source "kernel/Kconfig.instrumentation"
source "arch/sh/Kconfig.debug" source "arch/sh/Kconfig.debug"
source "security/Kconfig" source "security/Kconfig"
......
...@@ -63,6 +63,7 @@ config NR_CPUS ...@@ -63,6 +63,7 @@ config NR_CPUS
config SPARC config SPARC
bool bool
default y default y
select HAVE_OPROFILE
# Identify this as a Sparc32 build # Identify this as a Sparc32 build
config SPARC32 config SPARC32
...@@ -320,8 +321,6 @@ endmenu ...@@ -320,8 +321,6 @@ endmenu
source "fs/Kconfig" source "fs/Kconfig"
source "kernel/Kconfig.instrumentation"
source "arch/sparc/Kconfig.debug" source "arch/sparc/Kconfig.debug"
source "security/Kconfig" source "security/Kconfig"
......
...@@ -8,6 +8,8 @@ mainmenu "Linux/UltraSPARC Kernel Configuration" ...@@ -8,6 +8,8 @@ mainmenu "Linux/UltraSPARC Kernel Configuration"
config SPARC config SPARC
bool bool
default y default y
select HAVE_OPROFILE
select HAVE_KPROBES
config SPARC64 config SPARC64
bool bool
...@@ -465,8 +467,6 @@ source "drivers/sbus/char/Kconfig" ...@@ -465,8 +467,6 @@ source "drivers/sbus/char/Kconfig"
source "fs/Kconfig" source "fs/Kconfig"
source "kernel/Kconfig.instrumentation"
source "arch/sparc64/Kconfig.debug" source "arch/sparc64/Kconfig.debug"
source "security/Kconfig" source "security/Kconfig"
......
...@@ -289,6 +289,4 @@ config INPUT ...@@ -289,6 +289,4 @@ config INPUT
bool bool
default n default n
source "kernel/Kconfig.instrumentation"
source "arch/um/Kconfig.debug" source "arch/um/Kconfig.debug"
...@@ -331,8 +331,6 @@ source "sound/Kconfig" ...@@ -331,8 +331,6 @@ source "sound/Kconfig"
source "drivers/usb/Kconfig" source "drivers/usb/Kconfig"
source "kernel/Kconfig.instrumentation"
source "arch/v850/Kconfig.debug" source "arch/v850/Kconfig.debug"
source "security/Kconfig" source "security/Kconfig"
......
...@@ -18,6 +18,8 @@ config X86_64 ...@@ -18,6 +18,8 @@ config X86_64
### Arch settings ### Arch settings
config X86 config X86
def_bool y def_bool y
select HAVE_OPROFILE
select HAVE_KPROBES
config GENERIC_LOCKBREAK config GENERIC_LOCKBREAK
def_bool n def_bool n
...@@ -106,10 +108,6 @@ config GENERIC_TIME_VSYSCALL ...@@ -106,10 +108,6 @@ config GENERIC_TIME_VSYSCALL
config HAVE_SETUP_PER_CPU_AREA config HAVE_SETUP_PER_CPU_AREA
def_bool X86_64 def_bool X86_64
config ARCH_SUPPORTS_OPROFILE
bool
default y
select HAVE_KVM select HAVE_KVM
config ARCH_HIBERNATION_POSSIBLE config ARCH_HIBERNATION_POSSIBLE
...@@ -1597,8 +1595,6 @@ source "drivers/firmware/Kconfig" ...@@ -1597,8 +1595,6 @@ source "drivers/firmware/Kconfig"
source "fs/Kconfig" source "fs/Kconfig"
source "kernel/Kconfig.instrumentation"
source "arch/x86/Kconfig.debug" source "arch/x86/Kconfig.debug"
source "security/Kconfig" source "security/Kconfig"
......
...@@ -246,8 +246,6 @@ config EMBEDDED_RAMDISK_IMAGE ...@@ -246,8 +246,6 @@ config EMBEDDED_RAMDISK_IMAGE
provide one yourself. provide one yourself.
endmenu endmenu
source "kernel/Kconfig.instrumentation"
source "arch/xtensa/Kconfig.debug" source "arch/xtensa/Kconfig.debug"
source "security/Kconfig" source "security/Kconfig"
......
...@@ -44,13 +44,8 @@ clean-files += aic79xx_seq.h aic79xx_reg.h aic79xx_reg_print.c ...@@ -44,13 +44,8 @@ clean-files += aic79xx_seq.h aic79xx_reg.h aic79xx_reg_print.c
# Dependencies for generated files need to be listed explicitly # Dependencies for generated files need to be listed explicitly
$(obj)/aic7xxx_core.o: $(obj)/aic7xxx_seq.h $(addprefix $(src)/,$(aic7xxx-y:.o=.c)): $(obj)/aic7xxx_seq.h $(obj)/aic7xxx_reg.h
$(obj)/aic7xxx_core.o: $(obj)/aic7xxx_reg.h $(addprefix $(src)/,$(aic79xx-y:.o=.c)): $(obj)/aic79xx_seq.h $(obj)/aic79xx_reg.h
$(obj)/aic79xx_core.o: $(obj)/aic79xx_seq.h
$(obj)/aic79xx_core.o: $(obj)/aic79xx_reg.h
$(addprefix $(obj)/,$(aic7xxx-y)): $(obj)/aic7xxx_seq.h
$(addprefix $(obj)/,$(aic79xx-y)): $(obj)/aic79xx_seq.h
aic7xxx-gen-$(CONFIG_AIC7XXX_BUILD_FIRMWARE) := $(obj)/aic7xxx_reg.h aic7xxx-gen-$(CONFIG_AIC7XXX_BUILD_FIRMWARE) := $(obj)/aic7xxx_reg.h
aic7xxx-gen-$(CONFIG_AIC7XXX_REG_PRETTY_PRINT) += $(obj)/aic7xxx_reg_print.c aic7xxx-gen-$(CONFIG_AIC7XXX_REG_PRETTY_PRINT) += $(obj)/aic7xxx_reg_print.c
......
...@@ -124,9 +124,6 @@ ...@@ -124,9 +124,6 @@
#define __REF .section ".ref.text", "ax" #define __REF .section ".ref.text", "ax"
#define __REFDATA .section ".ref.data", "aw" #define __REFDATA .section ".ref.data", "aw"
#define __REFCONST .section ".ref.rodata", "aw" #define __REFCONST .section ".ref.rodata", "aw"
/* backward compatibility */
#define __INIT_REFOK .section __REF
#define __INITDATA_REFOK .section __REFDATA
#ifndef __ASSEMBLY__ #ifndef __ASSEMBLY__
/* /*
......
...@@ -665,6 +665,20 @@ config SLOB ...@@ -665,6 +665,20 @@ config SLOB
endchoice endchoice
config PROFILING
bool "Profiling support (EXPERIMENTAL)"
help
Say Y here to enable the extended profiling support mechanisms used
by profilers such as OProfile.
config MARKERS
bool "Activate markers"
help
Place an empty function call at each marker site. Can be
dynamically changed for a probe function.
source "arch/Kconfig"
endmenu # General setup endmenu # General setup
config SLABINFO config SLABINFO
......
...@@ -81,7 +81,7 @@ config HEADERS_CHECK ...@@ -81,7 +81,7 @@ config HEADERS_CHECK
config DEBUG_SECTION_MISMATCH config DEBUG_SECTION_MISMATCH
bool "Enable full Section mismatch analysis" bool "Enable full Section mismatch analysis"
default n depends on UNDEFINED
help help
The section mismatch analysis checks if there are illegal The section mismatch analysis checks if there are illegal
references from one section to another section. references from one section to another section.
...@@ -90,19 +90,19 @@ config DEBUG_SECTION_MISMATCH ...@@ -90,19 +90,19 @@ config DEBUG_SECTION_MISMATCH
most likely result in an oops. most likely result in an oops.
In the code functions and variables are annotated with In the code functions and variables are annotated with
__init, __devinit etc. (see full list in include/linux/init.h) __init, __devinit etc. (see full list in include/linux/init.h)
which result in the code/data being placed in specific sections. which results in the code/data being placed in specific sections.
The section mismatch anaylsis are always done after a full The section mismatch analysis is always done after a full
kernel build but enabling this options will in addition kernel build but enabling this option will in addition
do the following: do the following:
- Add the option -fno-inline-functions-called-once to gcc - Add the option -fno-inline-functions-called-once to gcc
When inlining a function annotated __init in a non-init When inlining a function annotated __init in a non-init
function we would loose the section information and thus function we would lose the section information and thus
the analysis would not catch the illegal reference. the analysis would not catch the illegal reference.
This options tell gcc to inline less but will also This option tells gcc to inline less but will also
result in a larger kernel. result in a larger kernel.
- Run the section mismatch analysis for each module/built-in.o - Run the section mismatch analysis for each module/built-in.o
When we run the section mismatch analysis on vmlinux.o we When we run the section mismatch analysis on vmlinux.o we
looses valueable information about where the mismatch was lose valueble information about where the mismatch was
introduced. introduced.
Running the analysis for each module/built-in.o file Running the analysis for each module/built-in.o file
will tell where the mismatch happens much closer to the will tell where the mismatch happens much closer to the
......
...@@ -821,6 +821,7 @@ static void conf_load(void) ...@@ -821,6 +821,7 @@ static void conf_load(void)
return; return;
if (!conf_read(dialog_input_result)) { if (!conf_read(dialog_input_result)) {
set_config_filename(dialog_input_result); set_config_filename(dialog_input_result);
sym_set_change_count(1);
return; return;
} }
show_textbox(NULL, _("File does not exist!"), 5, 38); show_textbox(NULL, _("File does not exist!"), 5, 38);
......
...@@ -203,12 +203,9 @@ void sym_check_prop(struct symbol *sym) ...@@ -203,12 +203,9 @@ void sym_check_prop(struct symbol *sym)
prop_warn(prop, prop_warn(prop,
"config symbol '%s' uses select, but is " "config symbol '%s' uses select, but is "
"not boolean or tristate", sym->name); "not boolean or tristate", sym->name);
else if (sym2->type == S_UNKNOWN) else if (sym2->type != S_UNKNOWN &&
prop_warn(prop, sym2->type != S_BOOLEAN &&
"'select' used by config symbol '%s' " sym2->type != S_TRISTATE)
"refers to undefined symbol '%s'",
sym->name, sym2->name);
else if (sym2->type != S_BOOLEAN && sym2->type != S_TRISTATE)
prop_warn(prop, prop_warn(prop,
"'%s' has wrong type. 'select' only " "'%s' has wrong type. 'select' only "
"accept arguments of boolean and " "accept arguments of boolean and "
......
...@@ -870,7 +870,7 @@ const struct sectioncheck sectioncheck[] = { ...@@ -870,7 +870,7 @@ const struct sectioncheck sectioncheck[] = {
/* Do not export init/exit functions or data */ /* Do not export init/exit functions or data */
{ {
.fromsec = { "__ksymtab*", NULL }, .fromsec = { "__ksymtab*", NULL },
.tosec = { ALL_INIT_SECTIONS, ALL_EXIT_SECTIONS, NULL }, .tosec = { INIT_SECTIONS, EXIT_SECTIONS, NULL },
.mismatch = EXPORT_TO_INIT_EXIT .mismatch = EXPORT_TO_INIT_EXIT
} }
}; };
...@@ -1125,15 +1125,15 @@ static void report_sec_mismatch(const char *modname, enum mismatch mismatch, ...@@ -1125,15 +1125,15 @@ static void report_sec_mismatch(const char *modname, enum mismatch mismatch,
to = to_is_func ? "function" : "variable"; to = to_is_func ? "function" : "variable";
to_p = to_is_func ? "()" : ""; to_p = to_is_func ? "()" : "";
sec_mismatch_count++;
if (!sec_mismatch_verbose)
return;
fprintf(stderr, "WARNING: %s(%s+0x%llx): Section mismatch in" fprintf(stderr, "WARNING: %s(%s+0x%llx): Section mismatch in"
" reference from the %s %s%s to the %s %s:%s%s\n", " reference from the %s %s%s to the %s %s:%s%s\n",
modname, fromsec, fromaddr, from, fromsym, from_p, modname, fromsec, fromaddr, from, fromsym, from_p,
to, tosec, tosym, to_p); to, tosec, tosym, to_p);
sec_mismatch_count++;
if (!sec_mismatch_verbose)
return;
switch (mismatch) { switch (mismatch) {
case TEXT_TO_INIT: case TEXT_TO_INIT:
fprintf(stderr, fprintf(stderr,
...@@ -1939,10 +1939,9 @@ int main(int argc, char **argv) ...@@ -1939,10 +1939,9 @@ int main(int argc, char **argv)
write_dump(dump_write); write_dump(dump_write);
if (sec_mismatch_count && !sec_mismatch_verbose) if (sec_mismatch_count && !sec_mismatch_verbose)
fprintf(stderr, "modpost: Found %d section mismatch(es).\n" fprintf(stderr, "modpost: Found %d section mismatch(es).\n"
"To see additional details select \"Enable full " "To see full details build your kernel with:\n"
"Section mismatch analysis\"\n" "'make CONFIG_DEBUG_SECTION_MISMATCH=y'\n",
"in the Kernel Hacking menu " sec_mismatch_count);
"(CONFIG_SECTION_MISMATCH).\n", sec_mismatch_count);
return err; return err;
} }
...@@ -45,3 +45,19 @@ if hgid=`hg id 2>/dev/null`; then ...@@ -45,3 +45,19 @@ if hgid=`hg id 2>/dev/null`; then
# All done with mercurial # All done with mercurial
exit exit
fi fi
# Check for svn and a svn repo.
if rev=`svn info 2>/dev/null | grep '^Revision'`; then
rev=`echo $rev | awk '{print $NF}'`
changes=`svn status 2>/dev/null | grep '^[AMD]' | wc -l`
# Are there uncommitted changes?
if [ $changes != 0 ]; then
printf -- '-svn%s%s%s' "$rev" -dirty "$changes"
else
printf -- '-svn%s' "$rev"
fi
# All done with svn
exit
fi
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment