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
This commit is contained in:
Linus Torvalds 2008-02-04 07:56:17 -08:00
commit 519cb68807
34 changed files with 122 additions and 194 deletions

31
arch/Kconfig Normal file
View file

@ -0,0 +1,31 @@
#
# General architecture dependent options
#
config OPROFILE
tristate "OProfile system profiling (EXPERIMENTAL)"
depends on PROFILING
depends on HAVE_OPROFILE
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 HAVE_OPROFILE
def_bool n
config KPROBES
bool "Kprobes"
depends on KALLSYMS && MODULES
depends on HAVE_KPROBES
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 HAVE_KPROBES
def_bool n

View file

@ -5,6 +5,7 @@
config ALPHA
bool
default y
select HAVE_OPROFILE
help
The Alpha is a 64-bit general-purpose processor designed and
marketed by the Digital Equipment Corporation of blessed memory,
@ -649,8 +650,6 @@ source "drivers/Kconfig"
source "fs/Kconfig"
source "kernel/Kconfig.instrumentation"
source "arch/alpha/Kconfig.debug"
# DUMMY_CONSOLE may be defined in drivers/video/console/Kconfig

View file

@ -10,6 +10,8 @@ config ARM
default y
select RTC_LIB
select SYS_SUPPORTS_APM_EMULATION
select HAVE_OPROFILE
select HAVE_KPROBES if (!XIP_KERNEL)
help
The ARM series is a line of low-power-consumption RISC chip designs
licensed by ARM Ltd and targeted at embedded applications and
@ -135,6 +137,23 @@ config FIQ
config ARCH_MTD_XIP
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
hex
default 0xffff0000 if MMU || CPU_HIGH_VECTOR
@ -1128,8 +1147,6 @@ endmenu
source "fs/Kconfig"
source "arch/arm/Kconfig.instrumentation"
source "arch/arm/Kconfig.debug"
source "security/Kconfig"

View file

@ -1,62 +0,0 @@
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

View file

@ -10,6 +10,8 @@ config AVR32
# With EMBEDDED=n, we get lots of stuff automatically selected
# that we usually don't need on AVR32.
select EMBEDDED
select HAVE_OPROFILE
select HAVE_KPROBES
help
AVR32 is a high-performance 32-bit RISC microprocessor core,
designed for cost-sensitive embedded applications, with particular
@ -54,9 +56,6 @@ config ARCH_HAS_ILOG2_U32
config ARCH_HAS_ILOG2_U64
def_bool n
config ARCH_SUPPORTS_OPROFILE
def_bool y
config GENERIC_HWEIGHT
def_bool y

View file

@ -24,6 +24,7 @@ config RWSEM_XCHGADD_ALGORITHM
config BLACKFIN
bool
default y
select HAVE_OPROFILE
config ZONE_DMA
bool
@ -973,8 +974,6 @@ source "drivers/Kconfig"
source "fs/Kconfig"
source "kernel/Kconfig.instrumentation"
source "arch/blackfin/Kconfig.debug"
source "security/Kconfig"

View file

@ -213,8 +213,6 @@ source "drivers/pci/Kconfig"
source "drivers/usb/Kconfig"
source "kernel/Kconfig.instrumentation"
source "arch/cris/Kconfig.debug"
source "security/Kconfig"

View file

@ -375,8 +375,6 @@ source "drivers/Kconfig"
source "fs/Kconfig"
source "kernel/Kconfig.instrumentation"
source "arch/frv/Kconfig.debug"
source "security/Kconfig"

View file

@ -223,8 +223,6 @@ endmenu
source "fs/Kconfig"
source "kernel/Kconfig.instrumentation"
source "arch/h8300/Kconfig.debug"
source "security/Kconfig"

View file

