diff options
94 files changed, 473 insertions, 354 deletions
diff --git a/Documentation/kbuild/kbuild.txt b/Documentation/kbuild/kbuild.txt index f3355b6812df..bb3bf38f03da 100644 --- a/Documentation/kbuild/kbuild.txt +++ b/Documentation/kbuild/kbuild.txt | |||
@@ -65,6 +65,22 @@ INSTALL_PATH | |||
65 | INSTALL_PATH specifies where to place the updated kernel and system map | 65 | INSTALL_PATH specifies where to place the updated kernel and system map |
66 | images. Default is /boot, but you can set it to other values. | 66 | images. Default is /boot, but you can set it to other values. |
67 | 67 | ||
68 | INSTALLKERNEL | ||
69 | -------------------------------------------------- | ||
70 | Install script called when using "make install". | ||
71 | The default name is "installkernel". | ||
72 | |||
73 | The script will be called with the following arguments: | ||
74 | $1 - kernel version | ||
75 | $2 - kernel image file | ||
76 | $3 - kernel map file | ||
77 | $4 - default install path (use root directory if blank) | ||
78 | |||
79 | The implmentation of "make install" is architecture specific | ||
80 | and it may differ from the above. | ||
81 | |||
82 | INSTALLKERNEL is provided to enable the possibility to | ||
83 | specify a custom installer when cross compiling a kernel. | ||
68 | 84 | ||
69 | MODLIB | 85 | MODLIB |
70 | -------------------------------------------------- | 86 | -------------------------------------------------- |
diff --git a/Documentation/kbuild/makefiles.txt b/Documentation/kbuild/makefiles.txt index d76cfd8712e1..71c602d61680 100644 --- a/Documentation/kbuild/makefiles.txt +++ b/Documentation/kbuild/makefiles.txt | |||
@@ -18,6 +18,7 @@ This document describes the Linux kernel Makefiles. | |||
18 | --- 3.9 Dependency tracking | 18 | --- 3.9 Dependency tracking |
19 | --- 3.10 Special Rules | 19 | --- 3.10 Special Rules |
20 | --- 3.11 $(CC) support functions | 20 | --- 3.11 $(CC) support functions |
21 | --- 3.12 $(LD) support functions | ||
21 | 22 | ||
22 | === 4 Host Program support | 23 | === 4 Host Program support |
23 | --- 4.1 Simple Host Program | 24 | --- 4.1 Simple Host Program |
@@ -435,14 +436,14 @@ more details, with real examples. | |||
435 | The second argument is optional, and if supplied will be used | 436 | The second argument is optional, and if supplied will be used |
436 | if first argument is not supported. | 437 | if first argument is not supported. |
437 | 438 | ||
438 | ld-option | 439 | cc-ldoption |
439 | ld-option is used to check if $(CC) when used to link object files | 440 | cc-ldoption is used to check if $(CC) when used to link object files |
440 | supports the given option. An optional second option may be | 441 | supports the given option. An optional second option may be |
441 | specified if first option are not supported. | 442 | specified if first option are not supported. |
442 | 443 | ||
443 | Example: | 444 | Example: |
444 | #arch/i386/kernel/Makefile | 445 | #arch/i386/kernel/Makefile |
445 | vsyscall-flags += $(call ld-option, -Wl$(comma)--hash-style=sysv) | 446 | vsyscall-flags += $(call cc-ldoption, -Wl$(comma)--hash-style=sysv) |
446 | 447 | ||
447 | In the above example, vsyscall-flags will be assigned the option | 448 | In the above example, vsyscall-flags will be assigned the option |
448 | -Wl$(comma)--hash-style=sysv if it is supported by $(CC). | 449 | -Wl$(comma)--hash-style=sysv if it is supported by $(CC). |
@@ -570,6 +571,19 @@ more details, with real examples. | |||
570 | endif | 571 | endif |
571 | endif | 572 | endif |
572 | 573 | ||
574 | --- 3.12 $(LD) support functions | ||
575 | |||
576 | ld-option | ||
577 | ld-option is used to check if $(LD) supports the supplied option. | ||
578 | ld-option takes two options as arguments. | ||
579 | The second argument is an optional option that can be used if the | ||
580 | first option is not supported by $(LD). | ||
581 | |||
582 | Example: | ||
583 | #Makefile | ||
584 | LDFLAGS_vmlinux += $(call really-ld-option, -X) | ||
585 | |||
586 | |||
573 | === 4 Host Program support | 587 | === 4 Host Program support |
574 | 588 | ||
575 | Kbuild supports building executables on the host for use during the | 589 | Kbuild supports building executables on the host for use during the |
@@ -179,9 +179,46 @@ SUBARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \ | |||
179 | # Alternatively CROSS_COMPILE can be set in the environment. | 179 | # Alternatively CROSS_COMPILE can be set in the environment. |
180 | # Default value for CROSS_COMPILE is not to prefix executables | 180 | # Default value for CROSS_COMPILE is not to prefix executables |
181 | # Note: Some architectures assign CROSS_COMPILE in their arch/*/Makefile | 181 | # Note: Some architectures assign CROSS_COMPILE in their arch/*/Makefile |
182 | # | ||
183 | # To force ARCH and CROSS_COMPILE settings include kernel.* files | ||
184 | # in the kernel tree - do not patch this file. | ||
182 | export KBUILD_BUILDHOST := $(SUBARCH) | 185 | export KBUILD_BUILDHOST := $(SUBARCH) |
183 | ARCH ?= $(SUBARCH) | 186 | |
184 | CROSS_COMPILE ?= | 187 | # Kbuild save the ARCH and CROSS_COMPILE setting in kernel.* files. |
188 | # Restore these settings and check that user did not specify | ||
189 | # conflicting values. | ||
190 | |||
191 | saved_arch := $(shell cat include/generated/kernel.arch 2> /dev/null) | ||
192 | saved_cross := $(shell cat include/generated/kernel.cross 2> /dev/null) | ||
193 | |||
194 | ifneq ($(CROSS_COMPILE),) | ||
195 | ifneq ($(saved_cross),) | ||
196 | ifneq ($(CROSS_COMPILE),$(saved_cross)) | ||
197 | $(error CROSS_COMPILE changed from \ | ||
198 | "$(saved_cross)" to \ | ||
199 | to "$(CROSS_COMPILE)". \ | ||
200 | Use "make mrproper" to fix it up) | ||
201 | endif | ||
202 | endif | ||
203 | else | ||
204 | CROSS_COMPILE := $(saved_cross) | ||
205 | endif | ||
206 | |||
207 | ifneq ($(ARCH),) | ||
208 | ifneq ($(saved_arch),) | ||
209 | ifneq ($(saved_arch),$(ARCH)) | ||
210 | $(error ARCH changed from \ | ||
211 | "$(saved_arch)" to "$(ARCH)". \ | ||
212 | Use "make mrproper" to fix it up) | ||
213 | endif | ||
214 | endif | ||
215 | else | ||
216 | ifneq ($(saved_arch),) | ||
217 | ARCH := $(saved_arch) | ||
218 | else | ||
219 | ARCH := $(SUBARCH) | ||
220 | endif | ||
221 | endif | ||
185 | 222 | ||
186 | # Architecture as present in compile.h | 223 | # Architecture as present in compile.h |
187 | UTS_MACHINE := $(ARCH) | 224 | UTS_MACHINE := $(ARCH) |
@@ -315,6 +352,7 @@ OBJCOPY = $(CROSS_COMPILE)objcopy | |||
315 | OBJDUMP = $(CROSS_COMPILE)objdump | 352 | OBJDUMP = $(CROSS_COMPILE)objdump |
316 | AWK = awk | 353 | AWK = awk |
317 | GENKSYMS = scripts/genksyms/genksyms | 354 | GENKSYMS = scripts/genksyms/genksyms |
355 | INSTALLKERNEL := installkernel | ||
318 | DEPMOD = /sbin/depmod | 356 | DEPMOD = /sbin/depmod |
319 | KALLSYMS = scripts/kallsyms | 357 | KALLSYMS = scripts/kallsyms |
320 | PERL = perl | 358 | PERL = perl |
@@ -353,7 +391,8 @@ KERNELVERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) | |||
353 | 391 | ||
354 | export VERSION PATCHLEVEL SUBLEVEL KERNELRELEASE KERNELVERSION | 392 | export VERSION PATCHLEVEL SUBLEVEL KERNELRELEASE KERNELVERSION |
355 | export ARCH SRCARCH CONFIG_SHELL HOSTCC HOSTCFLAGS CROSS_COMPILE AS LD CC | 393 | export ARCH SRCARCH CONFIG_SHELL HOSTCC HOSTCFLAGS CROSS_COMPILE AS LD CC |
356 | export CPP AR NM STRIP OBJCOPY OBJDUMP MAKE AWK GENKSYMS PERL UTS_MACHINE | 394 | export CPP AR NM STRIP OBJCOPY OBJDUMP |
395 | export MAKE AWK GENKSYMS INSTALLKERNEL PERL UTS_MACHINE | ||
357 | export HOSTCXX HOSTCXXFLAGS LDFLAGS_MODULE CHECK CHECKFLAGS | 396 | export HOSTCXX HOSTCXXFLAGS LDFLAGS_MODULE CHECK CHECKFLAGS |
358 | 397 | ||
359 | export KBUILD_CPPFLAGS NOSTDINC_FLAGS LINUXINCLUDE OBJCOPYFLAGS LDFLAGS | 398 | export KBUILD_CPPFLAGS NOSTDINC_FLAGS LINUXINCLUDE OBJCOPYFLAGS LDFLAGS |
@@ -444,6 +483,11 @@ ifeq ($(config-targets),1) | |||
444 | include $(srctree)/arch/$(SRCARCH)/Makefile | 483 | include $(srctree)/arch/$(SRCARCH)/Makefile |
445 | export KBUILD_DEFCONFIG KBUILD_KCONFIG | 484 | export KBUILD_DEFCONFIG KBUILD_KCONFIG |
446 | 485 | ||
486 | # save ARCH & CROSS_COMPILE settings | ||
487 | $(shell mkdir -p include/generated && \ | ||
488 | echo $(ARCH) > include/generated/kernel.arch && \ | ||
489 | echo $(CROSS_COMPILE) > include/generated/kernel.cross) | ||
490 | |||
447 | config: scripts_basic outputmakefile FORCE | 491 | config: scripts_basic outputmakefile FORCE |
448 | $(Q)mkdir -p include/linux include/config | 492 | $(Q)mkdir -p include/linux include/config |
449 | $(Q)$(MAKE) $(build)=scripts/kconfig $@ | 493 | $(Q)$(MAKE) $(build)=scripts/kconfig $@ |
@@ -571,6 +615,9 @@ KBUILD_CFLAGS += $(call cc-option,-fno-strict-overflow) | |||
571 | # revert to pre-gcc-4.4 behaviour of .eh_frame | 615 | # revert to pre-gcc-4.4 behaviour of .eh_frame |
572 | KBUILD_CFLAGS += $(call cc-option,-fno-dwarf2-cfi-asm) | 616 | KBUILD_CFLAGS += $(call cc-option,-fno-dwarf2-cfi-asm) |
573 | 617 | ||
618 | # conserve stack if available | ||
619 | KBUILD_CFLAGS += $(call cc-option,-fconserve-stack) | ||
620 | |||
574 | # Add user supplied CPPFLAGS, AFLAGS and CFLAGS as the last assignments | 621 | # Add user supplied CPPFLAGS, AFLAGS and CFLAGS as the last assignments |
575 | # But warn user when we do so | 622 | # But warn user when we do so |
576 | warn-assign = \ | 623 | warn-assign = \ |
@@ -591,12 +638,12 @@ endif | |||
591 | 638 | ||
592 | # Use --build-id when available. | 639 | # Use --build-id when available. |
593 | LDFLAGS_BUILD_ID = $(patsubst -Wl$(comma)%,%,\ | 640 | LDFLAGS_BUILD_ID = $(patsubst -Wl$(comma)%,%,\ |
594 | $(call ld-option, -Wl$(comma)--build-id,)) | 641 | $(call cc-ldoption, -Wl$(comma)--build-id,)) |
595 | LDFLAGS_MODULE += $(LDFLAGS_BUILD_ID) | 642 | LDFLAGS_MODULE += $(LDFLAGS_BUILD_ID) |
596 | LDFLAGS_vmlinux += $(LDFLAGS_BUILD_ID) | 643 | LDFLAGS_vmlinux += $(LDFLAGS_BUILD_ID) |
597 | 644 | ||
598 | ifeq ($(CONFIG_STRIP_ASM_SYMS),y) | 645 | ifeq ($(CONFIG_STRIP_ASM_SYMS),y) |
599 | LDFLAGS_vmlinux += -X | 646 | LDFLAGS_vmlinux += $(call ld-option, -X,) |
600 | endif | 647 | endif |
601 | 648 | ||
602 | # Default kernel image to build when no specific target is given. | 649 | # Default kernel image to build when no specific target is given. |
@@ -980,11 +1027,6 @@ prepare0: archprepare FORCE | |||
980 | # All the preparing.. | 1027 | # All the preparing.. |
981 | prepare: prepare0 | 1028 | prepare: prepare0 |
982 | 1029 | ||
983 | # Leave this as default for preprocessing vmlinux.lds.S, which is now | ||
984 | # done in arch/$(ARCH)/kernel/Makefile | ||
985 | |||
986 | export CPPFLAGS_vmlinux.lds += -P -C -U$(ARCH) | ||
987 | |||
988 | # The asm symlink changes when $(ARCH) changes. | 1030 | # The asm symlink changes when $(ARCH) changes. |
989 | # Detect this and ask user to run make mrproper | 1031 | # Detect this and ask user to run make mrproper |
990 | # If asm is a stale symlink (point to dir that does not exist) remove it | 1032 | # If asm is a stale symlink (point to dir that does not exist) remove it |
diff --git a/arch/arm/Makefile b/arch/arm/Makefile index 54661125a8bf..a73caaf66763 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile | |||
@@ -14,7 +14,7 @@ LDFLAGS_vmlinux :=-p --no-undefined -X | |||
14 | ifeq ($(CONFIG_CPU_ENDIAN_BE8),y) | 14 | ifeq ($(CONFIG_CPU_ENDIAN_BE8),y) |
15 | LDFLAGS_vmlinux += --be8 | 15 | LDFLAGS_vmlinux += --be8 |
16 | endif | 16 | endif |
17 | CPPFLAGS_vmlinux.lds = -DTEXT_OFFSET=$(TEXT_OFFSET) | 17 | |
18 | OBJCOPYFLAGS :=-O binary -R .note -R .note.gnu.build-id -R .comment -S | 18 | OBJCOPYFLAGS :=-O binary -R .note -R .note.gnu.build-id -R .comment -S |
19 | GZFLAGS :=-9 | 19 | GZFLAGS :=-9 |
20 | #KBUILD_CFLAGS +=-pipe | 20 | #KBUILD_CFLAGS +=-pipe |
@@ -279,7 +279,7 @@ define archhelp | |||
279 | echo ' (supply initrd image via make variable INITRD=<path>)' | 279 | echo ' (supply initrd image via make variable INITRD=<path>)' |
280 | echo ' install - Install uncompressed kernel' | 280 | echo ' install - Install uncompressed kernel' |
281 | echo ' zinstall - Install compressed kernel' | 281 | echo ' zinstall - Install compressed kernel' |
282 | echo ' Install using (your) ~/bin/installkernel or' | 282 | echo ' Install using (your) ~/bin/$(INSTALLKERNEL) or' |
283 | echo ' (distribution) /sbin/installkernel or' | 283 | echo ' (distribution) /sbin/$(INSTALLKERNEL) or' |
284 | echo ' install to $$(INSTALL_PATH) and run lilo' | 284 | echo ' install to $$(INSTALL_PATH) and run lilo' |
285 | endef | 285 | endef |
diff --git a/arch/arm/boot/install.sh b/arch/arm/boot/install.sh index 9f9bed207345..06ea7d42ce8e 100644 --- a/arch/arm/boot/install.sh +++ b/arch/arm/boot/install.sh | |||
@@ -21,8 +21,8 @@ | |||
21 | # | 21 | # |
22 | 22 | ||
23 | # User may have a custom install script | 23 | # User may have a custom install script |
24 | if [ -x ~/bin/${CROSS_COMPILE}installkernel ]; then exec ~/bin/${CROSS_COMPILE}installkernel "$@"; fi | 24 | if [ -x ~/bin/${INSTALLKERNEL} ]; then exec ~/bin/${INSTALLKERNEL} "$@"; fi |
25 | if [ -x /sbin/${CROSS_COMPILE}installkernel ]; then exec /sbin/${CROSS_COMPILE}installkernel "$@"; fi | 25 | if [ -x /sbin/${INSTALLKERNEL} ]; then exec /sbin/${INSTALLKERNEL} "$@"; fi |
26 | 26 | ||
27 | if [ "$(basename $2)" = "zImage" ]; then | 27 | if [ "$(basename $2)" = "zImage" ]; then |
28 | # Compressed install | 28 | # Compressed install |
diff --git a/arch/arm/kernel/Makefile b/arch/arm/kernel/Makefile index 3213c9382b17..c446aeff7b89 100644 --- a/arch/arm/kernel/Makefile +++ b/arch/arm/kernel/Makefile | |||
@@ -2,7 +2,8 @@ | |||
2 | # Makefile for the linux kernel. | 2 | # Makefile for the linux kernel. |
3 | # | 3 | # |
4 | 4 | ||
5 | AFLAGS_head.o := -DTEXT_OFFSET=$(TEXT_OFFSET) | 5 | CPPFLAGS_vmlinux.lds := -DTEXT_OFFSET=$(TEXT_OFFSET) |
6 | AFLAGS_head.o := -DTEXT_OFFSET=$(TEXT_OFFSET) | ||
6 | 7 | ||
7 | ifdef CONFIG_DYNAMIC_FTRACE | 8 | ifdef CONFIG_DYNAMIC_FTRACE |
8 | CFLAGS_REMOVE_ftrace.o = -pg | 9 | CFLAGS_REMOVE_ftrace.o = -pg |
diff --git a/arch/arm/kernel/init_task.c b/arch/arm/kernel/init_task.c index 3f470866bb89..e7cbb50dc356 100644 --- a/arch/arm/kernel/init_task.c +++ b/arch/arm/kernel/init_task.c | |||
@@ -24,9 +24,8 @@ static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | |||
24 | * | 24 | * |
25 | * The things we do for performance.. | 25 | * The things we do for performance.. |
26 | */ | 26 | */ |
27 | union thread_union init_thread_union | 27 | union thread_union init_thread_union __init_task_data = |
28 | __attribute__((__section__(".data.init_task"))) = | 28 | { INIT_THREAD_INFO(init_task) }; |
29 | { INIT_THREAD_INFO(init_task) }; | ||
30 | 29 | ||
31 | /* | 30 | /* |
32 | * Initial task structure. | 31 | * Initial task structure. |
diff --git a/arch/avr32/kernel/init_task.c b/arch/avr32/kernel/init_task.c index 57ec9f2dcd95..6b2343e6fe33 100644 --- a/arch/avr32/kernel/init_task.c +++ b/arch/avr32/kernel/init_task.c | |||
@@ -18,9 +18,8 @@ static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | |||
18 | /* | 18 | /* |
19 | * Initial thread structure. Must be aligned on an 8192-byte boundary. | 19 | * Initial thread structure. Must be aligned on an 8192-byte boundary. |
20 | */ | 20 | */ |
21 | union thread_union init_thread_union | 21 | union thread_union init_thread_union __init_task_data = |
22 | __attribute__((__section__(".data.init_task"))) = | 22 | { INIT_THREAD_INFO(init_task) }; |
23 | { INIT_THREAD_INFO(init_task) }; | ||
24 | 23 | ||
25 | /* | 24 | /* |
26 | * Initial task structure. | 25 | * Initial task structure. |
diff --git a/arch/avr32/mm/init.c b/arch/avr32/mm/init.c index 376f18c4a6cb..94925641e53e 100644 --- a/arch/avr32/mm/init.c +++ b/arch/avr32/mm/init.c | |||
@@ -24,11 +24,9 @@ | |||
24 | #include <asm/setup.h> | 24 | #include <asm/setup.h> |
25 | #include <asm/sections.h> | 25 | #include <asm/sections.h> |
26 | 26 | ||
27 | #define __page_aligned __attribute__((section(".data.page_aligned"))) | ||
28 | |||
29 | DEFINE_PER_CPU(struct mmu_gather, mmu_gathers); | 27 | DEFINE_PER_CPU(struct mmu_gather, mmu_gathers); |
30 | 28 | ||
31 | pgd_t swapper_pg_dir[PTRS_PER_PGD] __page_aligned; | 29 | pgd_t swapper_pg_dir[PTRS_PER_PGD] __page_aligned_data; |
32 | 30 | ||
33 | struct page *empty_zero_page; | 31 | struct page *empty_zero_page; |
34 | EXPORT_SYMBOL(empty_zero_page); | 32 | EXPORT_SYMBOL(empty_zero_page); |
diff --git a/arch/blackfin/Makefile b/arch/blackfin/Makefile index 6f9533c3d752..f063b772934b 100644 --- a/arch/blackfin/Makefile +++ b/arch/blackfin/Makefile | |||
@@ -155,7 +155,7 @@ define archhelp | |||
155 | echo '* vmImage.gz - Kernel-only image for U-Boot (arch/$(ARCH)/boot/vmImage.gz)' | 155 | echo '* vmImage.gz - Kernel-only image for U-Boot (arch/$(ARCH)/boot/vmImage.gz)' |
156 | echo ' vmImage.lzma - Kernel-only image for U-Boot (arch/$(ARCH)/boot/vmImage.lzma)' | 156 | echo ' vmImage.lzma - Kernel-only image for U-Boot (arch/$(ARCH)/boot/vmImage.lzma)' |
157 | echo ' install - Install kernel using' | 157 | echo ' install - Install kernel using' |
158 | echo ' (your) ~/bin/$(CROSS_COMPILE)installkernel or' | 158 | echo ' (your) ~/bin/$(INSTALLKERNEL) or' |
159 | echo ' (distribution) PATH: $(CROSS_COMPILE)installkernel or' | 159 | echo ' (distribution) PATH: $(INSTALLKERNEL) or' |
160 | echo ' install to $$(INSTALL_PATH)' | 160 | echo ' install to $$(INSTALL_PATH)' |
161 | endef | 161 | endef |
diff --git a/arch/blackfin/boot/install.sh b/arch/blackfin/boot/install.sh index 9560a6b29100..e2c6e40902b7 100644 --- a/arch/blackfin/boot/install.sh +++ b/arch/blackfin/boot/install.sh | |||
@@ -36,9 +36,9 @@ verify "$3" | |||
36 | 36 | ||
37 | # User may have a custom install script | 37 | # User may have a custom install script |
38 | 38 | ||
39 | if [ -x ~/bin/${CROSS_COMPILE}installkernel ]; then exec ~/bin/${CROSS_COMPILE}installkernel "$@"; fi | 39 | if [ -x ~/bin/${INSTALLKERNEL} ]; then exec ~/bin/${INSTALLKERNEL} "$@"; fi |
40 | if which ${CROSS_COMPILE}installkernel >/dev/null 2>&1; then | 40 | if which ${INSTALLKERNEL} >/dev/null 2>&1; then |
41 | exec ${CROSS_COMPILE}installkernel "$@" | 41 | exec ${INSTALLKERNEL} "$@" |
42 | fi | 42 | fi |
43 | 43 | ||
44 | # Default install - same as make zlilo | 44 | # Default install - same as make zlilo |
diff --git a/arch/cris/Makefile b/arch/cris/Makefile index 71e17d3eeddb..29c2ceb38a76 100644 --- a/arch/cris/Makefile +++ b/arch/cris/Makefile | |||
@@ -42,8 +42,6 @@ LD = $(CROSS_COMPILE)ld -mcrislinux | |||
42 | 42 | ||
43 | OBJCOPYFLAGS := -O binary -R .note -R .comment -S | 43 | OBJCOPYFLAGS := -O binary -R .note -R .comment -S |
44 | 44 | ||
45 | CPPFLAGS_vmlinux.lds = -DDRAM_VIRTUAL_BASE=0x$(CONFIG_ETRAX_DRAM_VIRTUAL_BASE) | ||
46 | |||
47 | KBUILD_AFLAGS += -mlinux -march=$(arch-y) $(inc) | 45 | KBUILD_AFLAGS += -mlinux -march=$(arch-y) $(inc) |
48 | KBUILD_CFLAGS += -mlinux -march=$(arch-y) -pipe $(inc) | 46 | KBUILD_CFLAGS += -mlinux -march=$(arch-y) -pipe $(inc) |
49 | KBUILD_CPPFLAGS += $(inc) | 47 | KBUILD_CPPFLAGS += $(inc) |
diff --git a/arch/cris/kernel/Makefile b/arch/cris/kernel/Makefile index ee7bcd4d20b2..b45640b3e600 100644 --- a/arch/cris/kernel/Makefile +++ b/arch/cris/kernel/Makefile | |||
@@ -3,6 +3,7 @@ | |||
3 | # Makefile for the linux kernel. | 3 | # Makefile for the linux kernel. |
4 | # | 4 | # |
5 | 5 | ||
6 | CPPFLAGS_vmlinux.lds := -DDRAM_VIRTUAL_BASE=0x$(CONFIG_ETRAX_DRAM_VIRTUAL_BASE) | ||
6 | extra-y := vmlinux.lds | 7 | extra-y := vmlinux.lds |
7 | 8 | ||
8 | obj-y := process.o traps.o irq.o ptrace.o setup.o time.o sys_cris.o | 9 | obj-y := process.o traps.o irq.o ptrace.o setup.o time.o sys_cris.o |
diff --git a/arch/cris/kernel/process.c b/arch/cris/kernel/process.c index 51dcd04d2777..c99aeab7cef7 100644 --- a/arch/cris/kernel/process.c +++ b/arch/cris/kernel/process.c | |||
@@ -45,9 +45,8 @@ static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | |||
45 | * way process stacks are handled. This is done by having a special | 45 | * way process stacks are handled. This is done by having a special |
46 | * "init_task" linker map entry.. | 46 | * "init_task" linker map entry.. |
47 | */ | 47 | */ |
48 | union thread_union init_thread_union | 48 | union thread_union init_thread_union __init_task_data = |
49 | __attribute__((__section__(".data.init_task"))) = | 49 | { INIT_THREAD_INFO(init_task) }; |
50 | { INIT_THREAD_INFO(init_task) }; | ||
51 | 50 | ||
52 | /* | 51 | /* |
53 | * Initial task structure. | 52 | * Initial task structure. |
diff --git a/arch/frv/kernel/init_task.c b/arch/frv/kernel/init_task.c index 1d3df1d9495c..3c3e0b336a9d 100644 --- a/arch/frv/kernel/init_task.c +++ b/arch/frv/kernel/init_task.c | |||
@@ -19,9 +19,8 @@ static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | |||
19 | * way process stacks are handled. This is done by having a special | 19 | * way process stacks are handled. This is done by having a special |
20 | * "init_task" linker map entry.. | 20 | * "init_task" linker map entry.. |
21 | */ | 21 | */ |
22 | union thread_union init_thread_union | 22 | union thread_union init_thread_union __init_task_data = |
23 | __attribute__((__section__(".data.init_task"))) = | 23 | { INIT_THREAD_INFO(init_task) }; |
24 | { INIT_THREAD_INFO(init_task) }; | ||
25 | 24 | ||
26 | /* | 25 | /* |
27 | * Initial task structure. | 26 | * Initial task structure. |
diff --git a/arch/h8300/kernel/init_task.c b/arch/h8300/kernel/init_task.c index 089c65ed6eb3..54c1062ee80e 100644 --- a/arch/h8300/kernel/init_task.c +++ b/arch/h8300/kernel/init_task.c | |||
@@ -31,7 +31,6 @@ EXPORT_SYMBOL(init_task); | |||
31 | * way process stacks are handled. This is done by having a special | 31 | * way process stacks are handled. This is done by having a special |
32 | * "init_task" linker map entry.. | 32 | * "init_task" linker map entry.. |
33 | */ | 33 | */ |
34 | union thread_union init_thread_union | 34 | union thread_union init_thread_union __init_task_data = |
35 | __attribute__((__section__(".data.init_task"))) = | 35 | { INIT_THREAD_INFO(init_task) }; |
36 | { INIT_THREAD_INFO(init_task) }; | ||
37 | 36 | ||
diff --git a/arch/ia64/install.sh b/arch/ia64/install.sh index 929e780026d1..0e932f5dcd1a 100644 --- a/arch/ia64/install.sh +++ b/arch/ia64/install.sh | |||
@@ -21,8 +21,8 @@ | |||
21 | 21 | ||
22 | # User may have a custom install script | 22 | # User may have a custom install script |
23 | 23 | ||
24 | if [ -x ~/bin/installkernel ]; then exec ~/bin/installkernel "$@"; fi | 24 | if [ -x ~/bin/${INSTALLKERNEL} ]; then exec ~/bin/${INSTALLKERNEL} "$@"; fi |
25 | if [ -x /sbin/installkernel ]; then exec /sbin/installkernel "$@"; fi | 25 | if [ -x /sbin/${INSTALLKERNEL} ]; then exec /sbin/${INSTALLKERNEL} "$@"; fi |
26 | 26 | ||
27 | # Default install - same as make zlilo | 27 | # Default install - same as make zlilo |
28 | 28 | ||
diff --git a/arch/ia64/kernel/Makefile.gate b/arch/ia64/kernel/Makefile.gate index 1d87f84069b3..ab9b03a9adcc 100644 --- a/arch/ia64/kernel/Makefile.gate +++ b/arch/ia64/kernel/Makefile.gate | |||
@@ -10,7 +10,7 @@ quiet_cmd_gate = GATE $@ | |||
10 | cmd_gate = $(CC) -nostdlib $(GATECFLAGS_$(@F)) -Wl,-T,$(filter-out FORCE,$^) -o $@ | 10 | cmd_gate = $(CC) -nostdlib $(GATECFLAGS_$(@F)) -Wl,-T,$(filter-out FORCE,$^) -o $@ |
11 | 11 | ||
12 | GATECFLAGS_gate.so = -shared -s -Wl,-soname=linux-gate.so.1 \ | 12 | GATECFLAGS_gate.so = -shared -s -Wl,-soname=linux-gate.so.1 \ |
13 | $(call ld-option, -Wl$(comma)--hash-style=sysv) | 13 | $(call cc-ldoption, -Wl$(comma)--hash-style=sysv) |
14 | $(obj)/gate.so: $(obj)/gate.lds $(obj)/gate.o FORCE | 14 | $(obj)/gate.so: $(obj)/gate.lds $(obj)/gate.o FORCE |
15 | $(call if_changed,gate) | 15 | $(call if_changed,gate) |
16 | 16 | ||
diff --git a/arch/ia64/kernel/init_task.c b/arch/ia64/kernel/init_task.c index c475fc281be7..e253ab8fcbc8 100644 --- a/arch/ia64/kernel/init_task.c +++ b/arch/ia64/kernel/init_task.c | |||
@@ -33,7 +33,8 @@ union { | |||
33 | struct thread_info thread_info; | 33 | struct thread_info thread_info; |
34 | } s; | 34 | } s; |
35 | unsigned long stack[KERNEL_STACK_SIZE/sizeof (unsigned long)]; | 35 | unsigned long stack[KERNEL_STACK_SIZE/sizeof (unsigned long)]; |
36 | } init_task_mem asm ("init_task") __attribute__((section(".data.init_task"))) = {{ | 36 | } init_task_mem asm ("init_task") __init_task_data = |
37 | {{ | ||
37 | .task = INIT_TASK(init_task_mem.s.task), | 38 | .task = INIT_TASK(init_task_mem.s.task), |
38 | .thread_info = INIT_THREAD_INFO(init_task_mem.s.task) | 39 | .thread_info = INIT_THREAD_INFO(init_task_mem.s.task) |
39 | }}; | 40 | }}; |
diff --git a/arch/m32r/boot/compressed/install.sh b/arch/m32r/boot/compressed/install.sh index 6d72e9e72697..16e5a0a13437 100644 --- a/arch/m32r/boot/compressed/install.sh +++ b/arch/m32r/boot/compressed/install.sh | |||
@@ -24,8 +24,8 @@ | |||
24 | 24 | ||
25 | # User may have a custom install script | 25 | # User may have a custom install script |
26 | 26 | ||
27 | if [ -x /sbin/installkernel ]; then | 27 | if [ -x /sbin/${INSTALLKERNEL} ]; then |
28 | exec /sbin/installkernel "$@" | 28 | exec /sbin/${INSTALLKERNEL} "$@" |
29 | fi | 29 | fi |
30 | 30 | ||
31 | if [ "$2" = "zImage" ]; then | 31 | if [ "$2" = "zImage" ]; then |
diff --git a/arch/m32r/kernel/init_task.c b/arch/m32r/kernel/init_task.c index fce57e5d3f91..6c42d5f8df50 100644 --- a/arch/m32r/kernel/init_task.c +++ b/arch/m32r/kernel/init_task.c | |||
@@ -20,9 +20,8 @@ static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | |||
20 | * way process stacks are handled. This is done by having a special | 20 | * way process stacks are handled. This is done by having a special |
21 | * "init_task" linker map entry.. | 21 | * "init_task" linker map entry.. |
22 | */ | 22 | */ |
23 | union thread_union init_thread_union | 23 | union thread_union init_thread_union __init_task_data = |
24 | __attribute__((__section__(".data.init_task"))) = | 24 | { INIT_THREAD_INFO(init_task) }; |
25 | { INIT_THREAD_INFO(init_task) }; | ||
26 | 25 | ||
27 | /* | 26 | /* |
28 | * Initial task structure. | 27 | * Initial task structure. |
diff --git a/arch/m68k/install.sh b/arch/m68k/install.sh index 9c6bae6112e3..57d640d4382c 100644 --- a/arch/m68k/install.sh +++ b/arch/m68k/install.sh | |||
@@ -33,8 +33,8 @@ verify "$3" | |||
33 | 33 | ||
34 | # User may have a custom install script | 34 | # User may have a custom install script |
35 | 35 | ||
36 | if [ -x ~/bin/${CROSS_COMPILE}installkernel ]; then exec ~/bin/${CROSS_COMPILE}installkernel "$@"; fi | 36 | if [ -x ~/bin/${INSTALLKERNEL} ]; then exec ~/bin/${INSTALLKERNEL} "$@"; fi |
37 | if [ -x /sbin/${CROSS_COMPILE}installkernel ]; then exec /sbin/${CROSS_COMPILE}installkernel "$@"; fi | 37 | if [ -x /sbin/${INSTALLKERNEL} ]; then exec /sbin/${INSTALLKERNEL} "$@"; fi |
38 | 38 | ||
39 | # Default install - same as make zlilo | 39 | # Default install - same as make zlilo |
40 | 40 | ||
diff --git a/arch/m68k/kernel/process.c b/arch/m68k/kernel/process.c index 72bad65dba3a..41230c595a8e 100644 --- a/arch/m68k/kernel/process.c +++ b/arch/m68k/kernel/process.c | |||
@@ -42,9 +42,9 @@ | |||
42 | */ | 42 | */ |
43 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | 43 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); |
44 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | 44 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); |
45 | union thread_union init_thread_union | 45 | union thread_union init_thread_union __init_task_data |
46 | __attribute__((section(".data.init_task"), aligned(THREAD_SIZE))) | 46 | __attribute__((aligned(THREAD_SIZE))) = |
47 | = { INIT_THREAD_INFO(init_task) }; | 47 | { INIT_THREAD_INFO(init_task) }; |
48 | 48 | ||
49 | /* initial task structure */ | 49 | /* initial task structure */ |
50 | struct task_struct init_task = INIT_TASK(init_task); | 50 | struct task_struct init_task = INIT_TASK(init_task); |
diff --git a/arch/m68knommu/kernel/init_task.c b/arch/m68knommu/kernel/init_task.c index 45e97a207fed..cbf9dc3cc51d 100644 --- a/arch/m68knommu/kernel/init_task.c +++ b/arch/m68knommu/kernel/init_task.c | |||
@@ -31,7 +31,6 @@ EXPORT_SYMBOL(init_task); | |||
31 | * way process stacks are handled. This is done by having a special | 31 | * way process stacks are handled. This is done by having a special |
32 | * "init_task" linker map entry.. | 32 | * "init_task" linker map entry.. |
33 | */ | 33 | */ |
34 | union thread_union init_thread_union | 34 | union thread_union init_thread_union __init_task_data = |
35 | __attribute__((__section__(".data.init_task"))) = | 35 | { INIT_THREAD_INFO(init_task) }; |
36 | { INIT_THREAD_INFO(init_task) }; | ||
37 | 36 | ||
diff --git a/arch/microblaze/kernel/init_task.c b/arch/microblaze/kernel/init_task.c index 67da22579b62..b5d711f94ff8 100644 --- a/arch/microblaze/kernel/init_task.c +++ b/arch/microblaze/kernel/init_task.c | |||
@@ -19,9 +19,8 @@ | |||
19 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | 19 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); |
20 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | 20 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); |
21 | 21 | ||
22 | union thread_union init_thread_union | 22 | union thread_union init_thread_union __init_task_data = |
23 | __attribute__((__section__(".data.init_task"))) = | 23 | { INIT_THREAD_INFO(init_task) }; |
24 | { INIT_THREAD_INFO(init_task) }; | ||
25 | 24 | ||
26 | struct task_struct init_task = INIT_TASK(init_task); | 25 | struct task_struct init_task = INIT_TASK(init_task); |
27 | EXPORT_SYMBOL(init_task); | 26 | EXPORT_SYMBOL(init_task); |
diff --git a/arch/mips/Makefile b/arch/mips/Makefile index c825b14b4ed0..77f5021218d3 100644 --- a/arch/mips/Makefile +++ b/arch/mips/Makefile | |||
@@ -627,16 +627,6 @@ endif | |||
627 | cflags-y += -I$(srctree)/arch/mips/include/asm/mach-generic | 627 | cflags-y += -I$(srctree)/arch/mips/include/asm/mach-generic |
628 | drivers-$(CONFIG_PCI) += arch/mips/pci/ | 628 | drivers-$(CONFIG_PCI) += arch/mips/pci/ |
629 | 629 | ||
630 | ifdef CONFIG_32BIT | ||
631 | ifdef CONFIG_CPU_LITTLE_ENDIAN | ||
632 | JIFFIES = jiffies_64 | ||
633 | else | ||
634 | JIFFIES = jiffies_64 + 4 | ||
635 | endif | ||
636 | else | ||
637 | JIFFIES = jiffies_64 | ||
638 | endif | ||
639 | |||
640 | # | 630 | # |
641 | # Automatically detect the build format. By default we choose | 631 | # Automatically detect the build format. By default we choose |
642 | # the elf format according to the load address. | 632 | # the elf format according to the load address. |
@@ -660,8 +650,9 @@ ifdef CONFIG_64BIT | |||
660 | endif | 650 | endif |
661 | 651 | ||
662 | KBUILD_AFLAGS += $(cflags-y) | 652 | KBUILD_AFLAGS += $(cflags-y) |
663 | KBUILD_CFLAGS += $(cflags-y) \ | 653 | KBUILD_CFLAGS += $(cflags-y) |
664 | -D"VMLINUX_LOAD_ADDRESS=$(load-y)" | 654 | KBUILD_CPPFLAGS += -D"VMLINUX_LOAD_ADDRESS=$(load-y)" |
655 | KBUILD_CPPFLAGS += -D"DATAOFFSET=$(if $(dataoffset-y),$(dataoffset-y),0)" | ||
665 | 656 | ||
666 | LDFLAGS += -m $(ld-emul) | 657 | LDFLAGS += -m $(ld-emul) |
667 | 658 | ||
@@ -676,18 +667,6 @@ endif | |||
676 | 667 | ||
677 | OBJCOPYFLAGS += --remove-section=.reginfo | 668 | OBJCOPYFLAGS += --remove-section=.reginfo |
678 | 669 | ||
679 | # | ||
680 | # Choosing incompatible machines durings configuration will result in | ||
681 | # error messages during linking. Select a default linkscript if | ||
682 | # none has been choosen above. | ||
683 | # | ||
684 | |||
685 | CPPFLAGS_vmlinux.lds := \ | ||
686 | $(KBUILD_CFLAGS) \ | ||
687 | -D"LOADADDR=$(load-y)" \ | ||
688 | -D"JIFFIES=$(JIFFIES)" \ | ||
689 | -D"DATAOFFSET=$(if $(dataoffset-y),$(dataoffset-y),0)" | ||
690 | |||
691 | head-y := arch/mips/kernel/head.o arch/mips/kernel/init_task.o | 670 | head-y := arch/mips/kernel/head.o arch/mips/kernel/init_task.o |
692 | 671 | ||
693 | libs-y += arch/mips/lib/ | 672 | libs-y += arch/mips/lib/ |
diff --git a/arch/mips/kernel/init_task.c b/arch/mips/kernel/init_task.c index 5b457a40c784..6d6ca5305895 100644 --- a/arch/mips/kernel/init_task.c +++ b/arch/mips/kernel/init_task.c | |||
@@ -21,9 +21,8 @@ static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | |||
21 | * | 21 | * |
22 | * The things we do for performance.. | 22 | * The things we do for performance.. |
23 | */ | 23 | */ |
24 | union thread_union init_thread_union | 24 | union thread_union init_thread_union __init_task_data |
25 | __attribute__((__section__(".data.init_task"), | 25 | __attribute__((__aligned__(THREAD_SIZE))) = |
26 | __aligned__(THREAD_SIZE))) = | ||
27 | { INIT_THREAD_INFO(init_task) }; | 26 | { INIT_THREAD_INFO(init_task) }; |
28 | 27 | ||
29 | /* | 28 | /* |
diff --git a/arch/mips/kernel/vmlinux.lds.S b/arch/mips/kernel/vmlinux.lds.S index 2769bed3d2af..9bf0e3df7c5a 100644 --- a/arch/mips/kernel/vmlinux.lds.S +++ b/arch/mips/kernel/vmlinux.lds.S | |||
@@ -10,7 +10,16 @@ PHDRS { | |||
10 | text PT_LOAD FLAGS(7); /* RWX */ | 10 | text PT_LOAD FLAGS(7); /* RWX */ |
11 | note PT_NOTE FLAGS(4); /* R__ */ | 11 | note PT_NOTE FLAGS(4); /* R__ */ |
12 | } | 12 | } |
13 | jiffies = JIFFIES; | 13 | |
14 | ifdef CONFIG_32BIT | ||
15 | ifdef CONFIG_CPU_LITTLE_ENDIAN | ||
16 | jiffies = jiffies_64; | ||
17 | else | ||
18 | jiffies = jiffies_64 + 4; | ||
19 | endif | ||
20 | else | ||
21 | jiffies = jiffies_64; | ||
22 | endif | ||
14 | 23 | ||
15 | SECTIONS | 24 | SECTIONS |
16 | { | 25 | { |
@@ -29,7 +38,7 @@ SECTIONS | |||
29 | /* . = 0xa800000000300000; */ | 38 | /* . = 0xa800000000300000; */ |
30 | . = 0xffffffff80300000; | 39 | . = 0xffffffff80300000; |
31 | #endif | 40 | #endif |
32 | . = LOADADDR; | 41 | . = VMLINUX_LOAD_ADDRESS; |
33 | /* read-only */ | 42 | /* read-only */ |
34 | _text = .; /* Text and read-only data */ | 43 | _text = .; /* Text and read-only data */ |
35 | .text : { | 44 | .text : { |
diff --git a/arch/mn10300/kernel/init_task.c b/arch/mn10300/kernel/init_task.c index 80d423b80af3..a481b043bea7 100644 --- a/arch/mn10300/kernel/init_task.c +++ b/arch/mn10300/kernel/init_task.c | |||
@@ -27,9 +27,8 @@ static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | |||
27 | * way process stacks are handled. This is done by having a special | 27 | * way process stacks are handled. This is done by having a special |
28 | * "init_task" linker map entry.. | 28 | * "init_task" linker map entry.. |
29 | */ | 29 | */ |
30 | union thread_union init_thread_union | 30 | union thread_union init_thread_union __init_task_data = |
31 | __attribute__((__section__(".data.init_task"))) = | 31 | { INIT_THREAD_INFO(init_task) }; |
32 | { INIT_THREAD_INFO(init_task) }; | ||
33 | 32 | ||
34 | /* | 33 | /* |
35 | * Initial task structure. | 34 | * Initial task structure. |
diff --git a/arch/parisc/Makefile b/arch/parisc/Makefile index da6f66901c92..55cca1dac431 100644 --- a/arch/parisc/Makefile +++ b/arch/parisc/Makefile | |||
@@ -118,8 +118,8 @@ define archhelp | |||
118 | @echo '* vmlinux - Uncompressed kernel image (./vmlinux)' | 118 | @echo '* vmlinux - Uncompressed kernel image (./vmlinux)' |
119 | @echo ' palo - Bootable image (./lifimage)' | 119 | @echo ' palo - Bootable image (./lifimage)' |
120 | @echo ' install - Install kernel using' | 120 | @echo ' install - Install kernel using' |
121 | @echo ' (your) ~/bin/installkernel or' | 121 | @echo ' (your) ~/bin/$(INSTALLKERNEL) or' |
122 | @echo ' (distribution) /sbin/installkernel or' | 122 | @echo ' (distribution) /sbin/$(INSTALLKERNEL) or' |
123 | @echo ' copy to $$(INSTALL_PATH)' | 123 | @echo ' copy to $$(INSTALL_PATH)' |
124 | endef | 124 | endef |
125 | 125 | ||
diff --git a/arch/parisc/install.sh b/arch/parisc/install.sh index 9632b3e164c7..e593fc8d58bc 100644 --- a/arch/parisc/install.sh +++ b/arch/parisc/install.sh | |||
@@ -21,8 +21,8 @@ | |||
21 | 21 | ||
22 | # User may have a custom install script | 22 | # User may have a custom install script |
23 | 23 | ||
24 | if [ -x ~/bin/installkernel ]; then exec ~/bin/installkernel "$@"; fi | 24 | if [ -x ~/bin/${INSTALLKERNEL} ]; then exec ~/bin/${INSTALLKERNEL} "$@"; fi |
25 | if [ -x /sbin/installkernel ]; then exec /sbin/installkernel "$@"; fi | 25 | if [ -x /sbin/${INSTALLKERNEL} ]; then exec /sbin/${INSTALLKERNEL} "$@"; fi |
26 | 26 | ||
27 | # Default install | 27 | # Default install |
28 | 28 | ||
diff --git a/arch/parisc/kernel/init_task.c b/arch/parisc/kernel/init_task.c index 82974b20fc10..d020eae6525c 100644 --- a/arch/parisc/kernel/init_task.c +++ b/arch/parisc/kernel/init_task.c | |||
@@ -43,8 +43,8 @@ static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | |||
43 | * way process stacks are handled. This is done by having a special | 43 | * way process stacks are handled. This is done by having a special |
44 | * "init_task" linker map entry.. | 44 | * "init_task" linker map entry.. |
45 | */ | 45 | */ |
46 | union thread_union init_thread_union | 46 | union thread_union init_thread_union __init_task_data |
47 | __attribute__((aligned(128))) __attribute__((__section__(".data.init_task"))) = | 47 | __attribute__((aligned(128))) = |
48 | { INIT_THREAD_INFO(init_task) }; | 48 | { INIT_THREAD_INFO(init_task) }; |
49 | 49 | ||
50 | #if PT_NLEVELS == 3 | 50 | #if PT_NLEVELS == 3 |
diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile index 952a3963e9e8..aacf629c1a9f 100644 --- a/arch/powerpc/Makefile +++ b/arch/powerpc/Makefile | |||
@@ -158,8 +158,6 @@ drivers-$(CONFIG_OPROFILE) += arch/powerpc/oprofile/ | |||
158 | # Default to zImage, override when needed | 158 | # Default to zImage, override when needed |
159 | all: zImage | 159 | all: zImage |
160 | 160 | ||
161 | CPPFLAGS_vmlinux.lds := -Upowerpc | ||
162 | |||
163 | BOOT_TARGETS = zImage zImage.initrd uImage zImage% dtbImage% treeImage.% cuImage.% simpleImage.% | 161 | BOOT_TARGETS = zImage zImage.initrd uImage zImage% dtbImage% treeImage.% cuImage.% simpleImage.% |
164 | 162 | ||
165 | PHONY += $(BOOT_TARGETS) | 163 | PHONY += $(BOOT_TARGETS) |
@@ -182,8 +180,8 @@ define archhelp | |||
182 | @echo ' simpleImage.<dt> - Firmware independent image.' | 180 | @echo ' simpleImage.<dt> - Firmware independent image.' |
183 | @echo ' treeImage.<dt> - Support for older IBM 4xx firmware (not U-Boot)' | 181 | @echo ' treeImage.<dt> - Support for older IBM 4xx firmware (not U-Boot)' |
184 | @echo ' install - Install kernel using' | 182 | @echo ' install - Install kernel using' |
185 | @echo ' (your) ~/bin/installkernel or' | 183 | @echo ' (your) ~/bin/$(INSTALLKERNEL) or' |
186 | @echo ' (distribution) /sbin/installkernel or' | 184 | @echo ' (distribution) /sbin/$(INSTALLKERNEL) or' |
187 | @echo ' install to $$(INSTALL_PATH) and run lilo' | 185 | @echo ' install to $$(INSTALL_PATH) and run lilo' |
188 | @echo ' *_defconfig - Select default config from arch/$(ARCH)/configs' | 186 | @echo ' *_defconfig - Select default config from arch/$(ARCH)/configs' |
189 | @echo '' | 187 | @echo '' |
diff --git a/arch/powerpc/boot/install.sh b/arch/powerpc/boot/install.sh index 98312d169c85..b6a256bc96ee 100644 --- a/arch/powerpc/boot/install.sh +++ b/arch/powerpc/boot/install.sh | |||
@@ -23,8 +23,8 @@ set -e | |||
23 | 23 | ||
24 | # User may have a custom install script | 24 | # User may have a custom install script |
25 | 25 | ||
26 | if [ -x ~/bin/${CROSS_COMPILE}installkernel ]; then exec ~/bin/${CROSS_COMPILE}installkernel "$@"; fi | 26 | if [ -x ~/bin/${INSTALLKERNEL} ]; then exec ~/bin/${INSTALLKERNEL} "$@"; fi |
27 | if [ -x /sbin/${CROSS_COMPILE}installkernel ]; then exec /sbin/${CROSS_COMPILE}installkernel "$@"; fi | 27 | if [ -x /sbin/${INSTALLKERNEL} ]; then exec /sbin/${INSTALLKERNEL} "$@"; fi |
28 | 28 | ||
29 | # Default install | 29 | # Default install |
30 | 30 | ||
diff --git a/arch/powerpc/kernel/init_task.c b/arch/powerpc/kernel/init_task.c index ffc4253fef55..2375b7eb1c76 100644 --- a/arch/powerpc/kernel/init_task.c +++ b/arch/powerpc/kernel/init_task.c | |||
@@ -16,9 +16,8 @@ static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | |||
16 | * way process stacks are handled. This is done by having a special | 16 | * way process stacks are handled. This is done by having a special |
17 | * "init_task" linker map entry.. | 17 | * "init_task" linker map entry.. |
18 | */ | 18 | */ |
19 | union thread_union init_thread_union | 19 | union thread_union init_thread_union __init_task_data = |
20 | __attribute__((__section__(".data.init_task"))) = | 20 | { INIT_THREAD_INFO(init_task) }; |
21 | { INIT_THREAD_INFO(init_task) }; | ||
22 | 21 | ||
23 | /* | 22 | /* |
24 | * Initial task structure. | 23 | * Initial task structure. |
diff --git a/arch/powerpc/kernel/machine_kexec_64.c b/arch/powerpc/kernel/machine_kexec_64.c index 49e705fcee6d..040bd1de8d99 100644 --- a/arch/powerpc/kernel/machine_kexec_64.c +++ b/arch/powerpc/kernel/machine_kexec_64.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <linux/kexec.h> | 13 | #include <linux/kexec.h> |
14 | #include <linux/smp.h> | 14 | #include <linux/smp.h> |
15 | #include <linux/thread_info.h> | 15 | #include <linux/thread_info.h> |
16 | #include <linux/init_task.h> | ||
16 | #include <linux/errno.h> | 17 | #include <linux/errno.h> |
17 | 18 | ||
18 | #include <asm/page.h> | 19 | #include <asm/page.h> |
@@ -249,8 +250,8 @@ static void kexec_prepare_cpus(void) | |||
249 | * We could use a smaller stack if we don't care about anything using | 250 | * We could use a smaller stack if we don't care about anything using |
250 | * current, but that audit has not been performed. | 251 | * current, but that audit has not been performed. |
251 | */ | 252 | */ |
252 | static union thread_union kexec_stack | 253 | static union thread_union kexec_stack __init_task_data = |
253 | __attribute__((__section__(".data.init_task"))) = { }; | 254 | { }; |
254 | 255 | ||
255 | /* Our assembly helper, in kexec_stub.S */ | 256 | /* Our assembly helper, in kexec_stub.S */ |
256 | extern NORET_TYPE void kexec_sequence(void *newstack, unsigned long start, | 257 | extern NORET_TYPE void kexec_sequence(void *newstack, unsigned long start, |
diff --git a/arch/powerpc/kernel/vdso.c b/arch/powerpc/kernel/vdso.c index a0abce251d0a..3faaf29bdb29 100644 --- a/arch/powerpc/kernel/vdso.c +++ b/arch/powerpc/kernel/vdso.c | |||
@@ -1,3 +1,4 @@ | |||
1 | |||
1 | /* | 2 | /* |
2 | * Copyright (C) 2004 Benjamin Herrenschmidt, IBM Corp. | 3 | * Copyright (C) 2004 Benjamin Herrenschmidt, IBM Corp. |
3 | * <benh@kernel.crashing.org> | 4 | * <benh@kernel.crashing.org> |
@@ -74,7 +75,7 @@ static int vdso_ready; | |||
74 | static union { | 75 | static union { |
75 | struct vdso_data data; | 76 | struct vdso_data data; |
76 | u8 page[PAGE_SIZE]; | 77 | u8 page[PAGE_SIZE]; |
77 | } vdso_data_store __attribute__((__section__(".data.page_aligned"))); | 78 | } vdso_data_store __page_aligned_data; |
78 | struct vdso_data *vdso_data = &vdso_data_store.data; | 79 | struct vdso_data *vdso_data = &vdso_data_store.data; |
79 | 80 | ||
80 | /* Format of the patch table */ | 81 | /* Format of the patch table */ |
diff --git a/arch/powerpc/kernel/vdso32/Makefile b/arch/powerpc/kernel/vdso32/Makefile index b54b81688132..51ead52141bd 100644 --- a/arch/powerpc/kernel/vdso32/Makefile +++ b/arch/powerpc/kernel/vdso32/Makefile | |||
@@ -16,7 +16,7 @@ GCOV_PROFILE := n | |||
16 | 16 | ||
17 | EXTRA_CFLAGS := -shared -fno-common -fno-builtin | 17 | EXTRA_CFLAGS := -shared -fno-common -fno-builtin |
18 | EXTRA_CFLAGS += -nostdlib -Wl,-soname=linux-vdso32.so.1 \ | 18 | EXTRA_CFLAGS += -nostdlib -Wl,-soname=linux-vdso32.so.1 \ |
19 | $(call ld-option, -Wl$(comma)--hash-style=sysv) | 19 | $(call cc-ldoption, -Wl$(comma)--hash-style=sysv) |
20 | EXTRA_AFLAGS := -D__VDSO32__ -s | 20 | EXTRA_AFLAGS := -D__VDSO32__ -s |
21 | 21 | ||
22 | obj-y += vdso32_wrapper.o | 22 | obj-y += vdso32_wrapper.o |
diff --git a/arch/powerpc/kernel/vdso32/vdso32_wrapper.S b/arch/powerpc/kernel/vdso32/vdso32_wrapper.S index 556f0caa5d84..6e8f507ed32b 100644 --- a/arch/powerpc/kernel/vdso32/vdso32_wrapper.S +++ b/arch/powerpc/kernel/vdso32/vdso32_wrapper.S | |||
@@ -1,7 +1,8 @@ | |||
1 | #include <linux/init.h> | 1 | #include <linux/init.h> |
2 | #include <linux/linkage.h> | ||
2 | #include <asm/page.h> | 3 | #include <asm/page.h> |
3 | 4 | ||
4 | .section ".data.page_aligned" | 5 | __PAGE_ALIGNED_DATA |
5 | 6 | ||
6 | .globl vdso32_start, vdso32_end | 7 | .globl vdso32_start, vdso32_end |
7 | .balign PAGE_SIZE | 8 | .balign PAGE_SIZE |
diff --git a/arch/powerpc/kernel/vdso64/Makefile b/arch/powerpc/kernel/vdso64/Makefile index dd0c8e936775..79da65d44a2a 100644 --- a/arch/powerpc/kernel/vdso64/Makefile +++ b/arch/powerpc/kernel/vdso64/Makefile | |||
@@ -11,7 +11,7 @@ GCOV_PROFILE := n | |||
11 | 11 | ||
12 | EXTRA_CFLAGS := -shared -fno-common -fno-builtin | 12 | EXTRA_CFLAGS := -shared -fno-common -fno-builtin |
13 | EXTRA_CFLAGS += -nostdlib -Wl,-soname=linux-vdso64.so.1 \ | 13 | EXTRA_CFLAGS += -nostdlib -Wl,-soname=linux-vdso64.so.1 \ |
14 | $(call ld-option, -Wl$(comma)--hash-style=sysv) | 14 | $(call cc-ldoption, -Wl$(comma)--hash-style=sysv) |
15 | EXTRA_AFLAGS := -D__VDSO64__ -s | 15 | EXTRA_AFLAGS := -D__VDSO64__ -s |
16 | 16 | ||
17 | obj-y += vdso64_wrapper.o | 17 | obj-y += vdso64_wrapper.o |
diff --git a/arch/powerpc/kernel/vdso64/vdso64_wrapper.S b/arch/powerpc/kernel/vdso64/vdso64_wrapper.S index 0529cb9e3b97..b8553d62b792 100644 --- a/arch/powerpc/kernel/vdso64/vdso64_wrapper.S +++ b/arch/powerpc/kernel/vdso64/vdso64_wrapper.S | |||
@@ -1,7 +1,8 @@ | |||
1 | #include <linux/init.h> | 1 | #include <linux/init.h> |
2 | #include <linux/linkage.h> | ||
2 | #include <asm/page.h> | 3 | #include <asm/page.h> |
3 | 4 | ||
4 | .section ".data.page_aligned" | 5 | __PAGE_ALIGNED_DATA |
5 | 6 | ||
6 | .globl vdso64_start, vdso64_end | 7 | .globl vdso64_start, vdso64_end |
7 | .balign PAGE_SIZE | 8 | .balign PAGE_SIZE |
diff --git a/arch/s390/boot/install.sh b/arch/s390/boot/install.sh index d4026f62cb06..aed3069699bd 100644 --- a/arch/s390/boot/install.sh +++ b/arch/s390/boot/install.sh | |||
@@ -21,8 +21,8 @@ | |||
21 | 21 | ||
22 | # User may have a custom install script | 22 | # User may have a custom install script |
23 | 23 | ||
24 | if [ -x ~/bin/${CROSS_COMPILE}installkernel ]; then exec ~/bin/${CROSS_COMPILE}installkernel "$@"; fi | 24 | if [ -x ~/bin/${INSTALLKERNEL} ]; then exec ~/bin/${INSTALLKERNEL} "$@"; fi |
25 | if [ -x /sbin/${CROSS_COMPILE}installkernel ]; then exec /sbin/${CROSS_COMPILE}installkernel "$@"; fi | 25 | if [ -x /sbin/${INSTALLKERNEL} ]; then exec /sbin/${INSTALLKERNEL} "$@"; fi |
26 | 26 | ||
27 | # Default install - same as make zlilo | 27 | # Default install - same as make zlilo |
28 | 28 | ||
diff --git a/arch/s390/kernel/init_task.c b/arch/s390/kernel/init_task.c index fe787f9e5f3f..4d1c9fb0b540 100644 --- a/arch/s390/kernel/init_task.c +++ b/arch/s390/kernel/init_task.c | |||
@@ -25,9 +25,8 @@ static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | |||
25 | * way process stacks are handled. This is done by having a special | 25 | * way process stacks are handled. This is done by having a special |
26 | * "init_task" linker map entry.. | 26 | * "init_task" linker map entry.. |
27 | */ | 27 | */ |
28 | union thread_union init_thread_union | 28 | union thread_union init_thread_union __init_task_data = |
29 | __attribute__((__section__(".data.init_task"))) = | 29 | { INIT_THREAD_INFO(init_task) }; |
30 | { INIT_THREAD_INFO(init_task) }; | ||
31 | 30 | ||
32 | /* | 31 | /* |
33 | * Initial task structure. | 32 | * Initial task structure. |
diff --git a/arch/s390/kernel/vdso.c b/arch/s390/kernel/vdso.c index 45e1708b70fd..45a3e9a7ae21 100644 --- a/arch/s390/kernel/vdso.c +++ b/arch/s390/kernel/vdso.c | |||
@@ -75,7 +75,7 @@ __setup("vdso=", vdso_setup); | |||
75 | static union { | 75 | static union { |
76 | struct vdso_data data; | 76 | struct vdso_data data; |
77 | u8 page[PAGE_SIZE]; | 77 | u8 page[PAGE_SIZE]; |
78 | } vdso_data_store __attribute__((__section__(".data.page_aligned"))); | 78 | } vdso_data_store __page_aligned_data; |
79 | struct vdso_data *vdso_data = &vdso_data_store.data; | 79 | struct vdso_data *vdso_data = &vdso_data_store.data; |
80 | 80 | ||
81 | /* | 81 | /* |
diff --git a/arch/s390/kernel/vdso32/Makefile b/arch/s390/kernel/vdso32/Makefile index ca78ad60ba24..d13e8755a8cc 100644 --- a/arch/s390/kernel/vdso32/Makefile +++ b/arch/s390/kernel/vdso32/Makefile | |||
@@ -13,7 +13,7 @@ KBUILD_AFLAGS_31 += -m31 -s | |||
13 | KBUILD_CFLAGS_31 := $(filter-out -m64,$(KBUILD_CFLAGS)) | 13 | KBUILD_CFLAGS_31 := $(filter-out -m64,$(KBUILD_CFLAGS)) |
14 | KBUILD_CFLAGS_31 += -m31 -fPIC -shared -fno-common -fno-builtin | 14 | KBUILD_CFLAGS_31 += -m31 -fPIC -shared -fno-common -fno-builtin |
15 | KBUILD_CFLAGS_31 += -nostdlib -Wl,-soname=linux-vdso32.so.1 \ | 15 | KBUILD_CFLAGS_31 += -nostdlib -Wl,-soname=linux-vdso32.so.1 \ |
16 | $(call ld-option, -Wl$(comma)--hash-style=sysv) | 16 | $(call cc-ldoption, -Wl$(comma)--hash-style=sysv) |
17 | 17 | ||
18 | $(targets:%=$(obj)/%.dbg): KBUILD_CFLAGS = $(KBUILD_CFLAGS_31) | 18 | $(targets:%=$(obj)/%.dbg): KBUILD_CFLAGS = $(KBUILD_CFLAGS_31) |
19 | $(targets:%=$(obj)/%.dbg): KBUILD_AFLAGS = $(KBUILD_AFLAGS_31) | 19 | $(targets:%=$(obj)/%.dbg): KBUILD_AFLAGS = $(KBUILD_AFLAGS_31) |
diff --git a/arch/s390/kernel/vdso32/vdso32_wrapper.S b/arch/s390/kernel/vdso32/vdso32_wrapper.S index 61639a89e70b..ae42f8ce350b 100644 --- a/arch/s390/kernel/vdso32/vdso32_wrapper.S +++ b/arch/s390/kernel/vdso32/vdso32_wrapper.S | |||
@@ -1,7 +1,8 @@ | |||
1 | #include <linux/init.h> | 1 | #include <linux/init.h> |
2 | #include <linux/linkage.h> | ||
2 | #include <asm/page.h> | 3 | #include <asm/page.h> |
3 | 4 | ||
4 | .section ".data.page_aligned" | 5 | __PAGE_ALIGNED_DATA |
5 | 6 | ||
6 | .globl vdso32_start, vdso32_end | 7 | .globl vdso32_start, vdso32_end |
7 | .balign PAGE_SIZE | 8 | .balign PAGE_SIZE |
diff --git a/arch/s390/kernel/vdso64/Makefile b/arch/s390/kernel/vdso64/Makefile index 6fc8e829258c..449352dda9cd 100644 --- a/arch/s390/kernel/vdso64/Makefile +++ b/arch/s390/kernel/vdso64/Makefile | |||
@@ -13,7 +13,7 @@ KBUILD_AFLAGS_64 += -m64 -s | |||
13 | KBUILD_CFLAGS_64 := $(filter-out -m64,$(KBUILD_CFLAGS)) | 13 | KBUILD_CFLAGS_64 := $(filter-out -m64,$(KBUILD_CFLAGS)) |
14 | KBUILD_CFLAGS_64 += -m64 -fPIC -shared -fno-common -fno-builtin | 14 | KBUILD_CFLAGS_64 += -m64 -fPIC -shared -fno-common -fno-builtin |
15 | KBUILD_CFLAGS_64 += -nostdlib -Wl,-soname=linux-vdso64.so.1 \ | 15 | KBUILD_CFLAGS_64 += -nostdlib -Wl,-soname=linux-vdso64.so.1 \ |
16 | $(call ld-option, -Wl$(comma)--hash-style=sysv) | 16 | $(call cc-ldoption, -Wl$(comma)--hash-style=sysv) |
17 | 17 | ||
18 | $(targets:%=$(obj)/%.dbg): KBUILD_CFLAGS = $(KBUILD_CFLAGS_64) | 18 | $(targets:%=$(obj)/%.dbg): KBUILD_CFLAGS = $(KBUILD_CFLAGS_64) |
19 | $(targets:%=$(obj)/%.dbg): KBUILD_AFLAGS = $(KBUILD_AFLAGS_64) | 19 | $(targets:%=$(obj)/%.dbg): KBUILD_AFLAGS = $(KBUILD_AFLAGS_64) |
diff --git a/arch/s390/kernel/vdso64/vdso64_wrapper.S b/arch/s390/kernel/vdso64/vdso64_wrapper.S index d8e2ac14d564..c245842b516f 100644 --- a/arch/s390/kernel/vdso64/vdso64_wrapper.S +++ b/arch/s390/kernel/vdso64/vdso64_wrapper.S | |||
@@ -1,7 +1,8 @@ | |||
1 | #include <linux/init.h> | 1 | #include <linux/init.h> |
2 | #include <linux/linkage.h> | ||
2 | #include <asm/page.h> | 3 | #include <asm/page.h> |
3 | 4 | ||
4 | .section ".data.page_aligned" | 5 | __PAGE_ALIGNED_DATA |
5 | 6 | ||
6 | .globl vdso64_start, vdso64_end | 7 | .globl vdso64_start, vdso64_end |
7 | .balign PAGE_SIZE | 8 | .balign PAGE_SIZE |
diff --git a/arch/score/kernel/init_task.c b/arch/score/kernel/init_task.c index ff952f6c63fd..baa03ee217d1 100644 --- a/arch/score/kernel/init_task.c +++ b/arch/score/kernel/init_task.c | |||
@@ -34,9 +34,8 @@ static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | |||
34 | * way process stacks are handled. This is done by having a special | 34 | * way process stacks are handled. This is done by having a special |
35 | * "init_task" linker map entry.. | 35 | * "init_task" linker map entry.. |
36 | */ | 36 | */ |
37 | union thread_union init_thread_union | 37 | union thread_union init_thread_union __init_task_data = |
38 | __attribute__((__section__(".data.init_task"), __aligned__(THREAD_SIZE))) = | 38 | { INIT_THREAD_INFO(init_task) }; |
39 | { INIT_THREAD_INFO(init_task) }; | ||
40 | 39 | ||
41 | /* | 40 | /* |
42 | * Initial task structure. | 41 | * Initial task structure. |
diff --git a/arch/sh/boot/compressed/install.sh b/arch/sh/boot/compressed/install.sh index 90589f0fec12..f9f41818b17e 100644 --- a/arch/sh/boot/compressed/install.sh +++ b/arch/sh/boot/compressed/install.sh | |||
@@ -23,8 +23,8 @@ | |||
23 | 23 | ||
24 | # User may have a custom install script | 24 | # User may have a custom install script |
25 | 25 | ||
26 | if [ -x /sbin/installkernel ]; then | 26 | if [ -x /sbin/${INSTALLKERNEL} ]; then |
27 | exec /sbin/installkernel "$@" | 27 | exec /sbin/${INSTALLKERNEL} "$@" |
28 | fi | 28 | fi |
29 | 29 | ||
30 | if [ "$2" = "zImage" ]; then | 30 | if [ "$2" = "zImage" ]; then |
diff --git a/arch/sh/kernel/init_task.c b/arch/sh/kernel/init_task.c index 1719957c0a69..11f2ea556a6b 100644 --- a/arch/sh/kernel/init_task.c +++ b/arch/sh/kernel/init_task.c | |||
@@ -17,9 +17,8 @@ struct pt_regs fake_swapper_regs; | |||
17 | * way process stacks are handled. This is done by having a special | 17 | * way process stacks are handled. This is done by having a special |
18 | * "init_task" linker map entry.. | 18 | * "init_task" linker map entry.. |
19 | */ | 19 | */ |
20 | union thread_union init_thread_union | 20 | union thread_union init_thread_union __init_task_data = |
21 | __attribute__((__section__(".data.init_task"))) = | 21 | { INIT_THREAD_INFO(init_task) }; |
22 | { INIT_THREAD_INFO(init_task) }; | ||
23 | 22 | ||
24 | /* | 23 | /* |
25 | * Initial task structure. | 24 | * Initial task structure. |
diff --git a/arch/sh/kernel/irq.c b/arch/sh/kernel/irq.c index 60f8af4497c7..7cb933ba4957 100644 --- a/arch/sh/kernel/irq.c +++ b/arch/sh/kernel/irq.c | |||
@@ -165,11 +165,9 @@ asmlinkage int do_IRQ(unsigned int irq, struct pt_regs *regs) | |||
165 | } | 165 | } |
166 | 166 | ||
167 | #ifdef CONFIG_IRQSTACKS | 167 | #ifdef CONFIG_IRQSTACKS |
168 | static char softirq_stack[NR_CPUS * THREAD_SIZE] | 168 | static char softirq_stack[NR_CPUS * THREAD_SIZE] __page_aligned_bss; |
169 | __attribute__((__section__(".bss.page_aligned"))); | ||
170 | 169 | ||
171 | static char hardirq_stack[NR_CPUS * THREAD_SIZE] | 170 | static char hardirq_stack[NR_CPUS * THREAD_SIZE] __page_aligned_bss; |
172 | __attribute__((__section__(".bss.page_aligned"))); | ||
173 | 171 | ||
174 | /* | 172 | /* |
175 | * allocate per-cpu stacks for hardirq and for softirq processing | 173 | * allocate per-cpu stacks for hardirq and for softirq processing |
diff --git a/arch/sh/kernel/vsyscall/Makefile b/arch/sh/kernel/vsyscall/Makefile index 4bbce1cfa359..8f0ea5fc835c 100644 --- a/arch/sh/kernel/vsyscall/Makefile +++ b/arch/sh/kernel/vsyscall/Makefile | |||
@@ -15,7 +15,7 @@ quiet_cmd_syscall = SYSCALL $@ | |||
15 | export CPPFLAGS_vsyscall.lds += -P -C -Ush | 15 | export CPPFLAGS_vsyscall.lds += -P -C -Ush |
16 | 16 | ||
17 | vsyscall-flags = -shared -s -Wl,-soname=linux-gate.so.1 \ | 17 | vsyscall-flags = -shared -s -Wl,-soname=linux-gate.so.1 \ |
18 | $(call ld-option, -Wl$(comma)--hash-style=sysv) | 18 | $(call cc-ldoption, -Wl$(comma)--hash-style=sysv) |
19 | 19 | ||
20 | SYSCFLAGS_vsyscall-trapa.so = $(vsyscall-flags) | 20 | SYSCFLAGS_vsyscall-trapa.so = $(vsyscall-flags) |
21 | 21 | ||
diff --git a/arch/sparc/Makefile b/arch/sparc/Makefile index 467221dd5702..dfe272d14465 100644 --- a/arch/sparc/Makefile +++ b/arch/sparc/Makefile | |||
@@ -31,7 +31,6 @@ export BITS := 32 | |||
31 | #KBUILD_CFLAGS += -g -pipe -fcall-used-g5 -fcall-used-g7 | 31 | #KBUILD_CFLAGS += -g -pipe -fcall-used-g5 -fcall-used-g7 |
32 | KBUILD_CFLAGS += -m32 -pipe -mno-fpu -fcall-used-g5 -fcall-used-g7 | 32 | KBUILD_CFLAGS += -m32 -pipe -mno-fpu -fcall-used-g5 -fcall-used-g7 |
33 | KBUILD_AFLAGS += -m32 | 33 | KBUILD_AFLAGS += -m32 |
34 | CPPFLAGS_vmlinux.lds += -m32 | ||
35 | 34 | ||
36 | #LDFLAGS_vmlinux = -N -Ttext 0xf0004000 | 35 | #LDFLAGS_vmlinux = -N -Ttext 0xf0004000 |
37 | # Since 2.5.40, the first stage is left not btfix-ed. | 36 | # Since 2.5.40, the first stage is left not btfix-ed. |
@@ -45,9 +44,6 @@ else | |||
45 | 44 | ||
46 | CHECKFLAGS += -D__sparc__ -D__sparc_v9__ -D__arch64__ -m64 | 45 | CHECKFLAGS += -D__sparc__ -D__sparc_v9__ -D__arch64__ -m64 |
47 | 46 | ||
48 | # Undefine sparc when processing vmlinux.lds - it is used | ||
49 | # And teach CPP we are doing 64 bit builds (for this case) | ||
50 | CPPFLAGS_vmlinux.lds += -m64 -Usparc | ||
51 | LDFLAGS := -m elf64_sparc | 47 | LDFLAGS := -m elf64_sparc |
52 | export BITS := 64 | 48 | export BITS := 64 |
53 | 49 | ||
diff --git a/arch/sparc/kernel/Makefile b/arch/sparc/kernel/Makefile index 3a048fad7ee2..5b47fab9966e 100644 --- a/arch/sparc/kernel/Makefile +++ b/arch/sparc/kernel/Makefile | |||
@@ -7,7 +7,11 @@ ccflags-y := -Werror | |||
7 | 7 | ||
8 | extra-y := head_$(BITS).o | 8 | extra-y := head_$(BITS).o |
9 | extra-y += init_task.o | 9 | extra-y += init_task.o |
10 | extra-y += vmlinux.lds | 10 | |
11 | # Undefine sparc when processing vmlinux.lds - it is used | ||
12 | # And teach CPP we are doing $(BITS) builds (for this case) | ||
13 | CPPFLAGS_vmlinux.lds := -Usparc -m$(BITS) | ||
14 | extra-y += vmlinux.lds | ||
11 | 15 | ||
12 | obj-$(CONFIG_SPARC32) += entry.o wof.o wuf.o | 16 | obj-$(CONFIG_SPARC32) += entry.o wof.o wuf.o |
13 | obj-$(CONFIG_SPARC32) += etrap_32.o | 17 | obj-$(CONFIG_SPARC32) += etrap_32.o |
diff --git a/arch/sparc/kernel/init_task.c b/arch/sparc/kernel/init_task.c index 28125c5b3d3c..5fe3d65581f7 100644 --- a/arch/sparc/kernel/init_task.c +++ b/arch/sparc/kernel/init_task.c | |||
@@ -18,6 +18,5 @@ EXPORT_SYMBOL(init_task); | |||
18 | * If this is not aligned on a 8k boundry, then you should change code | 18 | * If this is not aligned on a 8k boundry, then you should change code |
19 | * in etrap.S which assumes it. | 19 | * in etrap.S which assumes it. |
20 | */ | 20 | */ |
21 | union thread_union init_thread_union | 21 | union thread_union init_thread_union __init_task_data = |
22 | __attribute__((section (".data.init_task"))) | 22 | { INIT_THREAD_INFO(init_task) }; |
23 | = { INIT_THREAD_INFO(init_task) }; | ||
diff --git a/arch/um/Makefile b/arch/um/Makefile index 0728def32234..fc633dbacf84 100644 --- a/arch/um/Makefile +++ b/arch/um/Makefile | |||
@@ -96,11 +96,10 @@ CFLAGS_NO_HARDENING := $(call cc-option, -fno-PIC,) $(call cc-option, -fno-pic,) | |||
96 | $(call cc-option, -fno-stack-protector,) \ | 96 | $(call cc-option, -fno-stack-protector,) \ |
97 | $(call cc-option, -fno-stack-protector-all,) | 97 | $(call cc-option, -fno-stack-protector-all,) |
98 | 98 | ||
99 | CONFIG_KERNEL_STACK_ORDER ?= 2 | 99 | # Options used by linker script |
100 | STACK_SIZE := $(shell echo $$[ 4096 * (1 << $(CONFIG_KERNEL_STACK_ORDER)) ] ) | 100 | export LDS_START := $(START) |
101 | 101 | export LDS_ELF_ARCH := $(ELF_ARCH) | |
102 | CPPFLAGS_vmlinux.lds = -U$(SUBARCH) -DSTART=$(START) -DELF_ARCH=$(ELF_ARCH) \ | 102 | export LDS_ELF_FORMAT := $(ELF_FORMAT) |
103 | -DELF_FORMAT="$(ELF_FORMAT)" -DKERNEL_STACK_SIZE=$(STACK_SIZE) | ||
104 | 103 | ||
105 | # The wrappers will select whether using "malloc" or the kernel allocator. | 104 | # The wrappers will select whether using "malloc" or the kernel allocator. |
106 | LINK_WRAPS = -Wl,--wrap,malloc -Wl,--wrap,free -Wl,--wrap,calloc | 105 | LINK_WRAPS = -Wl,--wrap,malloc -Wl,--wrap,free -Wl,--wrap,calloc |
diff --git a/arch/um/kernel/Makefile b/arch/um/kernel/Makefile index 388ec0a3ea9b..1119233597a1 100644 --- a/arch/um/kernel/Makefile +++ b/arch/um/kernel/Makefile | |||
@@ -3,6 +3,9 @@ | |||
3 | # Licensed under the GPL | 3 | # Licensed under the GPL |
4 | # | 4 | # |
5 | 5 | ||
6 | CPPFLAGS_vmlinux.lds := -U$(SUBARCH) -DSTART=$(LDS_START) \ | ||
7 | -DELF_ARCH=$(LDS_ELF_ARCH) \ | ||
8 | -DELF_FORMAT=$(LDS_ELF_FORMAT) | ||
6 | extra-y := vmlinux.lds | 9 | extra-y := vmlinux.lds |
7 | clean-files := | 10 | clean-files := |
8 | 11 | ||
diff --git a/arch/um/kernel/init_task.c b/arch/um/kernel/init_task.c index b25121b537d8..8aa77b61a5ff 100644 --- a/arch/um/kernel/init_task.c +++ b/arch/um/kernel/init_task.c | |||
@@ -30,9 +30,8 @@ EXPORT_SYMBOL(init_task); | |||
30 | * "init_task" linker map entry.. | 30 | * "init_task" linker map entry.. |
31 | */ | 31 | */ |
32 | 32 | ||
33 | union thread_union init_thread_union | 33 | union thread_union init_thread_union __init_task_data = |
34 | __attribute__((__section__(".data.init_task"))) = | 34 | { INIT_THREAD_INFO(init_task) }; |
35 | { INIT_THREAD_INFO(init_task) }; | ||
36 | 35 | ||
37 | union thread_union cpu0_irqstack | 36 | union thread_union cpu0_irqstack |
38 | __attribute__((__section__(".data.init_irqstack"))) = | 37 | __attribute__((__section__(".data.init_irqstack"))) = |
diff --git a/arch/um/kernel/vmlinux.lds.S b/arch/um/kernel/vmlinux.lds.S index f8aeb448aab6..16e49bfa2b42 100644 --- a/arch/um/kernel/vmlinux.lds.S +++ b/arch/um/kernel/vmlinux.lds.S | |||
@@ -1,3 +1,6 @@ | |||
1 | |||
2 | KERNEL_STACK_SIZE = 4096 * (1 << CONFIG_KERNEL_STACK_ORDER); | ||
3 | |||
1 | #ifdef CONFIG_LD_SCRIPT_STATIC | 4 | #ifdef CONFIG_LD_SCRIPT_STATIC |
2 | #include "uml.lds.S" | 5 | #include "uml.lds.S" |
3 | #else | 6 | #else |
diff --git a/arch/x86/Makefile b/arch/x86/Makefile index 7983c420eaf2..a012ee8ef803 100644 --- a/arch/x86/Makefile +++ b/arch/x86/Makefile | |||
@@ -179,8 +179,8 @@ archclean: | |||
179 | define archhelp | 179 | define archhelp |
180 | echo '* bzImage - Compressed kernel image (arch/x86/boot/bzImage)' | 180 | echo '* bzImage - Compressed kernel image (arch/x86/boot/bzImage)' |
181 | echo ' install - Install kernel using' | 181 | echo ' install - Install kernel using' |
182 | echo ' (your) ~/bin/installkernel or' | 182 | echo ' (your) ~/bin/$(INSTALLKERNEL) or' |
183 | echo ' (distribution) /sbin/installkernel or' | 183 | echo ' (distribution) /sbin/$(INSTALLKERNEL) or' |
184 | echo ' install to $$(INSTALL_PATH) and run lilo' | 184 | echo ' install to $$(INSTALL_PATH) and run lilo' |
185 | echo ' fdimage - Create 1.4MB boot floppy image (arch/x86/boot/fdimage)' | 185 | echo ' fdimage - Create 1.4MB boot floppy image (arch/x86/boot/fdimage)' |
186 | echo ' fdimage144 - Create 1.4MB boot floppy image (arch/x86/boot/fdimage)' | 186 | echo ' fdimage144 - Create 1.4MB boot floppy image (arch/x86/boot/fdimage)' |
diff --git a/arch/x86/boot/install.sh b/arch/x86/boot/install.sh index 8d60ee15dfd9..d13ec1c38640 100644 --- a/arch/x86/boot/install.sh +++ b/arch/x86/boot/install.sh | |||
@@ -33,8 +33,8 @@ verify "$3" | |||
33 | 33 | ||
34 | # User may have a custom install script | 34 | # User may have a custom install script |
35 | 35 | ||
36 | if [ -x ~/bin/${CROSS_COMPILE}installkernel ]; then exec ~/bin/${CROSS_COMPILE}installkernel "$@"; fi | 36 | if [ -x ~/bin/${INSTALLKERNEL} ]; then exec ~/bin/${INSTALLKERNEL} "$@"; fi |
37 | if [ -x /sbin/${CROSS_COMPILE}installkernel ]; then exec /sbin/${CROSS_COMPILE}installkernel "$@"; fi | 37 | if [ -x /sbin/${INSTALLKERNEL} ]; then exec /sbin/${INSTALLKERNEL} "$@"; fi |
38 | 38 | ||
39 | # Default install - same as make zlilo | 39 | # Default install - same as make zlilo |
40 | 40 | ||
diff --git a/arch/x86/include/asm/cache.h b/arch/x86/include/asm/cache.h index 5d367caa0e36..549860d3be8f 100644 --- a/arch/x86/include/asm/cache.h +++ b/arch/x86/include/asm/cache.h | |||
@@ -1,6 +1,8 @@ | |||
1 | #ifndef _ASM_X86_CACHE_H | 1 | #ifndef _ASM_X86_CACHE_H |
2 | #define _ASM_X86_CACHE_H | 2 | #define _ASM_X86_CACHE_H |
3 | 3 | ||
4 | #include <linux/linkage.h> | ||
5 | |||
4 | /* L1 cache line size */ | 6 | /* L1 cache line size */ |
5 | #define L1_CACHE_SHIFT (CONFIG_X86_L1_CACHE_SHIFT) | 7 | #define L1_CACHE_SHIFT (CONFIG_X86_L1_CACHE_SHIFT) |
6 | #define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT) | 8 | #define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT) |
@@ -13,7 +15,7 @@ | |||
13 | #ifdef CONFIG_SMP | 15 | #ifdef CONFIG_SMP |
14 | #define __cacheline_aligned_in_smp \ | 16 | #define __cacheline_aligned_in_smp \ |
15 | __attribute__((__aligned__(1 << (INTERNODE_CACHE_SHIFT)))) \ | 17 | __attribute__((__aligned__(1 << (INTERNODE_CACHE_SHIFT)))) \ |
16 | __attribute__((__section__(".data.page_aligned"))) | 18 | __page_aligned_data |
17 | #endif | 19 | #endif |
18 | #endif | 20 | #endif |
19 | 21 | ||
diff --git a/arch/x86/kernel/head_32.S b/arch/x86/kernel/head_32.S index b766e8c7252d..218aad7ee76e 100644 --- a/arch/x86/kernel/head_32.S +++ b/arch/x86/kernel/head_32.S | |||
@@ -608,7 +608,7 @@ ENTRY(initial_code) | |||
608 | /* | 608 | /* |
609 | * BSS section | 609 | * BSS section |
610 | */ | 610 | */ |
611 | .section ".bss.page_aligned","wa" | 611 | __PAGE_ALIGNED_BSS |
612 | .align PAGE_SIZE_asm | 612 | .align PAGE_SIZE_asm |
613 | #ifdef CONFIG_X86_PAE | 613 | #ifdef CONFIG_X86_PAE |
614 | swapper_pg_pmd: | 614 | swapper_pg_pmd: |
@@ -626,7 +626,7 @@ ENTRY(empty_zero_page) | |||
626 | * This starts the data section. | 626 | * This starts the data section. |
627 | */ | 627 | */ |
628 | #ifdef CONFIG_X86_PAE | 628 | #ifdef CONFIG_X86_PAE |
629 | .section ".data.page_aligned","wa" | 629 | __PAGE_ALIGNED_DATA |
630 | /* Page-aligned for the benefit of paravirt? */ | 630 | /* Page-aligned for the benefit of paravirt? */ |
631 | .align PAGE_SIZE_asm | 631 | .align PAGE_SIZE_asm |
632 | ENTRY(swapper_pg_dir) | 632 | ENTRY(swapper_pg_dir) |
diff --git a/arch/x86/kernel/head_64.S b/arch/x86/kernel/head_64.S index fa54f78e2a05..d0bc0a13a437 100644 --- a/arch/x86/kernel/head_64.S +++ b/arch/x86/kernel/head_64.S | |||
@@ -418,7 +418,7 @@ ENTRY(phys_base) | |||
418 | ENTRY(idt_table) | 418 | ENTRY(idt_table) |
419 | .skip IDT_ENTRIES * 16 | 419 | .skip IDT_ENTRIES * 16 |
420 | 420 | ||
421 | .section .bss.page_aligned, "aw", @nobits | 421 | __PAGE_ALIGNED_BSS |
422 | .align PAGE_SIZE | 422 | .align PAGE_SIZE |
423 | ENTRY(empty_zero_page) | 423 | ENTRY(empty_zero_page) |
424 | .skip PAGE_SIZE | 424 | .skip PAGE_SIZE |
diff --git a/arch/x86/kernel/init_task.c b/arch/x86/kernel/init_task.c index 270ff83efc11..3a54dcb9cd0e 100644 --- a/arch/x86/kernel/init_task.c +++ b/arch/x86/kernel/init_task.c | |||
@@ -20,9 +20,8 @@ static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | |||
20 | * way process stacks are handled. This is done by having a special | 20 | * way process stacks are handled. This is done by having a special |
21 | * "init_task" linker map entry.. | 21 | * "init_task" linker map entry.. |
22 | */ | 22 | */ |
23 | union thread_union init_thread_union | 23 | union thread_union init_thread_union __init_task_data = |
24 | __attribute__((__section__(".data.init_task"))) = | 24 | { INIT_THREAD_INFO(init_task) }; |
25 | { INIT_THREAD_INFO(init_task) }; | ||
26 | 25 | ||
27 | /* | 26 | /* |
28 | * Initial task structure. | 27 | * Initial task structure. |
diff --git a/arch/x86/vdso/Makefile b/arch/x86/vdso/Makefile index 88112b49f02c..6b4ffedb93c9 100644 --- a/arch/x86/vdso/Makefile +++ b/arch/x86/vdso/Makefile | |||
@@ -122,7 +122,7 @@ quiet_cmd_vdso = VDSO $@ | |||
122 | $(VDSO_LDFLAGS) $(VDSO_LDFLAGS_$(filter %.lds,$(^F))) \ | 122 | $(VDSO_LDFLAGS) $(VDSO_LDFLAGS_$(filter %.lds,$(^F))) \ |
123 | -Wl,-T,$(filter %.lds,$^) $(filter %.o,$^) | 123 | -Wl,-T,$(filter %.lds,$^) $(filter %.o,$^) |
124 | 124 | ||
125 | VDSO_LDFLAGS = -fPIC -shared $(call ld-option, -Wl$(comma)--hash-style=sysv) | 125 | VDSO_LDFLAGS = -fPIC -shared $(call cc-ldoption, -Wl$(comma)--hash-style=sysv) |
126 | GCOV_PROFILE := n | 126 | GCOV_PROFILE := n |
127 | 127 | ||
128 | # | 128 | # |
diff --git a/arch/xtensa/kernel/Makefile b/arch/xtensa/kernel/Makefile index fe3186de6a33..6f56d95f2c1e 100644 --- a/arch/xtensa/kernel/Makefile +++ b/arch/xtensa/kernel/Makefile | |||
@@ -27,7 +27,8 @@ sed-y = -e 's/(\(\.[a-z]*it\|\.ref\|\)\.text)/(\1.literal \1.text)/g' \ | |||
27 | -e 's/(\(\.text\.[a-z]*\))/(\1.literal \1)/g' | 27 | -e 's/(\(\.text\.[a-z]*\))/(\1.literal \1)/g' |
28 | 28 | ||
29 | quiet_cmd__cpp_lds_S = LDS $@ | 29 | quiet_cmd__cpp_lds_S = LDS $@ |
30 | cmd__cpp_lds_S = $(CPP) $(cpp_flags) -D__ASSEMBLY__ $< | sed $(sed-y) >$@ | 30 | cmd__cpp_lds_S = $(CPP) $(cpp_flags) -P -C -Uxtensa -D__ASSEMBLY__ $< \ |
31 | | sed $(sed-y) >$@ | ||
31 | 32 | ||
32 | $(obj)/vmlinux.lds: $(src)/vmlinux.lds.S FORCE | 33 | $(obj)/vmlinux.lds: $(src)/vmlinux.lds.S FORCE |
33 | $(call if_changed_dep,_cpp_lds_S) | 34 | $(call if_changed_dep,_cpp_lds_S) |
diff --git a/arch/xtensa/kernel/head.S b/arch/xtensa/kernel/head.S index d9ddc1ba761c..d215adcfd4ea 100644 --- a/arch/xtensa/kernel/head.S +++ b/arch/xtensa/kernel/head.S | |||
@@ -235,7 +235,7 @@ should_never_return: | |||
235 | * BSS section | 235 | * BSS section |
236 | */ | 236 | */ |
237 | 237 | ||
238 | .section ".bss.page_aligned", "w" | 238 | __PAGE_ALIGNED_BSS |
239 | #ifdef CONFIG_MMU | 239 | #ifdef CONFIG_MMU |
240 | ENTRY(swapper_pg_dir) | 240 | ENTRY(swapper_pg_dir) |
241 | .fill PAGE_SIZE, 1, 0 | 241 | .fill PAGE_SIZE, 1, 0 |
diff --git a/arch/xtensa/kernel/init_task.c b/arch/xtensa/kernel/init_task.c index c4302f0e4ba0..cd122fb7e48a 100644 --- a/arch/xtensa/kernel/init_task.c +++ b/arch/xtensa/kernel/init_task.c | |||
@@ -23,9 +23,8 @@ | |||
23 | 23 | ||
24 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | 24 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); |
25 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | 25 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); |
26 | union thread_union init_thread_union | 26 | union thread_union init_thread_union __init_task_data = |
27 | __attribute__((__section__(".data.init_task"))) = | 27 | { INIT_THREAD_INFO(init_task) }; |
28 | { INIT_THREAD_INFO(init_task) }; | ||
29 | 28 | ||
30 | struct task_struct init_task = INIT_TASK(init_task); | 29 | struct task_struct init_task = INIT_TASK(init_task); |
31 | 30 | ||
diff --git a/include/linux/linkage.h b/include/linux/linkage.h index 691f59171c6c..5126cceb6ae9 100644 --- a/include/linux/linkage.h +++ b/include/linux/linkage.h | |||
@@ -57,6 +57,7 @@ | |||
57 | 57 | ||
58 | #ifdef __ASSEMBLY__ | 58 | #ifdef __ASSEMBLY__ |
59 | 59 | ||
60 | #ifndef LINKER_SCRIPT | ||
60 | #define ALIGN __ALIGN | 61 | #define ALIGN __ALIGN |
61 | #define ALIGN_STR __ALIGN_STR | 62 | #define ALIGN_STR __ALIGN_STR |
62 | 63 | ||
@@ -66,6 +67,7 @@ | |||
66 | ALIGN; \ | 67 | ALIGN; \ |
67 | name: | 68 | name: |
68 | #endif | 69 | #endif |
70 | #endif /* LINKER_SCRIPT */ | ||
69 | 71 | ||
70 | #ifndef WEAK | 72 | #ifndef WEAK |
71 | #define WEAK(name) \ | 73 | #define WEAK(name) \ |
diff --git a/init/Kconfig b/init/Kconfig index 0aa6579504cc..c7bac39d6c61 100644 --- a/init/Kconfig +++ b/init/Kconfig | |||
@@ -1006,14 +1006,6 @@ config SLUB_DEBUG | |||
1006 | SLUB sysfs support. /sys/slab will not exist and there will be | 1006 | SLUB sysfs support. /sys/slab will not exist and there will be |
1007 | no support for cache validation etc. | 1007 | no support for cache validation etc. |
1008 | 1008 | ||
1009 | config STRIP_ASM_SYMS | ||
1010 | bool "Strip assembler-generated symbols during link" | ||
1011 | default n | ||
1012 | help | ||
1013 | Strip internal assembler-generated symbols during a link (symbols | ||
1014 | that look like '.Lxxx') so they don't pollute the output of | ||
1015 | get_wchan() and suchlike. | ||
1016 | |||
1017 | config COMPAT_BRK | 1009 | config COMPAT_BRK |
1018 | bool "Disable heap randomization" | 1010 | bool "Disable heap randomization" |
1019 | default y | 1011 | default y |
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug index d57b12f59c8c..891155817bc6 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug | |||
@@ -50,6 +50,14 @@ config MAGIC_SYSRQ | |||
50 | keys are documented in <file:Documentation/sysrq.txt>. Don't say Y | 50 | keys are documented in <file:Documentation/sysrq.txt>. Don't say Y |
51 | unless you really know what this hack does. | 51 | unless you really know what this hack does. |
52 | 52 | ||
53 | config STRIP_ASM_SYMS | ||
54 | bool "Strip assembler-generated symbols during link" | ||
55 | default n | ||
56 | help | ||
57 | Strip internal assembler-generated symbols during a link (symbols | ||
58 | that look like '.Lxxx') so they don't pollute the output of | ||
59 | get_wchan() and suchlike. | ||
60 | |||
53 | config UNUSED_SYMBOLS | 61 | config UNUSED_SYMBOLS |
54 | bool "Enable unused/obsolete exported symbols" | 62 | bool "Enable unused/obsolete exported symbols" |
55 | default y if X86 | 63 | default y if X86 |
diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include index c29be8f90248..4f9c1908593b 100644 --- a/scripts/Kbuild.include +++ b/scripts/Kbuild.include | |||
@@ -83,11 +83,12 @@ TMPOUT := $(if $(KBUILD_EXTMOD),$(firstword $(KBUILD_EXTMOD))/) | |||
83 | # is automatically cleaned up. | 83 | # is automatically cleaned up. |
84 | try-run = $(shell set -e; \ | 84 | try-run = $(shell set -e; \ |
85 | TMP="$(TMPOUT).$$$$.tmp"; \ | 85 | TMP="$(TMPOUT).$$$$.tmp"; \ |
86 | TMPO="$(TMPOUT).$$$$.o"; \ | ||
86 | if ($(1)) >/dev/null 2>&1; \ | 87 | if ($(1)) >/dev/null 2>&1; \ |
87 | then echo "$(2)"; \ | 88 | then echo "$(2)"; \ |
88 | else echo "$(3)"; \ | 89 | else echo "$(3)"; \ |
89 | fi; \ | 90 | fi; \ |
90 | rm -f "$$TMP") | 91 | rm -f "$$TMP" "$$TMPO") |
91 | 92 | ||
92 | # as-option | 93 | # as-option |
93 | # Usage: cflags-y += $(call as-option,-Wa$(comma)-isa=foo,) | 94 | # Usage: cflags-y += $(call as-option,-Wa$(comma)-isa=foo,) |
@@ -105,12 +106,12 @@ as-instr = $(call try-run,\ | |||
105 | # Usage: cflags-y += $(call cc-option,-march=winchip-c6,-march=i586) | 106 | # Usage: cflags-y += $(call cc-option,-march=winchip-c6,-march=i586) |
106 | 107 | ||
107 | cc-option = $(call try-run,\ | 108 | cc-option = $(call try-run,\ |
108 | $(CC) $(KBUILD_CFLAGS) $(1) -c -xc /dev/null -o "$$TMP",$(1),$(2)) | 109 | $(CC) $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) $(1) -c -xc /dev/null -o "$$TMP",$(1),$(2)) |
109 | 110 | ||
110 | # cc-option-yn | 111 | # cc-option-yn |
111 | # Usage: flag := $(call cc-option-yn,-march=winchip-c6) | 112 | # Usage: flag := $(call cc-option-yn,-march=winchip-c6) |
112 | cc-option-yn = $(call try-run,\ | 113 | cc-option-yn = $(call try-run,\ |
113 | $(CC) $(KBUILD_CFLAGS) $(1) -c -xc /dev/null -o "$$TMP",y,n) | 114 | $(CC) $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) $(1) -c -xc /dev/null -o "$$TMP",y,n) |
114 | 115 | ||
115 | # cc-option-align | 116 | # cc-option-align |
116 | # Prefix align with either -falign or -malign | 117 | # Prefix align with either -falign or -malign |
@@ -130,10 +131,15 @@ cc-fullversion = $(shell $(CONFIG_SHELL) \ | |||
130 | # Usage: EXTRA_CFLAGS += $(call cc-ifversion, -lt, 0402, -O1) | 131 | # Usage: EXTRA_CFLAGS += $(call cc-ifversion, -lt, 0402, -O1) |
131 | cc-ifversion = $(shell [ $(call cc-version, $(CC)) $(1) $(2) ] && echo $(3)) | 132 | cc-ifversion = $(shell [ $(call cc-version, $(CC)) $(1) $(2) ] && echo $(3)) |
132 | 133 | ||
134 | # cc-ldoption | ||
135 | # Usage: ldflags += $(call cc-ldoption, -Wl$(comma)--hash-style=both) | ||
136 | cc-ldoption = $(call try-run,\ | ||
137 | $(CC) $(1) -nostdlib -xc /dev/null -o "$$TMP",$(1),$(2)) | ||
138 | |||
133 | # ld-option | 139 | # ld-option |
134 | # Usage: ldflags += $(call ld-option, -Wl$(comma)--hash-style=both) | 140 | # Usage: LDFLAGS += $(call ld-option, -X) |
135 | ld-option = $(call try-run,\ | 141 | ld-option = $(call try-run,\ |
136 | $(CC) $(1) -nostdlib -xc /dev/null -o "$$TMP",$(1),$(2)) | 142 | $(CC) /dev/null -c -o "$$TMPO" ; $(LD) $(1) "$$TMPO" -o "$$TMP",$(1),$(2)) |
137 | 143 | ||
138 | ###### | 144 | ###### |
139 | 145 | ||
diff --git a/scripts/Makefile.build b/scripts/Makefile.build index 5c4b7a400c18..341b58902ffc 100644 --- a/scripts/Makefile.build +++ b/scripts/Makefile.build | |||
@@ -206,7 +206,7 @@ cmd_modversions = \ | |||
206 | endif | 206 | endif |
207 | 207 | ||
208 | ifdef CONFIG_FTRACE_MCOUNT_RECORD | 208 | ifdef CONFIG_FTRACE_MCOUNT_RECORD |
209 | cmd_record_mcount = perl $(srctree)/scripts/recordmcount.pl "$(ARCH)" \ | 209 | cmd_record_mcount = set -e ; perl $(srctree)/scripts/recordmcount.pl "$(ARCH)" \ |
210 | "$(if $(CONFIG_64BIT),64,32)" \ | 210 | "$(if $(CONFIG_64BIT),64,32)" \ |
211 | "$(OBJDUMP)" "$(OBJCOPY)" "$(CC)" "$(LD)" "$(NM)" "$(RM)" "$(MV)" \ | 211 | "$(OBJDUMP)" "$(OBJCOPY)" "$(CC)" "$(LD)" "$(NM)" "$(RM)" "$(MV)" \ |
212 | "$(if $(part-of-module),1,0)" "$(@)"; | 212 | "$(if $(part-of-module),1,0)" "$(@)"; |
@@ -216,6 +216,7 @@ define rule_cc_o_c | |||
216 | $(call echo-cmd,checksrc) $(cmd_checksrc) \ | 216 | $(call echo-cmd,checksrc) $(cmd_checksrc) \ |
217 | $(call echo-cmd,cc_o_c) $(cmd_cc_o_c); \ | 217 | $(call echo-cmd,cc_o_c) $(cmd_cc_o_c); \ |
218 | $(cmd_modversions) \ | 218 | $(cmd_modversions) \ |
219 | $(call echo-cmd,record_mcount) \ | ||
219 | $(cmd_record_mcount) \ | 220 | $(cmd_record_mcount) \ |
220 | scripts/basic/fixdep $(depfile) $@ '$(call make-cmd,cc_o_c)' > \ | 221 | scripts/basic/fixdep $(depfile) $@ '$(call make-cmd,cc_o_c)' > \ |
221 | $(dot-target).tmp; \ | 222 | $(dot-target).tmp; \ |
@@ -269,7 +270,8 @@ targets += $(extra-y) $(MAKECMDGOALS) $(always) | |||
269 | # Linker scripts preprocessor (.lds.S -> .lds) | 270 | # Linker scripts preprocessor (.lds.S -> .lds) |
270 | # --------------------------------------------------------------------------- | 271 | # --------------------------------------------------------------------------- |
271 | quiet_cmd_cpp_lds_S = LDS $@ | 272 | quiet_cmd_cpp_lds_S = LDS $@ |
272 | cmd_cpp_lds_S = $(CPP) $(cpp_flags) -D__ASSEMBLY__ -o $@ $< | 273 | cmd_cpp_lds_S = $(CPP) $(cpp_flags) -P -C -U$(ARCH) \ |
274 | -D__ASSEMBLY__ -DLINKER_SCRIPT -o $@ $< | ||
273 | 275 | ||
274 | $(obj)/%.lds: $(src)/%.lds.S FORCE | 276 | $(obj)/%.lds: $(src)/%.lds.S FORCE |
275 | $(call if_changed_dep,cpp_lds_S) | 277 | $(call if_changed_dep,cpp_lds_S) |
diff --git a/scripts/basic/docproc.c b/scripts/basic/docproc.c index 99ca7a698687..79ab973fb43a 100644 --- a/scripts/basic/docproc.c +++ b/scripts/basic/docproc.c | |||
@@ -71,7 +71,7 @@ FILELINE * docsection; | |||
71 | 71 | ||
72 | static char *srctree, *kernsrctree; | 72 | static char *srctree, *kernsrctree; |
73 | 73 | ||
74 | void usage (void) | 74 | static void usage (void) |
75 | { | 75 | { |
76 | fprintf(stderr, "Usage: docproc {doc|depend} file\n"); | 76 | fprintf(stderr, "Usage: docproc {doc|depend} file\n"); |
77 | fprintf(stderr, "Input is read from file.tmpl. Output is sent to stdout\n"); | 77 | fprintf(stderr, "Input is read from file.tmpl. Output is sent to stdout\n"); |
@@ -84,7 +84,7 @@ void usage (void) | |||
84 | /* | 84 | /* |
85 | * Execute kernel-doc with parameters given in svec | 85 | * Execute kernel-doc with parameters given in svec |
86 | */ | 86 | */ |
87 | void exec_kernel_doc(char **svec) | 87 | static void exec_kernel_doc(char **svec) |
88 | { | 88 | { |
89 | pid_t pid; | 89 | pid_t pid; |
90 | int ret; | 90 | int ret; |
@@ -129,7 +129,7 @@ struct symfile | |||
129 | struct symfile symfilelist[MAXFILES]; | 129 | struct symfile symfilelist[MAXFILES]; |
130 | int symfilecnt = 0; | 130 | int symfilecnt = 0; |
131 | 131 | ||
132 | void add_new_symbol(struct symfile *sym, char * symname) | 132 | static void add_new_symbol(struct symfile *sym, char * symname) |
133 | { | 133 | { |
134 | sym->symbollist = | 134 | sym->symbollist = |
135 | realloc(sym->symbollist, (sym->symbolcnt + 1) * sizeof(char *)); | 135 | realloc(sym->symbollist, (sym->symbolcnt + 1) * sizeof(char *)); |
@@ -137,14 +137,14 @@ void add_new_symbol(struct symfile *sym, char * symname) | |||
137 | } | 137 | } |
138 | 138 | ||
139 | /* Add a filename to the list */ | 139 | /* Add a filename to the list */ |
140 | struct symfile * add_new_file(char * filename) | 140 | static struct symfile * add_new_file(char * filename) |
141 | { | 141 | { |
142 | symfilelist[symfilecnt++].filename = strdup(filename); | 142 | symfilelist[symfilecnt++].filename = strdup(filename); |
143 | return &symfilelist[symfilecnt - 1]; | 143 | return &symfilelist[symfilecnt - 1]; |
144 | } | 144 | } |
145 | 145 | ||
146 | /* Check if file already are present in the list */ | 146 | /* Check if file already are present in the list */ |
147 | struct symfile * filename_exist(char * filename) | 147 | static struct symfile * filename_exist(char * filename) |
148 | { | 148 | { |
149 | int i; | 149 | int i; |
150 | for (i=0; i < symfilecnt; i++) | 150 | for (i=0; i < symfilecnt; i++) |
@@ -157,20 +157,20 @@ struct symfile * filename_exist(char * filename) | |||
157 | * List all files referenced within the template file. | 157 | * List all files referenced within the template file. |
158 | * Files are separated by tabs. | 158 | * Files are separated by tabs. |
159 | */ | 159 | */ |
160 | void adddep(char * file) { printf("\t%s", file); } | 160 | static void adddep(char * file) { printf("\t%s", file); } |
161 | void adddep2(char * file, char * line) { line = line; adddep(file); } | 161 | static void adddep2(char * file, char * line) { line = line; adddep(file); } |
162 | void noaction(char * line) { line = line; } | 162 | static void noaction(char * line) { line = line; } |
163 | void noaction2(char * file, char * line) { file = file; line = line; } | 163 | static void noaction2(char * file, char * line) { file = file; line = line; } |
164 | 164 | ||
165 | /* Echo the line without further action */ | 165 | /* Echo the line without further action */ |
166 | void printline(char * line) { printf("%s", line); } | 166 | static void printline(char * line) { printf("%s", line); } |
167 | 167 | ||
168 | /* | 168 | /* |
169 | * Find all symbols in filename that are exported with EXPORT_SYMBOL & | 169 | * Find all symbols in filename that are exported with EXPORT_SYMBOL & |
170 | * EXPORT_SYMBOL_GPL (& EXPORT_SYMBOL_GPL_FUTURE implicitly). | 170 | * EXPORT_SYMBOL_GPL (& EXPORT_SYMBOL_GPL_FUTURE implicitly). |
171 | * All symbols located are stored in symfilelist. | 171 | * All symbols located are stored in symfilelist. |
172 | */ | 172 | */ |
173 | void find_export_symbols(char * filename) | 173 | static void find_export_symbols(char * filename) |
174 | { | 174 | { |
175 | FILE * fp; | 175 | FILE * fp; |
176 | struct symfile *sym; | 176 | struct symfile *sym; |
@@ -227,7 +227,7 @@ void find_export_symbols(char * filename) | |||
227 | * intfunc uses -nofunction | 227 | * intfunc uses -nofunction |
228 | * extfunc uses -function | 228 | * extfunc uses -function |
229 | */ | 229 | */ |
230 | void docfunctions(char * filename, char * type) | 230 | static void docfunctions(char * filename, char * type) |
231 | { | 231 | { |
232 | int i,j; | 232 | int i,j; |
233 | int symcnt = 0; | 233 | int symcnt = 0; |
@@ -258,15 +258,15 @@ void docfunctions(char * filename, char * type) | |||
258 | fflush(stdout); | 258 | fflush(stdout); |
259 | free(vec); | 259 | free(vec); |
260 | } | 260 | } |
261 | void intfunc(char * filename) { docfunctions(filename, NOFUNCTION); } | 261 | static void intfunc(char * filename) { docfunctions(filename, NOFUNCTION); } |
262 | void extfunc(char * filename) { docfunctions(filename, FUNCTION); } | 262 | static void extfunc(char * filename) { docfunctions(filename, FUNCTION); } |
263 | 263 | ||
264 | /* | 264 | /* |
265 | * Document specific function(s) in a file. | 265 | * Document specific function(s) in a file. |
266 | * Call kernel-doc with the following parameters: | 266 | * Call kernel-doc with the following parameters: |
267 | * kernel-doc -docbook -function function1 [-function function2] | 267 | * kernel-doc -docbook -function function1 [-function function2] |
268 | */ | 268 | */ |
269 | void singfunc(char * filename, char * line) | 269 | static void singfunc(char * filename, char * line) |
270 | { | 270 | { |
271 | char *vec[200]; /* Enough for specific functions */ | 271 | char *vec[200]; /* Enough for specific functions */ |
272 | int i, idx = 0; | 272 | int i, idx = 0; |
@@ -297,7 +297,7 @@ void singfunc(char * filename, char * line) | |||
297 | * Call kernel-doc with the following parameters: | 297 | * Call kernel-doc with the following parameters: |
298 | * kernel-doc -docbook -function "doc section" filename | 298 | * kernel-doc -docbook -function "doc section" filename |
299 | */ | 299 | */ |
300 | void docsect(char *filename, char *line) | 300 | static void docsect(char *filename, char *line) |
301 | { | 301 | { |
302 | char *vec[6]; /* kerneldoc -docbook -function "section" file NULL */ | 302 | char *vec[6]; /* kerneldoc -docbook -function "section" file NULL */ |
303 | char *s; | 303 | char *s; |
@@ -324,7 +324,7 @@ void docsect(char *filename, char *line) | |||
324 | * 5) Lines containing !P | 324 | * 5) Lines containing !P |
325 | * 6) Default lines - lines not matching the above | 325 | * 6) Default lines - lines not matching the above |
326 | */ | 326 | */ |
327 | void parse_file(FILE *infile) | 327 | static void parse_file(FILE *infile) |
328 | { | 328 | { |
329 | char line[MAXLINESZ]; | 329 | char line[MAXLINESZ]; |
330 | char * s; | 330 | char * s; |
diff --git a/scripts/basic/fixdep.c b/scripts/basic/fixdep.c index 8ab448611680..6bf21f83837d 100644 --- a/scripts/basic/fixdep.c +++ b/scripts/basic/fixdep.c | |||
@@ -124,7 +124,7 @@ char *target; | |||
124 | char *depfile; | 124 | char *depfile; |
125 | char *cmdline; | 125 | char *cmdline; |
126 | 126 | ||
127 | void usage(void) | 127 | static void usage(void) |
128 | { | 128 | { |
129 | fprintf(stderr, "Usage: fixdep <depfile> <target> <cmdline>\n"); | 129 | fprintf(stderr, "Usage: fixdep <depfile> <target> <cmdline>\n"); |
130 | exit(1); | 130 | exit(1); |
@@ -133,7 +133,7 @@ void usage(void) | |||
133 | /* | 133 | /* |
134 | * Print out the commandline prefixed with cmd_<target filename> := | 134 | * Print out the commandline prefixed with cmd_<target filename> := |
135 | */ | 135 | */ |
136 | void print_cmdline(void) | 136 | static void print_cmdline(void) |
137 | { | 137 | { |
138 | printf("cmd_%s := %s\n\n", target, cmdline); | 138 | printf("cmd_%s := %s\n\n", target, cmdline); |
139 | } | 139 | } |
@@ -146,7 +146,7 @@ int len_config = 0; | |||
146 | * Grow the configuration string to a desired length. | 146 | * Grow the configuration string to a desired length. |
147 | * Usually the first growth is plenty. | 147 | * Usually the first growth is plenty. |
148 | */ | 148 | */ |
149 | void grow_config(int len) | 149 | static void grow_config(int len) |
150 | { | 150 | { |
151 | while (len_config + len > size_config) { | 151 | while (len_config + len > size_config) { |
152 | if (size_config == 0) | 152 | if (size_config == 0) |
@@ -162,7 +162,7 @@ void grow_config(int len) | |||
162 | /* | 162 | /* |
163 | * Lookup a value in the configuration string. | 163 | * Lookup a value in the configuration string. |
164 | */ | 164 | */ |
165 | int is_defined_config(const char * name, int len) | 165 | static int is_defined_config(const char * name, int len) |
166 | { | 166 | { |
167 | const char * pconfig; | 167 | const char * pconfig; |
168 | const char * plast = str_config + len_config - len; | 168 | const char * plast = str_config + len_config - len; |
@@ -178,7 +178,7 @@ int is_defined_config(const char * name, int len) | |||
178 | /* | 178 | /* |
179 | * Add a new value to the configuration string. | 179 | * Add a new value to the configuration string. |
180 | */ | 180 | */ |
181 | void define_config(const char * name, int len) | 181 | static void define_config(const char * name, int len) |
182 | { | 182 | { |
183 | grow_config(len + 1); | 183 | grow_config(len + 1); |
184 | 184 | ||
@@ -190,7 +190,7 @@ void define_config(const char * name, int len) | |||
190 | /* | 190 | /* |
191 | * Clear the set of configuration strings. | 191 | * Clear the set of configuration strings. |
192 | */ | 192 | */ |
193 | void clear_config(void) | 193 | static void clear_config(void) |
194 | { | 194 | { |
195 | len_config = 0; | 195 | len_config = 0; |
196 | define_config("", 0); | 196 | define_config("", 0); |
@@ -199,7 +199,7 @@ void clear_config(void) | |||
199 | /* | 199 | /* |
200 | * Record the use of a CONFIG_* word. | 200 | * Record the use of a CONFIG_* word. |
201 | */ | 201 | */ |
202 | void use_config(char *m, int slen) | 202 | static void use_config(char *m, int slen) |
203 | { | 203 | { |
204 | char s[PATH_MAX]; | 204 | char s[PATH_MAX]; |
205 | char *p; | 205 | char *p; |
@@ -220,7 +220,7 @@ void use_config(char *m, int slen) | |||
220 | printf(" $(wildcard include/config/%s.h) \\\n", s); | 220 | printf(" $(wildcard include/config/%s.h) \\\n", s); |
221 | } | 221 | } |
222 | 222 | ||
223 | void parse_config_file(char *map, size_t len) | 223 | static void parse_config_file(char *map, size_t len) |
224 | { | 224 | { |
225 | int *end = (int *) (map + len); | 225 | int *end = (int *) (map + len); |
226 | /* start at +1, so that p can never be < map */ | 226 | /* start at +1, so that p can never be < map */ |
@@ -254,7 +254,7 @@ void parse_config_file(char *map, size_t len) | |||
254 | } | 254 | } |
255 | 255 | ||
256 | /* test is s ends in sub */ | 256 | /* test is s ends in sub */ |
257 | int strrcmp(char *s, char *sub) | 257 | static int strrcmp(char *s, char *sub) |
258 | { | 258 | { |
259 | int slen = strlen(s); | 259 | int slen = strlen(s); |
260 | int sublen = strlen(sub); | 260 | int sublen = strlen(sub); |
@@ -265,7 +265,7 @@ int strrcmp(char *s, char *sub) | |||
265 | return memcmp(s + slen - sublen, sub, sublen); | 265 | return memcmp(s + slen - sublen, sub, sublen); |
266 | } | 266 | } |
267 | 267 | ||
268 | void do_config_file(char *filename) | 268 | static void do_config_file(char *filename) |
269 | { | 269 | { |
270 | struct stat st; | 270 | struct stat st; |
271 | int fd; | 271 | int fd; |
@@ -296,7 +296,7 @@ void do_config_file(char *filename) | |||
296 | close(fd); | 296 | close(fd); |
297 | } | 297 | } |
298 | 298 | ||
299 | void parse_dep_file(void *map, size_t len) | 299 | static void parse_dep_file(void *map, size_t len) |
300 | { | 300 | { |
301 | char *m = map; | 301 | char *m = map; |
302 | char *end = m + len; | 302 | char *end = m + len; |
@@ -336,7 +336,7 @@ void parse_dep_file(void *map, size_t len) | |||
336 | printf("$(deps_%s):\n", target); | 336 | printf("$(deps_%s):\n", target); |
337 | } | 337 | } |
338 | 338 | ||
339 | void print_deps(void) | 339 | static void print_deps(void) |
340 | { | 340 | { |
341 | struct stat st; | 341 | struct stat st; |
342 | int fd; | 342 | int fd; |
@@ -368,7 +368,7 @@ void print_deps(void) | |||
368 | close(fd); | 368 | close(fd); |
369 | } | 369 | } |
370 | 370 | ||
371 | void traps(void) | 371 | static void traps(void) |
372 | { | 372 | { |
373 | static char test[] __attribute__((aligned(sizeof(int)))) = "CONF"; | 373 | static char test[] __attribute__((aligned(sizeof(int)))) = "CONF"; |
374 | int *p = (int *)test; | 374 | int *p = (int *)test; |
diff --git a/scripts/basic/hash.c b/scripts/basic/hash.c index 3299ad7fc8c0..2ef5d3f666b8 100644 --- a/scripts/basic/hash.c +++ b/scripts/basic/hash.c | |||
@@ -21,7 +21,7 @@ static void usage(void) | |||
21 | * http://www.cse.yorku.ca/~oz/hash.html | 21 | * http://www.cse.yorku.ca/~oz/hash.html |
22 | */ | 22 | */ |
23 | 23 | ||
24 | unsigned int djb2_hash(char *str) | 24 | static unsigned int djb2_hash(char *str) |
25 | { | 25 | { |
26 | unsigned long hash = 5381; | 26 | unsigned long hash = 5381; |
27 | int c; | 27 | int c; |
@@ -34,7 +34,7 @@ unsigned int djb2_hash(char *str) | |||
34 | return (unsigned int)(hash & ((1 << DYNAMIC_DEBUG_HASH_BITS) - 1)); | 34 | return (unsigned int)(hash & ((1 << DYNAMIC_DEBUG_HASH_BITS) - 1)); |
35 | } | 35 | } |
36 | 36 | ||
37 | unsigned int r5_hash(char *str) | 37 | static unsigned int r5_hash(char *str) |
38 | { | 38 | { |
39 | unsigned long hash = 0; | 39 | unsigned long hash = 0; |
40 | int c; | 40 | int c; |
diff --git a/scripts/checkincludes.pl b/scripts/checkincludes.pl index 8e6b716c191c..676ddc07d6fa 100755 --- a/scripts/checkincludes.pl +++ b/scripts/checkincludes.pl | |||
@@ -1,24 +1,85 @@ | |||
1 | #!/usr/bin/perl | 1 | #!/usr/bin/perl |
2 | # | 2 | # |
3 | # checkincludes: Find files included more than once in (other) files. | 3 | # checkincludes: find/remove files included more than once |
4 | # | ||
4 | # Copyright abandoned, 2000, Niels Kristian Bech Jensen <nkbj@image.dk>. | 5 | # Copyright abandoned, 2000, Niels Kristian Bech Jensen <nkbj@image.dk>. |
6 | # Copyright 2009 Luis R. Rodriguez <mcgrof@gmail.com> | ||
7 | # | ||
8 | # This script checks for duplicate includes. It also has support | ||
9 | # to remove them in place. Note that this will not take into | ||
10 | # consideration macros so you should run this only if you know | ||
11 | # you do have real dups and do not have them under #ifdef's. You | ||
12 | # could also just review the results. | ||
13 | |||
14 | sub usage { | ||
15 | print "Usage: checkincludes.pl [-r]\n"; | ||
16 | print "By default we just warn of duplicates\n"; | ||
17 | print "To remove duplicated includes in place use -r\n"; | ||
18 | exit 1; | ||
19 | } | ||
20 | |||
21 | my $remove = 0; | ||
22 | |||
23 | if ($#ARGV < 0) { | ||
24 | usage(); | ||
25 | } | ||
26 | |||
27 | if ($#ARGV >= 1) { | ||
28 | if ($ARGV[0] =~ /^-/) { | ||
29 | if ($ARGV[0] eq "-r") { | ||
30 | $remove = 1; | ||
31 | shift; | ||
32 | } else { | ||
33 | usage(); | ||
34 | } | ||
35 | } | ||
36 | } | ||
5 | 37 | ||
6 | foreach $file (@ARGV) { | 38 | foreach $file (@ARGV) { |
7 | open(FILE, $file) or die "Cannot open $file: $!.\n"; | 39 | open(FILE, $file) or die "Cannot open $file: $!.\n"; |
8 | 40 | ||
9 | my %includedfiles = (); | 41 | my %includedfiles = (); |
42 | my @file_lines = (); | ||
10 | 43 | ||
11 | while (<FILE>) { | 44 | while (<FILE>) { |
12 | if (m/^\s*#\s*include\s*[<"](\S*)[>"]/o) { | 45 | if (m/^\s*#\s*include\s*[<"](\S*)[>"]/o) { |
13 | ++$includedfiles{$1}; | 46 | ++$includedfiles{$1}; |
14 | } | 47 | } |
48 | push(@file_lines, $_); | ||
15 | } | 49 | } |
16 | 50 | ||
17 | foreach $filename (keys %includedfiles) { | 51 | close(FILE); |
18 | if ($includedfiles{$filename} > 1) { | 52 | |
19 | print "$file: $filename is included more than once.\n"; | 53 | if (!$remove) { |
54 | foreach $filename (keys %includedfiles) { | ||
55 | if ($includedfiles{$filename} > 1) { | ||
56 | print "$file: $filename is included more than once.\n"; | ||
57 | } | ||
20 | } | 58 | } |
59 | next; | ||
21 | } | 60 | } |
22 | 61 | ||
62 | open(FILE,">$file") || die("Cannot write to $file: $!"); | ||
63 | |||
64 | my $dups = 0; | ||
65 | foreach (@file_lines) { | ||
66 | if (m/^\s*#\s*include\s*[<"](\S*)[>"]/o) { | ||
67 | foreach $filename (keys %includedfiles) { | ||
68 | if ($1 eq $filename) { | ||
69 | if ($includedfiles{$filename} > 1) { | ||
70 | $includedfiles{$filename}--; | ||
71 | $dups++; | ||
72 | } else { | ||
73 | print FILE $_; | ||
74 | } | ||
75 | } | ||
76 | } | ||
77 | } else { | ||
78 | print FILE $_; | ||
79 | } | ||
80 | } | ||
81 | if ($dups > 0) { | ||
82 | print "$file: removed $dups duplicate includes\n"; | ||
83 | } | ||
23 | close(FILE); | 84 | close(FILE); |
24 | } | 85 | } |
diff --git a/scripts/kconfig/conf.c b/scripts/kconfig/conf.c index 3baaaecd6b13..9960d1c303f8 100644 --- a/scripts/kconfig/conf.c +++ b/scripts/kconfig/conf.c | |||
@@ -38,14 +38,14 @@ static int conf_cnt; | |||
38 | static char line[128]; | 38 | static char line[128]; |
39 | static struct menu *rootEntry; | 39 | static struct menu *rootEntry; |
40 | 40 | ||
41 | static char nohelp_text[] = N_("Sorry, no help available for this option yet.\n"); | 41 | static void print_help(struct menu *menu) |
42 | |||
43 | static const char *get_help(struct menu *menu) | ||
44 | { | 42 | { |
45 | if (menu_has_help(menu)) | 43 | struct gstr help = str_new(); |
46 | return _(menu_get_help(menu)); | 44 | |
47 | else | 45 | menu_get_ext_help(menu, &help); |
48 | return nohelp_text; | 46 | |
47 | printf("\n%s\n", str_get(&help)); | ||
48 | str_free(&help); | ||
49 | } | 49 | } |
50 | 50 | ||
51 | static void strip(char *str) | 51 | static void strip(char *str) |
@@ -121,7 +121,7 @@ static int conf_askvalue(struct symbol *sym, const char *def) | |||
121 | return 1; | 121 | return 1; |
122 | } | 122 | } |
123 | 123 | ||
124 | int conf_string(struct menu *menu) | 124 | static int conf_string(struct menu *menu) |
125 | { | 125 | { |
126 | struct symbol *sym = menu->sym; | 126 | struct symbol *sym = menu->sym; |
127 | const char *def; | 127 | const char *def; |
@@ -140,7 +140,7 @@ int conf_string(struct menu *menu) | |||
140 | case '?': | 140 | case '?': |
141 | /* print help */ | 141 | /* print help */ |
142 | if (line[1] == '\n') { | 142 | if (line[1] == '\n') { |
143 | printf("\n%s\n", get_help(menu)); | 143 | print_help(menu); |
144 | def = NULL; | 144 | def = NULL; |
145 | break; | 145 | break; |
146 | } | 146 | } |
@@ -220,7 +220,7 @@ static int conf_sym(struct menu *menu) | |||
220 | if (sym_set_tristate_value(sym, newval)) | 220 | if (sym_set_tristate_value(sym, newval)) |
221 | return 0; | 221 | return 0; |
222 | help: | 222 | help: |
223 | printf("\n%s\n", get_help(menu)); | 223 | print_help(menu); |
224 | } | 224 | } |
225 | } | 225 | } |
226 | 226 | ||
@@ -307,7 +307,7 @@ static int conf_choice(struct menu *menu) | |||
307 | fgets(line, 128, stdin); | 307 | fgets(line, 128, stdin); |
308 | strip(line); | 308 | strip(line); |
309 | if (line[0] == '?') { | 309 | if (line[0] == '?') { |
310 | printf("\n%s\n", get_help(menu)); | 310 | print_help(menu); |
311 | continue; | 311 | continue; |
312 | } | 312 | } |
313 | if (!line[0]) | 313 | if (!line[0]) |
@@ -331,7 +331,7 @@ static int conf_choice(struct menu *menu) | |||
331 | if (!child) | 331 | if (!child) |
332 | continue; | 332 | continue; |
333 | if (line[strlen(line) - 1] == '?') { | 333 | if (line[strlen(line) - 1] == '?') { |
334 | printf("\n%s\n", get_help(child)); | 334 | print_help(child); |
335 | continue; | 335 | continue; |
336 | } | 336 | } |
337 | sym_set_choice_value(sym, child->sym); | 337 | sym_set_choice_value(sym, child->sym); |
diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c index a04da3459f0f..b55e72ff2fc6 100644 --- a/scripts/kconfig/confdata.c +++ b/scripts/kconfig/confdata.c | |||
@@ -560,7 +560,7 @@ int conf_write(const char *name) | |||
560 | return 0; | 560 | return 0; |
561 | } | 561 | } |
562 | 562 | ||
563 | int conf_split_config(void) | 563 | static int conf_split_config(void) |
564 | { | 564 | { |
565 | const char *name; | 565 | const char *name; |
566 | char path[128]; | 566 | char path[128]; |
diff --git a/scripts/kconfig/expr.c b/scripts/kconfig/expr.c index 579ece4fa584..edd3f39a080a 100644 --- a/scripts/kconfig/expr.c +++ b/scripts/kconfig/expr.c | |||
@@ -348,7 +348,7 @@ struct expr *expr_trans_bool(struct expr *e) | |||
348 | /* | 348 | /* |
349 | * e1 || e2 -> ? | 349 | * e1 || e2 -> ? |
350 | */ | 350 | */ |
351 | struct expr *expr_join_or(struct expr *e1, struct expr *e2) | 351 | static struct expr *expr_join_or(struct expr *e1, struct expr *e2) |
352 | { | 352 | { |
353 | struct expr *tmp; | 353 | struct expr *tmp; |
354 | struct symbol *sym1, *sym2; | 354 | struct symbol *sym1, *sym2; |
@@ -412,7 +412,7 @@ struct expr *expr_join_or(struct expr *e1, struct expr *e2) | |||
412 | return NULL; | 412 | return NULL; |
413 | } | 413 | } |
414 | 414 | ||
415 | struct expr *expr_join_and(struct expr *e1, struct expr *e2) | 415 | static struct expr *expr_join_and(struct expr *e1, struct expr *e2) |
416 | { | 416 | { |
417 | struct expr *tmp; | 417 | struct expr *tmp; |
418 | struct symbol *sym1, *sym2; | 418 | struct symbol *sym1, *sym2; |
@@ -1098,6 +1098,8 @@ void expr_fprint(struct expr *e, FILE *out) | |||
1098 | static void expr_print_gstr_helper(void *data, struct symbol *sym, const char *str) | 1098 | static void expr_print_gstr_helper(void *data, struct symbol *sym, const char *str) |
1099 | { | 1099 | { |
1100 | str_append((struct gstr*)data, str); | 1100 | str_append((struct gstr*)data, str); |
1101 | if (sym) | ||
1102 | str_printf((struct gstr*)data, " [=%s]", sym_get_string_value(sym)); | ||
1101 | } | 1103 | } |
1102 | 1104 | ||
1103 | void expr_gstr_print(struct expr *e, struct gstr *gs) | 1105 | void expr_gstr_print(struct expr *e, struct gstr *gs) |
diff --git a/scripts/kconfig/gconf.c b/scripts/kconfig/gconf.c index 199b22bb49e2..65464366fe38 100644 --- a/scripts/kconfig/gconf.c +++ b/scripts/kconfig/gconf.c | |||
@@ -456,19 +456,9 @@ static void text_insert_help(struct menu *menu) | |||
456 | GtkTextBuffer *buffer; | 456 | GtkTextBuffer *buffer; |
457 | GtkTextIter start, end; | 457 | GtkTextIter start, end; |
458 | const char *prompt = _(menu_get_prompt(menu)); | 458 | const char *prompt = _(menu_get_prompt(menu)); |
459 | gchar *name; | 459 | struct gstr help = str_new(); |
460 | const char *help; | ||
461 | 460 | ||
462 | help = menu_get_help(menu); | 461 | menu_get_ext_help(menu, &help); |
463 | |||
464 | /* Gettextize if the help text not empty */ | ||
465 | if ((help != 0) && (help[0] != 0)) | ||
466 | help = _(help); | ||
467 | |||
468 | if (menu->sym && menu->sym->name) | ||
469 | name = g_strdup_printf(menu->sym->name); | ||
470 | else | ||
471 | name = g_strdup(""); | ||
472 | 462 | ||
473 | buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_w)); | 463 | buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_w)); |
474 | gtk_text_buffer_get_bounds(buffer, &start, &end); | 464 | gtk_text_buffer_get_bounds(buffer, &start, &end); |
@@ -478,14 +468,11 @@ static void text_insert_help(struct menu *menu) | |||
478 | gtk_text_buffer_get_end_iter(buffer, &end); | 468 | gtk_text_buffer_get_end_iter(buffer, &end); |
479 | gtk_text_buffer_insert_with_tags(buffer, &end, prompt, -1, tag1, | 469 | gtk_text_buffer_insert_with_tags(buffer, &end, prompt, -1, tag1, |
480 | NULL); | 470 | NULL); |
481 | gtk_text_buffer_insert_at_cursor(buffer, " ", 1); | ||
482 | gtk_text_buffer_get_end_iter(buffer, &end); | ||
483 | gtk_text_buffer_insert_with_tags(buffer, &end, name, -1, tag1, | ||
484 | NULL); | ||
485 | gtk_text_buffer_insert_at_cursor(buffer, "\n\n", 2); | 471 | gtk_text_buffer_insert_at_cursor(buffer, "\n\n", 2); |
486 | gtk_text_buffer_get_end_iter(buffer, &end); | 472 | gtk_text_buffer_get_end_iter(buffer, &end); |
487 | gtk_text_buffer_insert_with_tags(buffer, &end, help, -1, tag2, | 473 | gtk_text_buffer_insert_with_tags(buffer, &end, str_get(&help), -1, tag2, |
488 | NULL); | 474 | NULL); |
475 | str_free(&help); | ||
489 | } | 476 | } |
490 | 477 | ||
491 | 478 | ||
diff --git a/scripts/kconfig/gconf.glade b/scripts/kconfig/gconf.glade index 803233fdd6dd..b1c86c19292c 100644 --- a/scripts/kconfig/gconf.glade +++ b/scripts/kconfig/gconf.glade | |||
@@ -547,7 +547,7 @@ | |||
547 | <property name="headers_visible">True</property> | 547 | <property name="headers_visible">True</property> |
548 | <property name="rules_hint">False</property> | 548 | <property name="rules_hint">False</property> |
549 | <property name="reorderable">False</property> | 549 | <property name="reorderable">False</property> |
550 | <property name="enable_search">True</property> | 550 | <property name="enable_search">False</property> |
551 | <signal name="cursor_changed" handler="on_treeview2_cursor_changed" last_modification_time="Sun, 12 Jan 2003 15:58:22 GMT"/> | 551 | <signal name="cursor_changed" handler="on_treeview2_cursor_changed" last_modification_time="Sun, 12 Jan 2003 15:58:22 GMT"/> |
552 | <signal name="button_press_event" handler="on_treeview1_button_press_event" last_modification_time="Sun, 12 Jan 2003 16:03:52 GMT"/> | 552 | <signal name="button_press_event" handler="on_treeview1_button_press_event" last_modification_time="Sun, 12 Jan 2003 16:03:52 GMT"/> |
553 | <signal name="key_press_event" handler="on_treeview2_key_press_event" last_modification_time="Sun, 12 Jan 2003 16:11:44 GMT"/> | 553 | <signal name="key_press_event" handler="on_treeview2_key_press_event" last_modification_time="Sun, 12 Jan 2003 16:11:44 GMT"/> |
@@ -582,7 +582,7 @@ | |||
582 | <property name="headers_visible">True</property> | 582 | <property name="headers_visible">True</property> |
583 | <property name="rules_hint">False</property> | 583 | <property name="rules_hint">False</property> |
584 | <property name="reorderable">False</property> | 584 | <property name="reorderable">False</property> |
585 | <property name="enable_search">True</property> | 585 | <property name="enable_search">False</property> |
586 | <signal name="cursor_changed" handler="on_treeview2_cursor_changed" last_modification_time="Sun, 12 Jan 2003 15:57:55 GMT"/> | 586 | <signal name="cursor_changed" handler="on_treeview2_cursor_changed" last_modification_time="Sun, 12 Jan 2003 15:57:55 GMT"/> |
587 | <signal name="button_press_event" handler="on_treeview2_button_press_event" last_modification_time="Sun, 12 Jan 2003 15:57:58 GMT"/> | 587 | <signal name="button_press_event" handler="on_treeview2_button_press_event" last_modification_time="Sun, 12 Jan 2003 15:57:58 GMT"/> |
588 | <signal name="key_press_event" handler="on_treeview2_key_press_event" last_modification_time="Sun, 12 Jan 2003 15:58:01 GMT"/> | 588 | <signal name="key_press_event" handler="on_treeview2_key_press_event" last_modification_time="Sun, 12 Jan 2003 15:58:01 GMT"/> |
diff --git a/scripts/kconfig/kxgettext.c b/scripts/kconfig/kxgettext.c index 8d9ce22b0fc5..dcc3fcc0cc9a 100644 --- a/scripts/kconfig/kxgettext.c +++ b/scripts/kconfig/kxgettext.c | |||
@@ -166,7 +166,7 @@ static int message__add(const char *msg, char *option, char *file, int lineno) | |||
166 | return rc; | 166 | return rc; |
167 | } | 167 | } |
168 | 168 | ||
169 | void menu_build_message_list(struct menu *menu) | 169 | static void menu_build_message_list(struct menu *menu) |
170 | { | 170 | { |
171 | struct menu *child; | 171 | struct menu *child; |
172 | 172 | ||
@@ -211,7 +211,7 @@ static void message__print_gettext_msgid_msgstr(struct message *self) | |||
211 | "msgstr \"\"\n", self->msg); | 211 | "msgstr \"\"\n", self->msg); |
212 | } | 212 | } |
213 | 213 | ||
214 | void menu__xgettext(void) | 214 | static void menu__xgettext(void) |
215 | { | 215 | { |
216 | struct message *m = message__list; | 216 | struct message *m = message__list; |
217 | 217 | ||
diff --git a/scripts/kconfig/lkc_proto.h b/scripts/kconfig/lkc_proto.h index 8e69461313d1..ffeb532b2cff 100644 --- a/scripts/kconfig/lkc_proto.h +++ b/scripts/kconfig/lkc_proto.h | |||
@@ -17,6 +17,8 @@ P(menu_get_root_menu,struct menu *,(struct menu *menu)); | |||
17 | P(menu_get_parent_menu,struct menu *,(struct menu *menu)); | 17 | P(menu_get_parent_menu,struct menu *,(struct menu *menu)); |
18 | P(menu_has_help,bool,(struct menu *menu)); | 18 | P(menu_has_help,bool,(struct menu *menu)); |
19 | P(menu_get_help,const char *,(struct menu *menu)); | 19 | P(menu_get_help,const char *,(struct menu *menu)); |
20 | P(get_symbol_str,void,(struct gstr *r, struct symbol *sym)); | ||
21 | P(menu_get_ext_help,void,(struct menu *menu, struct gstr *help)); | ||
20 | 22 | ||
21 | /* symbol.c */ | 23 | /* symbol.c */ |
22 | P(symbol_hash,struct symbol *,[SYMBOL_HASHSIZE]); | 24 | P(symbol_hash,struct symbol *,[SYMBOL_HASHSIZE]); |
diff --git a/scripts/kconfig/mconf.c b/scripts/kconfig/mconf.c index 25b60bc117f7..d82953573588 100644 --- a/scripts/kconfig/mconf.c +++ b/scripts/kconfig/mconf.c | |||
@@ -199,8 +199,6 @@ inputbox_instructions_string[] = N_( | |||
199 | setmod_text[] = N_( | 199 | setmod_text[] = N_( |
200 | "This feature depends on another which has been configured as a module.\n" | 200 | "This feature depends on another which has been configured as a module.\n" |
201 | "As a result, this feature will be built as a module."), | 201 | "As a result, this feature will be built as a module."), |
202 | nohelp_text[] = N_( | ||
203 | "There is no help available for this kernel option.\n"), | ||
204 | load_config_text[] = N_( | 202 | load_config_text[] = N_( |
205 | "Enter the name of the configuration file you wish to load. " | 203 | "Enter the name of the configuration file you wish to load. " |
206 | "Accept the name shown to restore the configuration you " | 204 | "Accept the name shown to restore the configuration you " |
@@ -284,66 +282,6 @@ static void show_textbox(const char *title, const char *text, int r, int c); | |||
284 | static void show_helptext(const char *title, const char *text); | 282 | static void show_helptext(const char *title, const char *text); |
285 | static void show_help(struct menu *menu); | 283 | static void show_help(struct menu *menu); |
286 | 284 | ||
287 | static void get_prompt_str(struct gstr *r, struct property *prop) | ||
288 | { | ||
289 | int i, j; | ||
290 | struct menu *submenu[8], *menu; | ||
291 | |||
292 | str_printf(r, _("Prompt: %s\n"), _(prop->text)); | ||
293 | str_printf(r, _(" Defined at %s:%d\n"), prop->menu->file->name, | ||
294 | prop->menu->lineno); | ||
295 | if (!expr_is_yes(prop->visible.expr)) { | ||
296 | str_append(r, _(" Depends on: ")); | ||
297 | expr_gstr_print(prop->visible.expr, r); | ||
298 | str_append(r, "\n"); | ||
299 | } | ||
300 | menu = prop->menu->parent; | ||
301 | for (i = 0; menu != &rootmenu && i < 8; menu = menu->parent) | ||
302 | submenu[i++] = menu; | ||
303 | if (i > 0) { | ||
304 | str_printf(r, _(" Location:\n")); | ||
305 | for (j = 4; --i >= 0; j += 2) { | ||
306 | menu = submenu[i]; | ||
307 | str_printf(r, "%*c-> %s", j, ' ', _(menu_get_prompt(menu))); | ||
308 | if (menu->sym) { | ||
309 | str_printf(r, " (%s [=%s])", menu->sym->name ? | ||
310 | menu->sym->name : _("<choice>"), | ||
311 | sym_get_string_value(menu->sym)); | ||
312 | } | ||
313 | str_append(r, "\n"); | ||
314 | } | ||
315 | } | ||
316 | } | ||
317 | |||
318 | static void get_symbol_str(struct gstr *r, struct symbol *sym) | ||
319 | { | ||
320 | bool hit; | ||
321 | struct property *prop; | ||
322 | |||
323 | if (sym && sym->name) | ||
324 | str_printf(r, "Symbol: %s [=%s]\n", sym->name, | ||
325 | sym_get_string_value(sym)); | ||
326 | for_all_prompts(sym, prop) | ||
327 | get_prompt_str(r, prop); | ||
328 | hit = false; | ||
329 | for_all_properties(sym, prop, P_SELECT) { | ||
330 | if (!hit) { | ||
331 | str_append(r, " Selects: "); | ||
332 | hit = true; | ||
333 | } else | ||
334 | str_printf(r, " && "); | ||
335 | expr_gstr_print(prop->expr, r); | ||
336 | } | ||
337 | if (hit) | ||
338 | str_append(r, "\n"); | ||
339 | if (sym->rev_dep.expr) { | ||
340 | str_append(r, _(" Selected by: ")); | ||
341 | expr_gstr_print(sym->rev_dep.expr, r); | ||
342 | str_append(r, "\n"); | ||
343 | } | ||
344 | str_append(r, "\n\n"); | ||
345 | } | ||
346 | |||
347 | static struct gstr get_relations_str(struct symbol **sym_arr) | 285 | static struct gstr get_relations_str(struct symbol **sym_arr) |
348 | { | 286 | { |
349 | struct symbol *sym; | 287 | struct symbol *sym; |
@@ -699,19 +637,9 @@ static void show_helptext(const char *title, const char *text) | |||
699 | static void show_help(struct menu *menu) | 637 | static void show_help(struct menu *menu) |
700 | { | 638 | { |
701 | struct gstr help = str_new(); | 639 | struct gstr help = str_new(); |
702 | struct symbol *sym = menu->sym; | 640 | |
703 | 641 | menu_get_ext_help(menu, &help); | |
704 | if (menu_has_help(menu)) | 642 | |
705 | { | ||
706 | if (sym->name) { | ||
707 | str_printf(&help, "CONFIG_%s:\n\n", sym->name); | ||
708 | str_append(&help, _(menu_get_help(menu))); | ||
709 | str_append(&help, "\n"); | ||
710 | } | ||
711 | } else { | ||
712 | str_append(&help, nohelp_text); | ||
713 | } | ||
714 | get_symbol_str(&help, sym); | ||
715 | show_helptext(_(menu_get_prompt(menu)), str_get(&help)); | 643 | show_helptext(_(menu_get_prompt(menu)), str_get(&help)); |
716 | str_free(&help); | 644 | str_free(&help); |
717 | } | 645 | } |
diff --git a/scripts/kconfig/menu.c b/scripts/kconfig/menu.c index 07ff8d105c9d..059a2465c574 100644 --- a/scripts/kconfig/menu.c +++ b/scripts/kconfig/menu.c | |||
@@ -9,6 +9,9 @@ | |||
9 | #define LKC_DIRECT_LINK | 9 | #define LKC_DIRECT_LINK |
10 | #include "lkc.h" | 10 | #include "lkc.h" |
11 | 11 | ||
12 | static const char nohelp_text[] = N_( | ||
13 | "There is no help available for this kernel option.\n"); | ||
14 | |||
12 | struct menu rootmenu; | 15 | struct menu rootmenu; |
13 | static struct menu **last_entry_ptr; | 16 | static struct menu **last_entry_ptr; |
14 | 17 | ||
@@ -74,7 +77,7 @@ void menu_end_menu(void) | |||
74 | current_menu = current_menu->parent; | 77 | current_menu = current_menu->parent; |
75 | } | 78 | } |
76 | 79 | ||
77 | struct expr *menu_check_dep(struct expr *e) | 80 | static struct expr *menu_check_dep(struct expr *e) |
78 | { | 81 | { |
79 | if (!e) | 82 | if (!e) |
80 | return e; | 83 | return e; |
@@ -184,7 +187,7 @@ static int menu_range_valid_sym(struct symbol *sym, struct symbol *sym2) | |||
184 | (sym2->type == S_UNKNOWN && sym_string_valid(sym, sym2->name)); | 187 | (sym2->type == S_UNKNOWN && sym_string_valid(sym, sym2->name)); |
185 | } | 188 | } |
186 | 189 | ||
187 | void sym_check_prop(struct symbol *sym) | 190 | static void sym_check_prop(struct symbol *sym) |
188 | { | 191 | { |
189 | struct property *prop; | 192 | struct property *prop; |
190 | struct symbol *sym2; | 193 | struct symbol *sym2; |
@@ -451,3 +454,80 @@ const char *menu_get_help(struct menu *menu) | |||
451 | else | 454 | else |
452 | return ""; | 455 | return ""; |
453 | } | 456 | } |
457 | |||
458 | static void get_prompt_str(struct gstr *r, struct property *prop) | ||
459 | { | ||
460 | int i, j; | ||
461 | struct menu *submenu[8], *menu; | ||
462 | |||
463 | str_printf(r, _("Prompt: %s\n"), _(prop->text)); | ||
464 | str_printf(r, _(" Defined at %s:%d\n"), prop->menu->file->name, | ||
465 | prop->menu->lineno); | ||
466 | if (!expr_is_yes(prop->visible.expr)) { | ||
467 | str_append(r, _(" Depends on: ")); | ||
468 | expr_gstr_print(prop->visible.expr, r); | ||
469 | str_append(r, "\n"); | ||
470 | } | ||
471 | menu = prop->menu->parent; | ||
472 | for (i = 0; menu != &rootmenu && i < 8; menu = menu->parent) | ||
473 | submenu[i++] = menu; | ||
474 | if (i > 0) { | ||
475 | str_printf(r, _(" Location:\n")); | ||
476 | for (j = 4; --i >= 0; j += 2) { | ||
477 | menu = submenu[i]; | ||
478 | str_printf(r, "%*c-> %s", j, ' ', _(menu_get_prompt(menu))); | ||
479 | if (menu->sym) { | ||
480 | str_printf(r, " (%s [=%s])", menu->sym->name ? | ||
481 | menu->sym->name : _("<choice>"), | ||
482 | sym_get_string_value(menu->sym)); | ||
483 | } | ||
484 | str_append(r, "\n"); | ||
485 | } | ||
486 | } | ||
487 | } | ||
488 | |||
489 | void get_symbol_str(struct gstr *r, struct symbol *sym) | ||
490 | { | ||
491 | bool hit; | ||
492 | struct property *prop; | ||
493 | |||
494 | if (sym && sym->name) | ||
495 | str_printf(r, "Symbol: %s [=%s]\n", sym->name, | ||
496 | sym_get_string_value(sym)); | ||
497 | for_all_prompts(sym, prop) | ||
498 | get_prompt_str(r, prop); | ||
499 | hit = false; | ||
500 | for_all_properties(sym, prop, P_SELECT) { | ||
501 | if (!hit) { | ||
502 | str_append(r, " Selects: "); | ||
503 | hit = true; | ||
504 | } else | ||
505 | str_printf(r, " && "); | ||
506 | expr_gstr_print(prop->expr, r); | ||
507 | } | ||
508 | if (hit) | ||
509 | str_append(r, "\n"); | ||
510 | if (sym->rev_dep.expr) { | ||
511 | str_append(r, _(" Selected by: ")); | ||
512 | expr_gstr_print(sym->rev_dep.expr, r); | ||
513 | str_append(r, "\n"); | ||
514 | } | ||
515 | str_append(r, "\n\n"); | ||
516 | } | ||
517 | |||
518 | void menu_get_ext_help(struct menu *menu, struct gstr *help) | ||
519 | { | ||
520 | struct symbol *sym = menu->sym; | ||
521 | |||
522 | if (menu_has_help(menu)) { | ||
523 | if (sym->name) { | ||
524 | str_printf(help, "CONFIG_%s:\n\n", sym->name); | ||
525 | str_append(help, _(menu_get_help(menu))); | ||
526 | str_append(help, "\n"); | ||
527 | } | ||
528 | } else { | ||
529 | str_append(help, nohelp_text); | ||
530 | } | ||
531 | if (sym) | ||
532 | get_symbol_str(help, sym); | ||
533 | } | ||
diff --git a/scripts/kconfig/qconf.cc b/scripts/kconfig/qconf.cc index ce7d508c7520..00c51507cfcc 100644 --- a/scripts/kconfig/qconf.cc +++ b/scripts/kconfig/qconf.cc | |||
@@ -1042,12 +1042,10 @@ void ConfigInfoView::menuInfo(void) | |||
1042 | if (showDebug()) | 1042 | if (showDebug()) |
1043 | debug = debug_info(sym); | 1043 | debug = debug_info(sym); |
1044 | 1044 | ||
1045 | help = menu_get_help(menu); | 1045 | struct gstr help_gstr = str_new(); |
1046 | /* Gettextize if the help text not empty */ | 1046 | menu_get_ext_help(menu, &help_gstr); |
1047 | if (help.isEmpty()) | 1047 | help = print_filter(str_get(&help_gstr)); |
1048 | help = print_filter(menu_get_help(menu)); | 1048 | str_free(&help_gstr); |
1049 | else | ||
1050 | help = print_filter(_(menu_get_help(menu))); | ||
1051 | } else if (menu->prompt) { | 1049 | } else if (menu->prompt) { |
1052 | head += "<big><b>"; | 1050 | head += "<big><b>"; |
1053 | head += print_filter(_(menu->prompt->text)); | 1051 | head += print_filter(_(menu->prompt->text)); |
diff --git a/scripts/kconfig/symbol.c b/scripts/kconfig/symbol.c index 18f3e5c33634..6c8fbbb66ebc 100644 --- a/scripts/kconfig/symbol.c +++ b/scripts/kconfig/symbol.c | |||
@@ -36,7 +36,7 @@ tristate modules_val; | |||
36 | 36 | ||
37 | struct expr *sym_env_list; | 37 | struct expr *sym_env_list; |
38 | 38 | ||
39 | void sym_add_default(struct symbol *sym, const char *def) | 39 | static void sym_add_default(struct symbol *sym, const char *def) |
40 | { | 40 | { |
41 | struct property *prop = prop_alloc(P_DEFAULT, sym); | 41 | struct property *prop = prop_alloc(P_DEFAULT, sym); |
42 | 42 | ||
@@ -125,7 +125,7 @@ struct property *sym_get_default_prop(struct symbol *sym) | |||
125 | return NULL; | 125 | return NULL; |
126 | } | 126 | } |
127 | 127 | ||
128 | struct property *sym_get_range_prop(struct symbol *sym) | 128 | static struct property *sym_get_range_prop(struct symbol *sym) |
129 | { | 129 | { |
130 | struct property *prop; | 130 | struct property *prop; |
131 | 131 | ||
@@ -943,7 +943,7 @@ const char *prop_get_type_name(enum prop_type type) | |||
943 | return "unknown"; | 943 | return "unknown"; |
944 | } | 944 | } |
945 | 945 | ||
946 | void prop_add_env(const char *env) | 946 | static void prop_add_env(const char *env) |
947 | { | 947 | { |
948 | struct symbol *sym, *sym2; | 948 | struct symbol *sym, *sym2; |
949 | struct property *prop; | 949 | struct property *prop; |
diff --git a/scripts/markup_oops.pl b/scripts/markup_oops.pl index 89774011965d..5f0fcb712e29 100644 --- a/scripts/markup_oops.pl +++ b/scripts/markup_oops.pl | |||
@@ -184,10 +184,7 @@ if ($target eq "0") { | |||
184 | 184 | ||
185 | # if it's a module, we need to find the .ko file and calculate a load offset | 185 | # if it's a module, we need to find the .ko file and calculate a load offset |
186 | if ($module ne "") { | 186 | if ($module ne "") { |
187 | my $dir = dirname($filename); | 187 | my $modulefile = `modinfo $module | grep '^filename:' | awk '{ print \$2 }'`; |
188 | $dir = $dir . "/"; | ||
189 | my $mod = $module . ".ko"; | ||
190 | my $modulefile = `find $dir -name $mod | head -1`; | ||
191 | chomp($modulefile); | 188 | chomp($modulefile); |
192 | $filename = $modulefile; | 189 | $filename = $modulefile; |
193 | if ($filename eq "") { | 190 | if ($filename eq "") { |
diff --git a/scripts/tags.sh b/scripts/tags.sh index 4a34ec591e8c..d52f7a01557c 100755 --- a/scripts/tags.sh +++ b/scripts/tags.sh | |||
@@ -101,7 +101,8 @@ exuberant() | |||
101 | -I ____cacheline_aligned_in_smp \ | 101 | -I ____cacheline_aligned_in_smp \ |
102 | -I ____cacheline_internodealigned_in_smp \ | 102 | -I ____cacheline_internodealigned_in_smp \ |
103 | -I EXPORT_SYMBOL,EXPORT_SYMBOL_GPL \ | 103 | -I EXPORT_SYMBOL,EXPORT_SYMBOL_GPL \ |
104 | --extra=+f --c-kinds=+px \ | 104 | -I DEFINE_TRACE,EXPORT_TRACEPOINT_SYMBOL,EXPORT_TRACEPOINT_SYMBOL_GPL \ |
105 | --extra=+f --c-kinds=-px \ | ||
105 | --regex-asm='/^ENTRY\(([^)]*)\).*/\1/' \ | 106 | --regex-asm='/^ENTRY\(([^)]*)\).*/\1/' \ |
106 | --regex-c='/^SYSCALL_DEFINE[[:digit:]]?\(([^,)]*).*/sys_\1/' | 107 | --regex-c='/^SYSCALL_DEFINE[[:digit:]]?\(([^,)]*).*/sys_\1/' |
107 | 108 | ||
diff --git a/usr/.gitignore b/usr/.gitignore index 69b2e89fa165..8e48117a3f3d 100644 --- a/usr/.gitignore +++ b/usr/.gitignore | |||
@@ -4,5 +4,7 @@ | |||
4 | gen_init_cpio | 4 | gen_init_cpio |
5 | initramfs_data.cpio | 5 | initramfs_data.cpio |
6 | initramfs_data.cpio.gz | 6 | initramfs_data.cpio.gz |
7 | initramfs_data.cpio.bz2 | ||
8 | initramfs_data.cpio.lzma | ||
7 | initramfs_list | 9 | initramfs_list |
8 | include | 10 | include |
diff --git a/usr/Makefile b/usr/Makefile index 245145a99c10..1e6a9e4a72cc 100644 --- a/usr/Makefile +++ b/usr/Makefile | |||
@@ -6,7 +6,7 @@ klibcdirs:; | |||
6 | PHONY += klibcdirs | 6 | PHONY += klibcdirs |
7 | 7 | ||
8 | 8 | ||
9 | # Gzip, but no bzip2 | 9 | # Gzip |
10 | suffix_$(CONFIG_INITRAMFS_COMPRESSION_GZIP) = .gz | 10 | suffix_$(CONFIG_INITRAMFS_COMPRESSION_GZIP) = .gz |
11 | 11 | ||
12 | # Bzip2 | 12 | # Bzip2 |