@ -15,6 +15,8 @@ config IA64
select ACPI if (!IA64_HP_SIM)
select PM if (!IA64_HP_SIM)
select ARCH_SUPPORTS_MSI
select HAVE_OPROFILE
select HAVE_KPROBES
default y
help
The Itanium Processor Family is Intel's 64-bit successor to
@ -600,8 +602,6 @@ config IRQ_PER_CPU
source "arch/ia64/hp/sim/Kconfig"
source "kernel/Kconfig.instrumentation"
source "arch/ia64/Kconfig.debug"
source "security/Kconfig"

View file

@ -8,6 +8,7 @@ mainmenu "Linux/M32R Kernel Configuration"
config M32R
bool
default y
select HAVE_OPROFILE
config SBUS
bool
@ -426,8 +427,6 @@ source "drivers/Kconfig"
source "fs/Kconfig"
source "kernel/Kconfig.instrumentation"
source "arch/m32r/Kconfig.debug"
source "security/Kconfig"

View file

@ -678,8 +678,6 @@ endmenu
source "fs/Kconfig"
source "kernel/Kconfig.instrumentation"
source "arch/m68k/Kconfig.debug"
source "security/Kconfig"

View file

@ -711,8 +711,6 @@ source "drivers/Kconfig"
source "fs/Kconfig"
source "kernel/Kconfig.instrumentation"
source "arch/m68knommu/Kconfig.debug"
source "security/Kconfig"

View file

@ -1,6 +1,7 @@
config MIPS
bool
default y
select HAVE_OPROFILE
# Horrible source of confusion. Die, die, die ...
select EMBEDDED
select RTC_LIB
@ -2095,8 +2096,6 @@ source "drivers/Kconfig"
source "fs/Kconfig"
source "kernel/Kconfig.instrumentation"
source "arch/mips/Kconfig.debug"
source "security/Kconfig"

View file

@ -7,6 +7,7 @@ mainmenu "Linux/PA-RISC Kernel Configuration"
config PARISC
def_bool y
select HAVE_OPROFILE
help
The PA-RISC microprocessor is designed by Hewlett-Packard and used
in many of their workstations & servers (HP9000 700 and 800 series,
@ -272,8 +273,6 @@ source "drivers/Kconfig"
source "fs/Kconfig"
source "kernel/Kconfig.instrumentation"
source "arch/parisc/Kconfig.debug"
source "security/Kconfig"

View file

@ -87,6 +87,8 @@ config ARCH_NO_VIRT_TO_BUS
config PPC
bool
default y
select HAVE_OPROFILE
select HAVE_KPROBES
config EARLY_PRINTK
bool
@ -713,8 +715,6 @@ source "arch/powerpc/sysdev/qe_lib/Kconfig"
source "lib/Kconfig"
source "kernel/Kconfig.instrumentation"
source "arch/powerpc/Kconfig.debug"
source "security/Kconfig"

View file

@ -42,6 +42,8 @@ config GENERIC_CALIBRATE_DELAY
config PPC
bool
default y
select HAVE_OPROFILE
select HAVE_KPROBES
config PPC32
bool
@ -1256,8 +1258,6 @@ endmenu
source "lib/Kconfig"
source "kernel/Kconfig.instrumentation"
source "arch/ppc/Kconfig.debug"
source "security/Kconfig"

View file

@ -51,6 +51,8 @@ mainmenu "Linux Kernel Configuration"
config S390
def_bool y
select HAVE_OPROFILE
select HAVE_KPROBES
source "init/Kconfig"
@ -526,8 +528,6 @@ source "drivers/Kconfig"
source "fs/Kconfig"
source "kernel/Kconfig.instrumentation"
source "arch/s390/Kconfig.debug"
source "security/Kconfig"

View file

@ -8,6 +8,7 @@ mainmenu "Linux/SuperH Kernel Configuration"
config SUPERH
def_bool y
select EMBEDDED
select HAVE_OPROFILE
help
The SuperH is a RISC processor targeted for use in embedded systems
and consumer electronics; it was also used in the Sega Dreamcast
@ -896,8 +897,6 @@ source "drivers/Kconfig"
source "fs/Kconfig"
source "kernel/Kconfig.instrumentation"
source "arch/sh/Kconfig.debug"
source "security/Kconfig"

View file

@ -63,6 +63,7 @@ config NR_CPUS
config SPARC
bool
default y
select HAVE_OPROFILE
# Identify this as a Sparc32 build
config SPARC32
@ -320,8 +321,6 @@ endmenu
source "fs/Kconfig"
source "kernel/Kconfig.instrumentation"
source "arch/sparc/Kconfig.debug"
source "security/Kconfig"

View file

@ -8,6 +8,8 @@ mainmenu "Linux/UltraSPARC Kernel Configuration"
config SPARC
bool
default y
select HAVE_OPROFILE
select HAVE_KPROBES
config SPARC64
bool
@ -465,8 +467,6 @@ source "drivers/sbus/char/Kconfig"
source "fs/Kconfig"
source "kernel/Kconfig.instrumentation"
source "arch/sparc64/Kconfig.debug"
source "security/Kconfig"

View file

@ -289,6 +289,4 @@ config INPUT
bool
default n
source "kernel/Kconfig.instrumentation"
source "arch/um/Kconfig.debug"

View file

@ -331,8 +331,6 @@ source "sound/Kconfig"
source "drivers/usb/Kconfig"
source "kernel/Kconfig.instrumentation"
source "arch/v850/Kconfig.debug"
source "security/Kconfig"

View file

@ -18,6 +18,8 @@ config X86_64
### Arch settings
config X86
def_bool y
select HAVE_OPROFILE
select HAVE_KPROBES
config GENERIC_LOCKBREAK
def_bool n
@ -106,10 +108,6 @@ config GENERIC_TIME_VSYSCALL
config HAVE_SETUP_PER_CPU_AREA
def_bool X86_64
config ARCH_SUPPORTS_OPROFILE
bool
default y
select HAVE_KVM
config ARCH_HIBERNATION_POSSIBLE
@ -1597,8 +1595,6 @@ source "drivers/firmware/Kconfig"
source "fs/Kconfig"
source "kernel/Kconfig.instrumentation"
source "arch/x86/Kconfig.debug"
source "security/Kconfig"

View file

@ -246,8 +246,6 @@ config EMBEDDED_RAMDISK_IMAGE
provide one yourself.
endmenu
source "kernel/Kconfig.instrumentation"
source "arch/xtensa/Kconfig.debug"
source "security/Kconfig"

View file

@ -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
$(obj)/aic7xxx_core.o: $(obj)/aic7xxx_seq.h
$(obj)/aic7xxx_core.o: $(obj)/aic7xxx_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
$(addprefix $(src)/,$(aic7xxx-y:.o=.c)): $(obj)/aic7xxx_seq.h $(obj)/aic7xxx_reg.h
$(addprefix $(src)/,$(aic79xx-y:.o=.c)): $(obj)/aic79xx_seq.h $(obj)/aic79xx_reg.h
aic7xxx-gen-$(CONFIG_AIC7XXX_BUILD_FIRMWARE) := $(obj)/aic7xxx_reg.h
aic7xxx-gen-$(CONFIG_AIC7XXX_REG_PRETTY_PRINT) += $(obj)/aic7xxx_reg_print.c

View file

@ -124,9 +124,6 @@
#define __REF .section ".ref.text", "ax"
#define __REFDATA .section ".ref.data", "aw"
#define __REFCONST .section ".ref.rodata", "aw"
/* backward compatibility */
#define __INIT_REFOK .section __REF
#define __INITDATA_REFOK .section __REFDATA
#ifndef __ASSEMBLY__
/*

View file

@ -665,6 +665,20 @@ config SLOB
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
config SLABINFO

View file

@ -1,49 +0,0 @@
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
depends on ARCH_SUPPORTS_OPROFILE || ALPHA || ARM || BLACKFIN || IA64 || M32R || PARISC || PPC || S390 || SUPERH || SPARC
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 KPROBES
bool "Kprobes"
depends on KALLSYMS && MODULES && !UML
depends on X86_32 || IA64 || PPC || S390 || SPARC64 || X86_64 || AVR32
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

View file

@ -81,7 +81,7 @@ config HEADERS_CHECK
config DEBUG_SECTION_MISMATCH
bool "Enable full Section mismatch analysis"
default n
depends on UNDEFINED
help
The section mismatch analysis checks if there are illegal
references from one section to another section.
@ -90,19 +90,19 @@ config DEBUG_SECTION_MISMATCH
most likely result in an oops.
In the code functions and variables are annotated with
__init, __devinit etc. (see full list in include/linux/init.h)
which result in the code/data being placed in specific sections.
The section mismatch anaylsis are always done after a full
kernel build but enabling this options will in addition
which results in the code/data being placed in specific sections.
The section mismatch analysis is always done after a full
kernel build but enabling this option will in addition
do the following:
- Add the option -fno-inline-functions-called-once to gcc
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.
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.
- Run the section mismatch analysis for each module/built-in.o
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.
Running the analysis for each module/built-in.o file
will tell where the mismatch happens much closer to the

View file

@ -821,6 +821,7 @@ static void conf_load(void)
return;
if (!conf_read(dialog_input_result)) {
set_config_filename(dialog_input_result);
sym_set_change_count(1);
return;
}
show_textbox(NULL, _("File does not exist!"), 5, 38);

View file

@ -203,12 +203,9 @@ void sym_check_prop(struct symbol *sym)
prop_warn(prop,
"config symbol '%s' uses select, but is "
"not boolean or tristate", sym->name);
else if (sym2->type == S_UNKNOWN)
prop_warn(prop,
"'select' used by config symbol '%s' "
"refers to undefined symbol '%s'",
sym->name, sym2->name);
else if (sym2->type != S_BOOLEAN && sym2->type != S_TRISTATE)
else if (sym2->type != S_UNKNOWN &&
sym2->type != S_BOOLEAN &&
sym2->type != S_TRISTATE)
prop_warn(prop,
"'%s' has wrong type. 'select' only "
"accept arguments of boolean and "

View file

@ -870,7 +870,7 @@ const struct sectioncheck sectioncheck[] = {
/* Do not export init/exit functions or data */
{
.fromsec = { "__ksymtab*", NULL },
.tosec = { ALL_INIT_SECTIONS, ALL_EXIT_SECTIONS, NULL },
.tosec = { INIT_SECTIONS, EXIT_SECTIONS, NULL },
.mismatch = EXPORT_TO_INIT_EXIT
}
};
@ -1125,15 +1125,15 @@ static void report_sec_mismatch(const char *modname, enum mismatch mismatch,
to = to_is_func ? "function" : "variable";
to_p = to_is_func ? "()" : "";
sec_mismatch_count++;
if (!sec_mismatch_verbose)
return;
fprintf(stderr, "WARNING: %s(%s+0x%llx): Section mismatch in"
" reference from the %s %s%s to the %s %s:%s%s\n",
modname, fromsec, fromaddr, from, fromsym, from_p,
to, tosec, tosym, to_p);
sec_mismatch_count++;
if (!sec_mismatch_verbose)
return;
switch (mismatch) {
case TEXT_TO_INIT:
fprintf(stderr,
@ -1939,10 +1939,9 @@ int main(int argc, char **argv)
write_dump(dump_write);
if (sec_mismatch_count && !sec_mismatch_verbose)
fprintf(stderr, "modpost: Found %d section mismatch(es).\n"
"To see additional details select \"Enable full "
"Section mismatch analysis\"\n"
"in the Kernel Hacking menu "
"(CONFIG_SECTION_MISMATCH).\n", sec_mismatch_count);
"To see full details build your kernel with:\n"
"'make CONFIG_DEBUG_SECTION_MISMATCH=y'\n",
sec_mismatch_count);
return err;
}

16
scripts/setlocalversion Normal file → Executable file
View file

@ -45,3 +45,19 @@ if hgid=`hg id 2>/dev/null`; then
# All done with mercurial
exit
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