Commit 168c7997 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'kbuild-v5.3-2' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild

Pull more Kbuild updates from Masahiro Yamada:

 - match the directory structure of the linux-libc-dev package to that
   of Debian-based distributions

 - fix incorrect include/config/auto.conf generation when Kconfig
   creates it along with the .config file

 - remove misleading $(AS) from documents

 - clean up precious tag files by distclean instead of mrproper

 - add a new coccinelle patch for devm_platform_ioremap_resource
   migration

 - refactor module-related scripts to read modules.order instead of
   $(MODVERDIR)/*.mod files to get the list of created modules

 - remove MODVERDIR

 - update list of header compile-test

 - add -fcf-protection=none flag to avoid conflict with the retpoline
   flags when CONFIG_RETPOLINE=y

 - misc cleanups

* tag 'kbuild-v5.3-2' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild: (25 commits)
  kbuild: add -fcf-protection=none when using retpoline flags
  kbuild: update compile-test header list for v5.3-rc1
  kbuild: split out *.mod out of {single,multi}-used-m rules
  kbuild: remove 'prepare1' target
  kbuild: remove the first line of *.mod files
  kbuild: create *.mod with full directory path and remove MODVERDIR
  kbuild: export_report: read modules.order instead of .tmp_versions/*.mod
  kbuild: modpost: read modules.order instead of $(MODVERDIR)/*.mod
  kbuild: modsign: read modules.order instead of $(MODVERDIR)/*.mod
  kbuild: modinst: read modules.order instead of $(MODVERDIR)/*.mod
  scsi: remove pointless $(MODVERDIR)/$(obj)/53c700.ver
  kbuild: remove duplication from modules.order in sub-directories
  kbuild: get rid of kernel/ prefix from in-tree modules.{order,builtin}
  kbuild: do not create empty modules.order in the prepare stage
  coccinelle: api: add devm_platform_ioremap_resource script
  kbuild: compile-test headers listed in header-test-m as well
  kbuild: remove unused hostcc-option
  kbuild: remove tag files by distclean instead of mrproper
  kbuild: add --hash-style= and --build-id unconditionally
  kbuild: get rid of misleading $(AS) from documents
  ...
parents 18253e03 29be86d7
...@@ -30,6 +30,7 @@ ...@@ -30,6 +30,7 @@
*.lz4 *.lz4
*.lzma *.lzma
*.lzo *.lzo
*.mod
*.mod.c *.mod.c
*.o *.o
*.o.* *.o.*
......
...@@ -30,6 +30,7 @@ ...@@ -30,6 +30,7 @@
*.lzo *.lzo
*.mo *.mo
*.moc *.moc
*.mod
*.mod.c *.mod.c
*.o *.o
*.o.* *.o.*
......
...@@ -38,12 +38,11 @@ Additional options to the assembler (for built-in and modules). ...@@ -38,12 +38,11 @@ Additional options to the assembler (for built-in and modules).
AFLAGS_MODULE AFLAGS_MODULE
------------- -------------
Additional module specific options to use for $(AS). Additional assembler options for modules.
AFLAGS_KERNEL AFLAGS_KERNEL
------------- -------------
Additional options for $(AS) when used for assembler Additional assembler options for built-in.
code for code that is compiled as built-in.
KCFLAGS KCFLAGS
------- -------
......
...@@ -328,7 +328,7 @@ more details, with real examples. ...@@ -328,7 +328,7 @@ more details, with real examples.
variable $(KBUILD_CFLAGS) and uses it for compilation flags for the variable $(KBUILD_CFLAGS) and uses it for compilation flags for the
entire tree. entire tree.
asflags-y specifies options for assembling with $(AS). asflags-y specifies assembler options.
Example:: Example::
...@@ -490,7 +490,7 @@ more details, with real examples. ...@@ -490,7 +490,7 @@ more details, with real examples.
as-instr checks if the assembler reports a specific instruction as-instr checks if the assembler reports a specific instruction
and then outputs either option1 or option2 and then outputs either option1 or option2
C escapes are supported in the test instruction C escapes are supported in the test instruction
Note: as-instr-option uses KBUILD_AFLAGS for $(AS) options Note: as-instr-option uses KBUILD_AFLAGS for assembler options
cc-option cc-option
cc-option is used to check if $(CC) supports a given option, and if cc-option is used to check if $(CC) supports a given option, and if
...@@ -906,7 +906,7 @@ When kbuild executes, the following steps are followed (roughly): ...@@ -906,7 +906,7 @@ When kbuild executes, the following steps are followed (roughly):
vmlinux. The usage of $(call if_changed,xxx) will be described later. vmlinux. The usage of $(call if_changed,xxx) will be described later.
KBUILD_AFLAGS KBUILD_AFLAGS
$(AS) assembler flags Assembler flags
Default value - see top level Makefile Default value - see top level Makefile
Append or modify as required per architecture. Append or modify as required per architecture.
...@@ -949,16 +949,16 @@ When kbuild executes, the following steps are followed (roughly): ...@@ -949,16 +949,16 @@ When kbuild executes, the following steps are followed (roughly):
to 'y' when selected. to 'y' when selected.
KBUILD_AFLAGS_KERNEL KBUILD_AFLAGS_KERNEL
$(AS) options specific for built-in Assembler options specific for built-in
$(KBUILD_AFLAGS_KERNEL) contains extra C compiler flags used to compile $(KBUILD_AFLAGS_KERNEL) contains extra C compiler flags used to compile
resident kernel code. resident kernel code.
KBUILD_AFLAGS_MODULE KBUILD_AFLAGS_MODULE
Options for $(AS) when building modules Assembler options specific for modules
$(KBUILD_AFLAGS_MODULE) is used to add arch-specific options that $(KBUILD_AFLAGS_MODULE) is used to add arch-specific options that
are used for $(AS). are used for assembler.
From commandline AFLAGS_MODULE shall be used (see kbuild.txt). From commandline AFLAGS_MODULE shall be used (see kbuild.txt).
......
...@@ -486,11 +486,6 @@ export KBUILD_AFLAGS_MODULE KBUILD_CFLAGS_MODULE KBUILD_LDFLAGS_MODULE ...@@ -486,11 +486,6 @@ export KBUILD_AFLAGS_MODULE KBUILD_CFLAGS_MODULE KBUILD_LDFLAGS_MODULE
export KBUILD_AFLAGS_KERNEL KBUILD_CFLAGS_KERNEL export KBUILD_AFLAGS_KERNEL KBUILD_CFLAGS_KERNEL
export KBUILD_ARFLAGS export KBUILD_ARFLAGS
# When compiling out-of-tree modules, put MODVERDIR in the module
# tree rather than in the kernel tree. The kernel tree might
# even be read-only.
export MODVERDIR := $(if $(KBUILD_EXTMOD),$(firstword $(KBUILD_EXTMOD))/).tmp_versions
# Files to ignore in find ... statements # Files to ignore in find ... statements
export RCS_FIND_IGNORE := \( -name SCCS -o -name BitKeeper -o -name .svn -o \ export RCS_FIND_IGNORE := \( -name SCCS -o -name BitKeeper -o -name .svn -o \
...@@ -887,6 +882,12 @@ KBUILD_CFLAGS += $(call cc-option,-Werror=designated-init) ...@@ -887,6 +882,12 @@ KBUILD_CFLAGS += $(call cc-option,-Werror=designated-init)
# change __FILE__ to the relative path from the srctree # change __FILE__ to the relative path from the srctree
KBUILD_CFLAGS += $(call cc-option,-fmacro-prefix-map=$(srctree)/=) KBUILD_CFLAGS += $(call cc-option,-fmacro-prefix-map=$(srctree)/=)
# ensure -fcf-protection is disabled when using retpoline as it is
# incompatible with -mindirect-branch=thunk-extern
ifdef CONFIG_RETPOLINE
KBUILD_CFLAGS += $(call cc-option,-fcf-protection=none)
endif
# use the deterministic mode of AR if available # use the deterministic mode of AR if available
KBUILD_ARFLAGS := $(call ar-option,D) KBUILD_ARFLAGS := $(call ar-option,D)
...@@ -900,10 +901,8 @@ KBUILD_CPPFLAGS += $(ARCH_CPPFLAGS) $(KCPPFLAGS) ...@@ -900,10 +901,8 @@ KBUILD_CPPFLAGS += $(ARCH_CPPFLAGS) $(KCPPFLAGS)
KBUILD_AFLAGS += $(ARCH_AFLAGS) $(KAFLAGS) KBUILD_AFLAGS += $(ARCH_AFLAGS) $(KAFLAGS)
KBUILD_CFLAGS += $(ARCH_CFLAGS) $(KCFLAGS) KBUILD_CFLAGS += $(ARCH_CFLAGS) $(KCFLAGS)
# Use --build-id when available. KBUILD_LDFLAGS_MODULE += --build-id
LDFLAGS_BUILD_ID := $(call ld-option, --build-id) LDFLAGS_vmlinux += --build-id
KBUILD_LDFLAGS_MODULE += $(LDFLAGS_BUILD_ID)
LDFLAGS_vmlinux += $(LDFLAGS_BUILD_ID)
ifeq ($(CONFIG_STRIP_ASM_SYMS),y) ifeq ($(CONFIG_STRIP_ASM_SYMS),y)
LDFLAGS_vmlinux += $(call ld-option, -X,) LDFLAGS_vmlinux += $(call ld-option, -X,)
...@@ -1031,8 +1030,8 @@ vmlinux-deps := $(KBUILD_LDS) $(KBUILD_VMLINUX_OBJS) $(KBUILD_VMLINUX_LIBS) ...@@ -1031,8 +1030,8 @@ vmlinux-deps := $(KBUILD_LDS) $(KBUILD_VMLINUX_OBJS) $(KBUILD_VMLINUX_LIBS)
# Recurse until adjust_autoksyms.sh is satisfied # Recurse until adjust_autoksyms.sh is satisfied
PHONY += autoksyms_recursive PHONY += autoksyms_recursive
autoksyms_recursive: $(vmlinux-deps)
ifdef CONFIG_TRIM_UNUSED_KSYMS ifdef CONFIG_TRIM_UNUSED_KSYMS
autoksyms_recursive: $(vmlinux-deps) modules.order
$(Q)$(CONFIG_SHELL) $(srctree)/scripts/adjust_autoksyms.sh \ $(Q)$(CONFIG_SHELL) $(srctree)/scripts/adjust_autoksyms.sh \
"$(MAKE) -f $(srctree)/Makefile vmlinux" "$(MAKE) -f $(srctree)/Makefile vmlinux"
endif endif
...@@ -1074,7 +1073,7 @@ $(sort $(vmlinux-deps)): $(vmlinux-dirs) ; ...@@ -1074,7 +1073,7 @@ $(sort $(vmlinux-deps)): $(vmlinux-dirs) ;
PHONY += $(vmlinux-dirs) PHONY += $(vmlinux-dirs)
$(vmlinux-dirs): prepare $(vmlinux-dirs): prepare
$(Q)$(MAKE) $(build)=$@ need-builtin=1 $(Q)$(MAKE) $(build)=$@ need-builtin=1 need-modorder=1
filechk_kernel.release = \ filechk_kernel.release = \
echo "$(KERNELVERSION)$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree))" echo "$(KERNELVERSION)$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree))"
...@@ -1096,7 +1095,7 @@ scripts: scripts_basic scripts_dtc ...@@ -1096,7 +1095,7 @@ scripts: scripts_basic scripts_dtc
# archprepare is used in arch Makefiles and when processed asm symlink, # archprepare is used in arch Makefiles and when processed asm symlink,
# version.h and scripts_basic is processed / created. # version.h and scripts_basic is processed / created.
PHONY += prepare archprepare prepare1 prepare3 PHONY += prepare archprepare prepare3
# prepare3 is used to check if we are building in a separate output directory, # prepare3 is used to check if we are building in a separate output directory,
# and if so do: # and if so do:
...@@ -1113,11 +1112,8 @@ ifdef building_out_of_srctree ...@@ -1113,11 +1112,8 @@ ifdef building_out_of_srctree
fi; fi;
endif endif
prepare1: prepare3 outputmakefile asm-generic $(version_h) $(autoksyms_h) \ archprepare: archheaders archscripts scripts prepare3 outputmakefile \
include/generated/utsrelease.h asm-generic $(version_h) $(autoksyms_h) include/generated/utsrelease.h
$(cmd_crmodverdir)
archprepare: archheaders archscripts prepare1 scripts
prepare0: archprepare prepare0: archprepare
$(Q)$(MAKE) $(build)=scripts/mod $(Q)$(MAKE) $(build)=scripts/mod
...@@ -1331,8 +1327,8 @@ _modinst_: ...@@ -1331,8 +1327,8 @@ _modinst_:
rm -f $(MODLIB)/build ; \ rm -f $(MODLIB)/build ; \
ln -s $(CURDIR) $(MODLIB)/build ; \ ln -s $(CURDIR) $(MODLIB)/build ; \
fi fi
@cp -f $(objtree)/modules.order $(MODLIB)/ @sed 's:^:kernel/:' modules.order > $(MODLIB)/modules.order
@cp -f $(objtree)/modules.builtin $(MODLIB)/ @sed 's:^:kernel/:' modules.builtin > $(MODLIB)/modules.builtin
@cp -f $(objtree)/modules.builtin.modinfo $(MODLIB)/ @cp -f $(objtree)/modules.builtin.modinfo $(MODLIB)/
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modinst $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modinst
...@@ -1373,18 +1369,22 @@ endif # CONFIG_MODULES ...@@ -1373,18 +1369,22 @@ endif # CONFIG_MODULES
# make distclean Remove editor backup files, patch leftover files and the like # make distclean Remove editor backup files, patch leftover files and the like
# Directories & files removed with 'make clean' # Directories & files removed with 'make clean'
CLEAN_DIRS += $(MODVERDIR) include/ksym CLEAN_DIRS += include/ksym
CLEAN_FILES += modules.builtin.modinfo CLEAN_FILES += modules.builtin.modinfo
# Directories & files removed with 'make mrproper' # Directories & files removed with 'make mrproper'
MRPROPER_DIRS += include/config include/generated \ MRPROPER_DIRS += include/config include/generated \
arch/$(SRCARCH)/include/generated .tmp_objdiff arch/$(SRCARCH)/include/generated .tmp_objdiff
MRPROPER_FILES += .config .config.old .version \ MRPROPER_FILES += .config .config.old .version \
Module.symvers tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS \ Module.symvers \
signing_key.pem signing_key.priv signing_key.x509 \ signing_key.pem signing_key.priv signing_key.x509 \
x509.genkey extra_certificates signing_key.x509.keyid \ x509.genkey extra_certificates signing_key.x509.keyid \
signing_key.x509.signer vmlinux-gdb.py signing_key.x509.signer vmlinux-gdb.py
# Directories & files removed with 'make distclean'
DISTCLEAN_DIRS +=
DISTCLEAN_FILES += tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS
# clean - Delete most, but leave enough to build external modules # clean - Delete most, but leave enough to build external modules
# #
clean: rm-dirs := $(CLEAN_DIRS) clean: rm-dirs := $(CLEAN_DIRS)
...@@ -1417,9 +1417,14 @@ mrproper: clean $(mrproper-dirs) ...@@ -1417,9 +1417,14 @@ mrproper: clean $(mrproper-dirs)
# distclean # distclean
# #
distclean: rm-dirs := $(wildcard $(DISTCLEAN_DIRS))
distclean: rm-files := $(wildcard $(DISTCLEAN_FILES))
PHONY += distclean PHONY += distclean
distclean: mrproper distclean: mrproper
$(call cmd,rmdirs)
$(call cmd,rmfiles)
@find $(srctree) $(RCS_FIND_IGNORE) \ @find $(srctree) $(RCS_FIND_IGNORE) \
\( -name '*.orig' -o -name '*.rej' -o -name '*~' \ \( -name '*.orig' -o -name '*.rej' -o -name '*~' \
-o -name '*.bak' -o -name '#*#' -o -name '*%' \ -o -name '*.bak' -o -name '#*#' -o -name '*%' \
...@@ -1609,7 +1614,7 @@ $(objtree)/Module.symvers: ...@@ -1609,7 +1614,7 @@ $(objtree)/Module.symvers:
module-dirs := $(addprefix _module_,$(KBUILD_EXTMOD)) module-dirs := $(addprefix _module_,$(KBUILD_EXTMOD))
PHONY += $(module-dirs) modules PHONY += $(module-dirs) modules
$(module-dirs): prepare $(objtree)/Module.symvers $(module-dirs): prepare $(objtree)/Module.symvers
$(Q)$(MAKE) $(build)=$(patsubst _module_%,%,$@) $(Q)$(MAKE) $(build)=$(patsubst _module_%,%,$@) need-modorder=1
modules: $(module-dirs) modules: $(module-dirs)
@$(kecho) ' Building modules, stage 2.'; @$(kecho) ' Building modules, stage 2.';
...@@ -1634,7 +1639,6 @@ PHONY += $(clean-dirs) clean ...@@ -1634,7 +1639,6 @@ PHONY += $(clean-dirs) clean
$(clean-dirs): $(clean-dirs):
$(Q)$(MAKE) $(clean)=$(patsubst _clean_%,%,$@) $(Q)$(MAKE) $(clean)=$(patsubst _clean_%,%,$@)
clean: rm-dirs := $(MODVERDIR)
clean: rm-files := $(KBUILD_EXTMOD)/Module.symvers clean: rm-files := $(KBUILD_EXTMOD)/Module.symvers
PHONY += help PHONY += help
...@@ -1648,8 +1652,6 @@ help: ...@@ -1648,8 +1652,6 @@ help:
@echo '' @echo ''
PHONY += prepare PHONY += prepare
prepare:
$(cmd_crmodverdir)
endif # KBUILD_EXTMOD endif # KBUILD_EXTMOD
clean: $(clean-dirs) clean: $(clean-dirs)
...@@ -1660,7 +1662,7 @@ clean: $(clean-dirs) ...@@ -1660,7 +1662,7 @@ clean: $(clean-dirs)
-o -name '*.ko.*' \ -o -name '*.ko.*' \
-o -name '*.dtb' -o -name '*.dtb.S' -o -name '*.dt.yaml' \ -o -name '*.dtb' -o -name '*.dtb.S' -o -name '*.dt.yaml' \
-o -name '*.dwo' -o -name '*.lst' \ -o -name '*.dwo' -o -name '*.lst' \
-o -name '*.su' \ -o -name '*.su' -o -name '*.mod' \
-o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \ -o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \
-o -name '*.lex.c' -o -name '*.tab.[ch]' \ -o -name '*.lex.c' -o -name '*.tab.[ch]' \
-o -name '*.asn1.[ch]' \ -o -name '*.asn1.[ch]' \
...@@ -1765,8 +1767,6 @@ build-dir = $(patsubst %/,%,$(dir $(build-target))) ...@@ -1765,8 +1767,6 @@ build-dir = $(patsubst %/,%,$(dir $(build-target)))
$(Q)$(MAKE) $(build)=$(build-dir) $(build-target) $(Q)$(MAKE) $(build)=$(build-dir) $(build-target)
%.symtypes: prepare FORCE %.symtypes: prepare FORCE
$(Q)$(MAKE) $(build)=$(build-dir) $(build-target) $(Q)$(MAKE) $(build)=$(build-dir) $(build-target)
%.ko: %.o
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
# Modules # Modules
PHONY += / PHONY += /
...@@ -1789,11 +1789,6 @@ quiet_cmd_depmod = DEPMOD $(KERNELRELEASE) ...@@ -1789,11 +1789,6 @@ quiet_cmd_depmod = DEPMOD $(KERNELRELEASE)
cmd_depmod = $(CONFIG_SHELL) $(srctree)/scripts/depmod.sh $(DEPMOD) \ cmd_depmod = $(CONFIG_SHELL) $(srctree)/scripts/depmod.sh $(DEPMOD) \
$(KERNELRELEASE) $(KERNELRELEASE)
# Create temporary dir for module support files
# clean it up only when building all modules
cmd_crmodverdir = $(Q)mkdir -p $(MODVERDIR) \
$(if $(KBUILD_MODULES),; rm -f $(MODVERDIR)/*)
# read saved command lines for existing targets # read saved command lines for existing targets
existing-targets := $(wildcard $(sort $(targets))) existing-targets := $(wildcard $(sort $(targets)))
......
...@@ -13,8 +13,7 @@ ccflags-y += -DDISABLE_BRANCH_PROFILING ...@@ -13,8 +13,7 @@ ccflags-y += -DDISABLE_BRANCH_PROFILING
ldflags-$(CONFIG_CPU_ENDIAN_BE8) := --be8 ldflags-$(CONFIG_CPU_ENDIAN_BE8) := --be8
ldflags-y := -Bsymbolic --no-undefined -soname=linux-vdso.so.1 \ ldflags-y := -Bsymbolic --no-undefined -soname=linux-vdso.so.1 \
-z max-page-size=4096 -nostdlib -shared $(ldflags-y) \ -z max-page-size=4096 -nostdlib -shared $(ldflags-y) \
$(call ld-option, --hash-style=sysv) \ --hash-style=sysv --build-id \
$(call ld-option, --build-id) \
-T -T
obj-$(CONFIG_VDSO) += vdso.o obj-$(CONFIG_VDSO) += vdso.o
......
...@@ -96,8 +96,8 @@ VDSO_LDFLAGS := $(VDSO_CPPFLAGS) ...@@ -96,8 +96,8 @@ VDSO_LDFLAGS := $(VDSO_CPPFLAGS)
VDSO_LDFLAGS += -Wl,-Bsymbolic -Wl,--no-undefined -Wl,-soname=linux-vdso.so.1 VDSO_LDFLAGS += -Wl,-Bsymbolic -Wl,--no-undefined -Wl,-soname=linux-vdso.so.1
VDSO_LDFLAGS += -Wl,-z,max-page-size=4096 -Wl,-z,common-page-size=4096 VDSO_LDFLAGS += -Wl,-z,max-page-size=4096 -Wl,-z,common-page-size=4096
VDSO_LDFLAGS += -nostdlib -shared -mfloat-abi=soft VDSO_LDFLAGS += -nostdlib -shared -mfloat-abi=soft
VDSO_LDFLAGS += $(call cc32-ldoption,-Wl$(comma)--hash-style=sysv) VDSO_LDFLAGS += -Wl,--hash-style=sysv
VDSO_LDFLAGS += $(call cc32-ldoption,-Wl$(comma)--build-id) VDSO_LDFLAGS += -Wl,--build-id
VDSO_LDFLAGS += $(call cc32-ldoption,-fuse-ld=bfd) VDSO_LDFLAGS += $(call cc32-ldoption,-fuse-ld=bfd)
......
...@@ -34,8 +34,6 @@ else ...@@ -34,8 +34,6 @@ else
KBUILD_LDFLAGS += -melf32lriscv KBUILD_LDFLAGS += -melf32lriscv
endif endif
KBUILD_CFLAGS += -Wall
# ISA string setting # ISA string setting
riscv-march-$(CONFIG_ARCH_RV32I) := rv32ima riscv-march-$(CONFIG_ARCH_RV32I) := rv32ima
riscv-march-$(CONFIG_ARCH_RV64I) := rv64ima riscv-march-$(CONFIG_ARCH_RV64I) := rv64ima
......
...@@ -115,8 +115,7 @@ quiet_cmd_vdso = VDSO $@ ...@@ -115,8 +115,7 @@ quiet_cmd_vdso = VDSO $@
-T $(filter %.lds,$^) $(filter %.o,$^) && \ -T $(filter %.lds,$^) $(filter %.o,$^) && \
sh $(srctree)/$(src)/checkundef.sh '$(OBJDUMP)' '$@' sh $(srctree)/$(src)/checkundef.sh '$(OBJDUMP)' '$@'
VDSO_LDFLAGS = -shared $(call ld-option, --hash-style=both) \ VDSO_LDFLAGS = -shared --hash-style=both --build-id -Bsymbolic
$(call ld-option, --build-id) -Bsymbolic
GCOV_PROFILE := n GCOV_PROFILE := n
# #
......
...@@ -176,9 +176,8 @@ quiet_cmd_vdso = VDSO $@ ...@@ -176,9 +176,8 @@ quiet_cmd_vdso = VDSO $@
-T $(filter %.lds,$^) $(filter %.o,$^) && \ -T $(filter %.lds,$^) $(filter %.o,$^) && \
sh $(srctree)/$(src)/checkundef.sh '$(NM)' '$@' sh $(srctree)/$(src)/checkundef.sh '$(NM)' '$@'
VDSO_LDFLAGS = -shared $(call ld-option, --hash-style=both) \ VDSO_LDFLAGS = -shared --hash-style=both --build-id \
$(call ld-option, --build-id) $(call ld-option, --eh-frame-hdr) \ $(call ld-option, --eh-frame-hdr) -Bsymbolic
-Bsymbolic
GCOV_PROFILE := n GCOV_PROFILE := n
quiet_cmd_vdso_and_check = VDSO $@ quiet_cmd_vdso_and_check = VDSO $@
......
ti-emif-asm-offsets.h
...@@ -29,9 +29,10 @@ ti-emif-sram-objs := ti-emif-pm.o ti-emif-sram-pm.o ...@@ -29,9 +29,10 @@ ti-emif-sram-objs := ti-emif-pm.o ti-emif-sram-pm.o
AFLAGS_ti-emif-sram-pm.o :=-Wa,-march=armv7-a AFLAGS_ti-emif-sram-pm.o :=-Wa,-march=armv7-a
drivers/memory/ti-emif-sram-pm.o: include/generated/ti-emif-asm-offsets.h $(obj)/ti-emif-sram-pm.o: $(obj)/ti-emif-asm-offsets.h
include/generated/ti-emif-asm-offsets.h: drivers/memory/emif-asm-offsets.s FORCE $(obj)/ti-emif-asm-offsets.h: $(obj)/emif-asm-offsets.s FORCE
$(call filechk,offsets,__TI_EMIF_ASM_OFFSETS_H__) $(call filechk,offsets,__TI_EMIF_ASM_OFFSETS_H__)
targets += emif-asm-offsets.s targets += emif-asm-offsets.s
clean-files += ti-emif-asm-offsets.h
...@@ -14,12 +14,12 @@ ...@@ -14,12 +14,12 @@
* GNU General Public License for more details. * GNU General Public License for more details.
*/ */
#include <generated/ti-emif-asm-offsets.h>
#include <linux/linkage.h> #include <linux/linkage.h>
#include <asm/assembler.h> #include <asm/assembler.h>
#include <asm/memory.h> #include <asm/memory.h>
#include "emif.h" #include "emif.h"
#include "ti-emif-asm-offsets.h"
#define EMIF_POWER_MGMT_WAIT_SELF_REFRESH_8192_CYCLES 0x00a0 #define EMIF_POWER_MGMT_WAIT_SELF_REFRESH_8192_CYCLES 0x00a0
#define EMIF_POWER_MGMT_SR_TIMER_MASK 0x00f0 #define EMIF_POWER_MGMT_SR_TIMER_MASK 0x00f0
......
...@@ -185,7 +185,7 @@ zalon7xx-objs := zalon.o ncr53c8xx.o ...@@ -185,7 +185,7 @@ zalon7xx-objs := zalon.o ncr53c8xx.o
# Files generated that shall be removed upon make clean # Files generated that shall be removed upon make clean
clean-files := 53c700_d.h 53c700_u.h scsi_devinfo_tbl.c clean-files := 53c700_d.h 53c700_u.h scsi_devinfo_tbl.c
$(obj)/53c700.o $(MODVERDIR)/$(obj)/53c700.ver: $(obj)/53c700_d.h $(obj)/53c700.o: $(obj)/53c700_d.h
$(obj)/scsi_sysfs.o: $(obj)/scsi_devinfo_tbl.c $(obj)/scsi_sysfs.o: $(obj)/scsi_devinfo_tbl.c
......
...@@ -31,7 +31,7 @@ header-test- += acpi/platform/acintel.h ...@@ -31,7 +31,7 @@ header-test- += acpi/platform/acintel.h
header-test- += acpi/platform/aclinux.h header-test- += acpi/platform/aclinux.h
header-test- += acpi/platform/aclinuxex.h header-test- += acpi/platform/aclinuxex.h
header-test- += acpi/processor.h header-test- += acpi/processor.h
header-test- += clocksource/hyperv_timer.h header-test-$(CONFIG_X86) += clocksource/hyperv_timer.h
header-test- += clocksource/timer-sp804.h header-test- += clocksource/timer-sp804.h
header-test- += crypto/cast_common.h header-test- += crypto/cast_common.h
header-test- += crypto/internal/cryptouser.h header-test- += crypto/internal/cryptouser.h
...@@ -246,6 +246,7 @@ header-test- += linux/intel-pti.h ...@@ -246,6 +246,7 @@ header-test- += linux/intel-pti.h
header-test- += linux/intel-svm.h header-test- += linux/intel-svm.h
header-test- += linux/interconnect-provider.h header-test- += linux/interconnect-provider.h
header-test- += linux/ioc3.h header-test- += linux/ioc3.h
header-test-$(CONFIG_BLOCK) += linux/iomap.h
header-test- += linux/ipack.h header-test- += linux/ipack.h
header-test- += linux/irq_cpustat.h header-test- += linux/irq_cpustat.h
header-test- += linux/irq_poll.h header-test- += linux/irq_poll.h
...@@ -454,9 +455,6 @@ header-test- += linux/phy/omap_control_phy.h ...@@ -454,9 +455,6 @@ header-test- += linux/phy/omap_control_phy.h
header-test- += linux/phy/tegra/xusb.h header-test- += linux/phy/tegra/xusb.h
header-test- += linux/phy/ulpi_phy.h header-test- += linux/phy/ulpi_phy.h
header-test- += linux/phy_fixed.h header-test- += linux/phy_fixed.h
header-test- += linux/pinctrl/pinconf-generic.h
header-test- += linux/pinctrl/pinconf.h
header-test- += linux/pinctrl/pinctrl.h
header-test- += linux/pipe_fs_i.h header-test- += linux/pipe_fs_i.h
header-test- += linux/pktcdvd.h header-test- += linux/pktcdvd.h
header-test- += linux/pl320-ipc.h header-test- += linux/pl320-ipc.h
...@@ -905,10 +903,11 @@ header-test- += net/netfilter/nf_nat_redirect.h ...@@ -905,10 +903,11 @@ header-test- += net/netfilter/nf_nat_redirect.h
header-test- += net/netfilter/nf_queue.h header-test- += net/netfilter/nf_queue.h
header-test- += net/netfilter/nf_reject.h header-test- += net/netfilter/nf_reject.h
header-test- += net/netfilter/nf_synproxy.h header-test- += net/netfilter/nf_synproxy.h
header-test- += net/netfilter/nf_tables.h header-test-$(CONFIG_NF_TABLES) += net/netfilter/nf_tables.h
header-test- += net/netfilter/nf_tables_core.h header-test-$(CONFIG_NF_TABLES) += net/netfilter/nf_tables_core.h
header-test- += net/netfilter/nf_tables_ipv4.h header-test-$(CONFIG_NF_TABLES) += net/netfilter/nf_tables_ipv4.h
header-test- += net/netfilter/nf_tables_ipv6.h header-test- += net/netfilter/nf_tables_ipv6.h
header-test-$(CONFIG_NF_TABLES) += net/netfilter/nf_tables_offload.h
header-test- += net/netfilter/nft_fib.h header-test- += net/netfilter/nft_fib.h
header-test- += net/netfilter/nft_meta.h header-test- += net/netfilter/nft_meta.h
header-test- += net/netfilter/nft_reject.h header-test- += net/netfilter/nft_reject.h
...@@ -949,7 +948,6 @@ header-test- += pcmcia/ds.h ...@@ -949,7 +948,6 @@ header-test- += pcmcia/ds.h
header-test- += rdma/ib.h header-test- += rdma/ib.h
header-test- += rdma/iw_portmap.h header-test- += rdma/iw_portmap.h
header-test- += rdma/opa_port_info.h header-test- += rdma/opa_port_info.h
header-test- += rdma/rdma_counter.h
header-test- += rdma/rdmavt_cq.h header-test- += rdma/rdmavt_cq.h
header-test- += rdma/restrack.h header-test- += rdma/restrack.h
header-test- += rdma/signature.h header-test- += rdma/signature.h
......
...@@ -353,23 +353,13 @@ config DEBUG_SECTION_MISMATCH ...@@ -353,23 +353,13 @@ config DEBUG_SECTION_MISMATCH
which results in the code/data being placed in specific sections. which results in the code/data being placed in specific sections.
The section mismatch analysis is always performed after a full The section mismatch analysis is always performed after a full
kernel build, and enabling this option causes the following kernel build, and enabling this option causes the following
additional steps to occur: additional step to occur:
- Add the option -fno-inline-functions-called-once to gcc commands. - Add the option -fno-inline-functions-called-once to gcc commands.
When inlining a function annotated with __init in a non-init When inlining a function annotated with __init in a non-init
function, we would lose the section information and thus function, we would lose the section information and thus
the analysis would not catch the illegal reference. the analysis would not catch the illegal reference.
This option tells gcc to inline less (but it does result in This option tells gcc to inline less (but it does result in
a larger kernel). a larger kernel).
- Run the section mismatch analysis for each module/built-in.a file.
When we run the section mismatch analysis on vmlinux.o, we
lose valuable information about where the mismatch was
introduced.
Running the analysis for each module/built-in.a file
tells where the mismatch happens much closer to the
source. The drawback is that the same mismatch is
reported at least twice.
- Enable verbose reporting from modpost in order to help resolve
the section mismatches that are reported.
config SECTION_MISMATCH_WARN_ONLY config SECTION_MISMATCH_WARN_ONLY
bool "Make section mismatch errors non-fatal" bool "Make section mismatch errors non-fatal"
......
...@@ -125,11 +125,6 @@ CC_OPTION_CFLAGS = $(filter-out $(GCC_PLUGINS_CFLAGS),$(KBUILD_CFLAGS)) ...@@ -125,11 +125,6 @@ CC_OPTION_CFLAGS = $(filter-out $(GCC_PLUGINS_CFLAGS),$(KBUILD_CFLAGS))
cc-option = $(call __cc-option, $(CC),\ cc-option = $(call __cc-option, $(CC),\
$(KBUILD_CPPFLAGS) $(CC_OPTION_CFLAGS),$(1),$(2)) $(KBUILD_CPPFLAGS) $(CC_OPTION_CFLAGS),$(1),$(2))
# hostcc-option
# Usage: cflags-y += $(call hostcc-option,-march=winchip-c6,-march=i586)
hostcc-option = $(call __cc-option, $(HOSTCC),\
$(KBUILD_HOSTCFLAGS) $(HOST_EXTRACFLAGS),$(1),$(2))
# cc-option-yn # cc-option-yn
# Usage: flag := $(call cc-option-yn,-march=winchip-c6) # Usage: flag := $(call cc-option-yn,-march=winchip-c6)
cc-option-yn = $(call try-run,\ cc-option-yn = $(call try-run,\
......
...@@ -63,14 +63,14 @@ ifneq ($(strip $(real-obj-y) $(need-builtin)),) ...@@ -63,14 +63,14 @@ ifneq ($(strip $(real-obj-y) $(need-builtin)),)
builtin-target := $(obj)/built-in.a builtin-target := $(obj)/built-in.a
endif endif
ifdef CONFIG_MODULES ifeq ($(CONFIG_MODULES)$(need-modorder),y1)
modorder-target := $(obj)/modules.order modorder-target := $(obj)/modules.order
endif endif
# We keep a list of all modules in $(MODVERDIR) mod-targets := $(patsubst %.o, %.mod, $(obj-m))
__build: $(if $(KBUILD_BUILTIN),$(builtin-target) $(lib-target) $(extra-y)) \ __build: $(if $(KBUILD_BUILTIN),$(builtin-target) $(lib-target) $(extra-y)) \
$(if $(KBUILD_MODULES),$(obj-m) $(modorder-target)) \ $(if $(KBUILD_MODULES),$(obj-m) $(mod-targets) $(modorder-target)) \
$(subdir-ym) $(always) $(subdir-ym) $(always)
@: @:
...@@ -87,11 +87,6 @@ ifneq ($(KBUILD_ENABLE_EXTRA_GCC_CHECKS),) ...@@ -87,11 +87,6 @@ ifneq ($(KBUILD_ENABLE_EXTRA_GCC_CHECKS),)
cmd_checkdoc = $(srctree)/scripts/kernel-doc -none $< cmd_checkdoc = $(srctree)/scripts/kernel-doc -none $<
endif endif
# Do section mismatch analysis for each module/built-in.a
ifdef CONFIG_DEBUG_SECTION_MISMATCH
cmd_secanalysis = ; scripts/mod/modpost $@
endif
# Compile C sources (.c) # Compile C sources (.c)
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
...@@ -268,7 +263,7 @@ endef ...@@ -268,7 +263,7 @@ endef
# List module undefined symbols (or empty line if not enabled) # List module undefined symbols (or empty line if not enabled)
ifdef CONFIG_TRIM_UNUSED_KSYMS ifdef CONFIG_TRIM_UNUSED_KSYMS
cmd_undef_syms = $(NM) $@ | sed -n 's/^ *U //p' | xargs echo cmd_undef_syms = $(NM) $< | sed -n 's/^ *U //p' | xargs echo
else else
cmd_undef_syms = echo cmd_undef_syms = echo
endif endif
...@@ -278,13 +273,15 @@ $(obj)/%.o: $(src)/%.c $(recordmcount_source) $(objtool_dep) FORCE ...@@ -278,13 +273,15 @@ $(obj)/%.o: $(src)/%.c $(recordmcount_source) $(objtool_dep) FORCE
$(call cmd,force_checksrc) $(call cmd,force_checksrc)
$(call if_changed_rule,cc_o_c) $(call if_changed_rule,cc_o_c)
# Single-part modules are special since we need to mark them in $(MODVERDIR) cmd_mod = { \
echo $(if $($*-objs)$($*-y)$($*-m), $(addprefix $(obj)/, $($*-objs) $($*-y) $($*-m)), $(@:.mod=.o)); \
$(cmd_undef_syms); \
} > $@
$(single-used-m): $(obj)/%.o: $(src)/%.c $(recordmcount_source) $(objtool_dep) FORCE $(obj)/%.mod: $(obj)/%.o FORCE
$(call cmd,force_checksrc) $(call if_changed,mod)
$(call if_changed_rule,cc_o_c)
@{ echo $(@:.o=.ko); echo $@; \ targets += $(mod-targets)
$(cmd_undef_syms); } > $(MODVERDIR)/$(@F:.o=.mod)
quiet_cmd_cc_lst_c = MKLST $@ quiet_cmd_cc_lst_c = MKLST $@
cmd_cc_lst_c = $(CC) $(c_flags) -g -c -o $*.o $< && \ cmd_cc_lst_c = $(CC) $(c_flags) -g -c -o $*.o $< && \
...@@ -294,7 +291,7 @@ quiet_cmd_cc_lst_c = MKLST $@ ...@@ -294,7 +291,7 @@ quiet_cmd_cc_lst_c = MKLST $@
$(obj)/%.lst: $(src)/%.c FORCE $(obj)/%.lst: $(src)/%.c FORCE
$(call if_changed_dep,cc_lst_c) $(call if_changed_dep,cc_lst_c)
# header test (header-test-y target) # header test (header-test-y, header-test-m target)
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
quiet_cmd_cc_s_h = CC $@ quiet_cmd_cc_s_h = CC $@
...@@ -423,13 +420,10 @@ endif # builtin-target ...@@ -423,13 +420,10 @@ endif # builtin-target
# #
# Create commands to either record .ko file or cat modules.order from # Create commands to either record .ko file or cat modules.order from
# a subdirectory # a subdirectory
modorder-cmds = \
$(foreach m, $(modorder), \
$(if $(filter %/modules.order, $m), \
cat $m;, echo kernel/$m;))
$(modorder-target): $(subdir-ym) FORCE $(modorder-target): $(subdir-ym) FORCE
$(Q)(cat /dev/null; $(modorder-cmds)) > $@ $(Q){ $(foreach m, $(modorder), \
$(if $(filter %/modules.order, $m), cat $m, echo $m);) :; } \
| $(AWK) '!x[$$0]++' - > $@
# #
# Rule to compile a set of .o files into one .a file (with symbol table) # Rule to compile a set of .o files into one .a file (with symbol table)
...@@ -464,12 +458,10 @@ endif ...@@ -464,12 +458,10 @@ endif
# module is turned into a multi object module, $^ will contain header file # module is turned into a multi object module, $^ will contain header file
# dependencies recorded in the .*.cmd file. # dependencies recorded in the .*.cmd file.
quiet_cmd_link_multi-m = LD [M] $@ quiet_cmd_link_multi-m = LD [M] $@
cmd_link_multi-m = $(LD) $(ld_flags) -r -o $@ $(filter %.o,$^) $(cmd_secanalysis) cmd_link_multi-m = $(LD) $(ld_flags) -r -o $@ $(filter %.o,$^)
$(multi-used-m): FORCE $(multi-used-m): FORCE
$(call if_changed,link_multi-m) $(call if_changed,link_multi-m)
@{ echo $(@:.o=.ko); echo $(filter %.o,$^); \
$(cmd_undef_syms); } > $(MODVERDIR)/$(@F:.o=.mod)
$(call multi_depend, $(multi-used-m), .o, -objs -y -m) $(call multi_depend, $(multi-used-m), .o, -objs -y -m)
targets += $(multi-used-m) targets += $(multi-used-m)
......
...@@ -78,7 +78,7 @@ header-test-y += $(filter-out $(header-test-), \ ...@@ -78,7 +78,7 @@ header-test-y += $(filter-out $(header-test-), \
$(wildcard $(addprefix $(srctree)/$(src)/, \ $(wildcard $(addprefix $(srctree)/$(src)/, \
$(header-test-pattern-y))))) $(header-test-pattern-y)))))
extra-$(CONFIG_HEADER_TEST) += $(addsuffix .s, $(header-test-y)) extra-$(CONFIG_HEADER_TEST) += $(addsuffix .s, $(header-test-y) $(header-test-m))
# Add subdir path # Add subdir path
......
...@@ -40,7 +40,7 @@ __modbuiltin: $(modbuiltin-target) $(subdir-ym) ...@@ -40,7 +40,7 @@ __modbuiltin: $(modbuiltin-target) $(subdir-ym)
@: @:
$(modbuiltin-target): $(subdir-ym) FORCE $(modbuiltin-target): $(subdir-ym) FORCE
$(Q)(for m in $(modbuiltin-mods); do echo kernel/$$m; done; \ $(Q)(for m in $(modbuiltin-mods); do echo $$m; done; \
cat /dev/null $(modbuiltin-subdirs)) > $@ cat /dev/null $(modbuiltin-subdirs)) > $@
PHONY += FORCE PHONY += FORCE
......
...@@ -8,10 +8,7 @@ __modinst: ...@@ -8,10 +8,7 @@ __modinst:
include scripts/Kbuild.include include scripts/Kbuild.include
# modules := $(sort $(shell cat $(if $(KBUILD_EXTMOD),$(KBUILD_EXTMOD)/)modules.order))
__modules := $(sort $(shell grep -h '\.ko$$' /dev/null $(wildcard $(MODVERDIR)/*.mod)))
modules := $(patsubst %.o,%.ko,$(wildcard $(__modules:.ko=.o)))
PHONY += $(modules) PHONY += $(modules)
__modinst: $(modules) __modinst: $(modules)
......
...@@ -6,11 +6,12 @@ ...@@ -6,11 +6,12 @@
# Stage one of module building created the following: # Stage one of module building created the following:
# a) The individual .o files used for the module # a) The individual .o files used for the module
# b) A <module>.o file which is the .o files above linked together # b) A <module>.o file which is the .o files above linked together
# c) A <module>.mod file in $(MODVERDIR)/, listing the name of the # c) A <module>.mod file, listing the name of the preliminary <module>.o file,
# the preliminary <module>.o file, plus all .o files # plus all .o files
# d) modules.order, which lists all the modules
# Stage 2 is handled by this file and does the following # Stage 2 is handled by this file and does the following
# 1) Find all modules from the files listed in $(MODVERDIR)/ # 1) Find all modules listed in modules.order
# 2) modpost is then used to # 2) modpost is then used to
# 3) create one <module>.mod.c file pr. module # 3) create one <module>.mod.c file pr. module
# 4) create one Module.symvers file with CRC for all exported symbols # 4) create one Module.symvers file with CRC for all exported symbols
...@@ -60,10 +61,12 @@ include scripts/Makefile.lib ...@@ -60,10 +61,12 @@ include scripts/Makefile.lib
kernelsymfile := $(objtree)/Module.symvers kernelsymfile := $(objtree)/Module.symvers
modulesymfile := $(firstword $(KBUILD_EXTMOD))/Module.symvers modulesymfile := $(firstword $(KBUILD_EXTMOD))/Module.symvers
# Step 1), find all modules listed in $(MODVERDIR)/ modorder := $(if $(KBUILD_EXTMOD),$(KBUILD_EXTMOD)/)modules.order
MODLISTCMD := find $(MODVERDIR) -name '*.mod' | xargs -r grep -h '\.ko$$' | sort -u
__modules := $(shell $(MODLISTCMD)) # Step 1), find all modules listed in modules.order
modules := $(patsubst %.o,%.ko, $(wildcard $(__modules:.ko=.o))) ifdef CONFIG_MODULES
modules := $(sort $(shell cat $(modorder)))
endif
# Stop after building .o files if NOFINAL is set. Makes compile tests quicker # Stop after building .o files if NOFINAL is set. Makes compile tests quicker
_modpost: $(if $(KBUILD_MODPOST_NOFINAL), $(modules:.ko:.o),$(modules)) _modpost: $(if $(KBUILD_MODPOST_NOFINAL), $(modules:.ko:.o),$(modules))
...@@ -84,7 +87,7 @@ MODPOST_OPT=$(subst -i,-n,$(filter -i,$(MAKEFLAGS))) ...@@ -84,7 +87,7 @@ MODPOST_OPT=$(subst -i,-n,$(filter -i,$(MAKEFLAGS)))
# We can go over command line length here, so be careful. # We can go over command line length here, so be careful.
quiet_cmd_modpost = MODPOST $(words $(filter-out vmlinux FORCE, $^)) modules quiet_cmd_modpost = MODPOST $(words $(filter-out vmlinux FORCE, $^)) modules
cmd_modpost = $(MODLISTCMD) | sed 's/\.ko$$/.o/' | $(modpost) $(MODPOST_OPT) -s -T - cmd_modpost = sed 's/ko$$/o/' $(modorder) | $(modpost) $(MODPOST_OPT) -s -T -
PHONY += __modpost PHONY += __modpost
__modpost: $(modules:.ko=.o) FORCE __modpost: $(modules:.ko=.o) FORCE
......
...@@ -8,8 +8,7 @@ __modsign: ...@@ -8,8 +8,7 @@ __modsign:
include scripts/Kbuild.include include scripts/Kbuild.include
__modules := $(sort $(shell grep -h '\.ko$$' /dev/null $(wildcard $(MODVERDIR)/*.mod))) modules := $(sort $(shell cat modules.order))
modules := $(patsubst %.o,%.ko,$(wildcard $(__modules:.ko=.o)))
PHONY += $(modules) PHONY += $(modules)
__modsign: $(modules) __modsign: $(modules)
......
...@@ -8,8 +8,7 @@ ...@@ -8,8 +8,7 @@
# #
# Create/update the include/generated/autoksyms.h file from the list # Create/update the include/generated/autoksyms.h file from the list
# of all module's needed symbols as recorded on the third line of # of all module's needed symbols as recorded on the second line of *.mod files.
# .tmp_versions/*.mod files.
# #
# For each symbol being added or removed, the corresponding dependency # For each symbol being added or removed, the corresponding dependency
# file's timestamp is updated to force a rebuild of the affected source # file's timestamp is updated to force a rebuild of the affected source
...@@ -47,13 +46,10 @@ cat > "$new_ksyms_file" << EOT ...@@ -47,13 +46,10 @@ cat > "$new_ksyms_file" << EOT
*/ */
EOT EOT
[ "$(ls -A "$MODVERDIR")" ] && sed 's/ko$/mod/' modules.order |
for mod in "$MODVERDIR"/*.mod; do xargs -n1 sed -n -e '2{s/ /\n/g;/^$/!p;}' -- |
sed -n -e '3{s/ /\n/g;/^$/!p;}' "$mod" sort -u |
done | sort -u | sed -e 's/\(.*\)/#define __KSYM_\1 1/' >> "$new_ksyms_file"
while read sym; do
echo "#define __KSYM_${sym} 1"
done >> "$new_ksyms_file"
# Special case for modversions (see modpost.c) # Special case for modversions (see modpost.c)
if [ -n "$CONFIG_MODVERSIONS" ]; then if [ -n "$CONFIG_MODVERSIONS" ]; then
......
// SPDX-License-Identifier: GPL-2.0
/// Use devm_platform_ioremap_resource helper which wraps
/// platform_get_resource() and devm_ioremap_resource() together.
///
// Confidence: High
// Copyright: (C) 2019 Himanshu Jha GPLv2.
// Copyright: (C) 2019 Julia Lawall, Inria/LIP6. GPLv2.
// Keywords: platform_get_resource, devm_ioremap_resource,
// Keywords: devm_platform_ioremap_resource
virtual patch
virtual report
@r depends on patch && !report@
expression e1, e2, arg1, arg2, arg3;
identifier id;
@@
(
- id = platform_get_resource(arg1, IORESOURCE_MEM, arg2);
|
- struct resource *id = platform_get_resource(arg1, IORESOURCE_MEM, arg2);
)
... when != id
- e1 = devm_ioremap_resource(arg3, id);
+ e1 = devm_platform_ioremap_resource(arg1, arg2);
... when != id
? id = e2
@r1 depends on patch && !report@
identifier r.id;
type T;
@@
- T *id;
...when != id
@r2 depends on report && !patch@
identifier id;
expression e1, e2, arg1, arg2, arg3;
position j0;
@@
(
id = platform_get_resource(arg1, IORESOURCE_MEM, arg2);
|
struct resource *id = platform_get_resource(arg1, IORESOURCE_MEM, arg2);
)
... when != id
e1@j0 = devm_ioremap_resource(arg3, id);
... when != id
? id = e2
@script:python depends on report && !patch@
e1 << r2.e1;
j0 << r2.j0;
@@
msg = "WARNING: Use devm_platform_ioremap_resource for %s" % (e1)
coccilib.report.print_report(j0[0], msg)
...@@ -52,13 +52,12 @@ sub usage { ...@@ -52,13 +52,12 @@ sub usage {
sub collectcfiles { sub collectcfiles {
my @file; my @file;
while (<.tmp_versions/*.mod>) { open my $fh, '< modules.order' or die "cannot open modules.order: $!\n";
open my $fh, '<', $_ or die "cannot open $_: $!\n"; while (<$fh>) {
push (@file, s/\.ko$/.mod.c/;
grep s/\.ko/.mod.c/, # change the suffix push (@file, $_)
grep m/.+\.ko/, # find the .ko path
<$fh>); # lines in opened file
} }
close($fh);
chomp @file; chomp @file;
return @file; return @file;
} }
......
...@@ -94,7 +94,7 @@ configfiles=$(wildcard $(srctree)/kernel/configs/$@ $(srctree)/arch/$(SRCARCH)/c ...@@ -94,7 +94,7 @@ configfiles=$(wildcard $(srctree)/kernel/configs/$@ $(srctree)/arch/$(SRCARCH)/c
%.config: $(obj)/conf %.config: $(obj)/conf
$(if $(call configfiles),, $(error No configuration exists for this target on this architecture)) $(if $(call configfiles),, $(error No configuration exists for this target on this architecture))
$(Q)$(CONFIG_SHELL) $(srctree)/scripts/kconfig/merge_config.sh -m .config $(configfiles) $(Q)$(CONFIG_SHELL) $(srctree)/scripts/kconfig/merge_config.sh -m .config $(configfiles)
+$(Q)yes "" | $(MAKE) -f $(srctree)/Makefile oldconfig $(Q)$(MAKE) -f $(srctree)/Makefile olddefconfig
PHONY += kvmconfig PHONY += kvmconfig
kvmconfig: kvm_guest.config kvmconfig: kvm_guest.config
......
...@@ -895,7 +895,8 @@ int conf_write(const char *name) ...@@ -895,7 +895,8 @@ int conf_write(const char *name)
"# %s\n" "# %s\n"
"#\n", str); "#\n", str);
need_newline = false; need_newline = false;
} else if (!(sym->flags & SYMBOL_CHOICE)) { } else if (!(sym->flags & SYMBOL_CHOICE) &&
!(sym->flags & SYMBOL_WRITTEN)) {
sym_calc_value(sym); sym_calc_value(sym);
if (!(sym->flags & SYMBOL_WRITE)) if (!(sym->flags & SYMBOL_WRITE))
goto next; goto next;
...@@ -903,7 +904,7 @@ int conf_write(const char *name) ...@@ -903,7 +904,7 @@ int conf_write(const char *name)
fprintf(out, "\n"); fprintf(out, "\n");
need_newline = false; need_newline = false;
} }
sym->flags &= ~SYMBOL_WRITE; sym->flags |= SYMBOL_WRITTEN;
conf_write_symbol(out, sym, &kconfig_printer_cb, NULL); conf_write_symbol(out, sym, &kconfig_printer_cb, NULL);
} }
...@@ -1063,8 +1064,6 @@ int conf_write_autoconf(int overwrite) ...@@ -1063,8 +1064,6 @@ int conf_write_autoconf(int overwrite)
if (!overwrite && is_present(autoconf_name)) if (!overwrite && is_present(autoconf_name))
return 0; return 0;
sym_clear_all_valid();
conf_write_dep("include/config/auto.conf.cmd"); conf_write_dep("include/config/auto.conf.cmd");
if (conf_touch_deps()) if (conf_touch_deps())
......
...@@ -141,6 +141,7 @@ struct symbol { ...@@ -141,6 +141,7 @@ struct symbol {
#define SYMBOL_OPTIONAL 0x0100 /* choice is optional - values can be 'n' */ #define SYMBOL_OPTIONAL 0x0100 /* choice is optional - values can be 'n' */
#define SYMBOL_WRITE 0x0200 /* write symbol to file (KCONFIG_CONFIG) */ #define SYMBOL_WRITE 0x0200 /* write symbol to file (KCONFIG_CONFIG) */
#define SYMBOL_CHANGED 0x0400 /* ? */ #define SYMBOL_CHANGED 0x0400 /* ? */
#define SYMBOL_WRITTEN 0x0800 /* track info to avoid double-write to .config */
#define SYMBOL_NO_WRITE 0x1000 /* Symbol for internal use only; it will not be written */ #define SYMBOL_NO_WRITE 0x1000 /* Symbol for internal use only; it will not be written */
#define SYMBOL_CHECKED 0x2000 /* used during dependency checking */ #define SYMBOL_CHECKED 0x2000 /* used during dependency checking */
#define SYMBOL_WARNED 0x8000 /* warning has been issued */ #define SYMBOL_WARNED 0x8000 /* warning has been issued */
......
...@@ -396,34 +396,19 @@ void get_src_version(const char *modname, char sum[], unsigned sumlen) ...@@ -396,34 +396,19 @@ void get_src_version(const char *modname, char sum[], unsigned sumlen)
unsigned long len; unsigned long len;
struct md4_ctx md; struct md4_ctx md;
char *sources, *end, *fname; char *sources, *end, *fname;
const char *basename;
char filelist[PATH_MAX + 1]; char filelist[PATH_MAX + 1];
char *modverdir = getenv("MODVERDIR");
if (!modverdir) /* objects for a module are listed in the first line of *.mod file. */
modverdir = "."; snprintf(filelist, sizeof(filelist), "%.*smod",
(int)strlen(modname) - 1, modname);
/* Source files for module are in .tmp_versions/modname.mod,
after the first line. */
if (strrchr(modname, '/'))
basename = strrchr(modname, '/') + 1;
else
basename = modname;
snprintf(filelist, sizeof(filelist), "%s/%.*s.mod", modverdir,
(int) strlen(basename) - 2, basename);
file = grab_file(filelist, &len); file = grab_file(filelist, &len);
if (!file) if (!file)
/* not a module or .mod file missing - ignore */ /* not a module or .mod file missing - ignore */
return; return;
sources = strchr(file, '\n'); sources = file;
if (!sources) {
warn("malformed versions file for %s\n", modname);
goto release;
}
sources++;
end = strchr(sources, '\n'); end = strchr(sources, '\n');
if (!end) { if (!end) {
warn("bad ending versions file for %s\n", modname); warn("bad ending versions file for %s\n", modname);
......
...@@ -9,7 +9,7 @@ check_same_name_modules() ...@@ -9,7 +9,7 @@ check_same_name_modules()
for m in $(sed 's:.*/::' modules.order | sort | uniq -d) for m in $(sed 's:.*/::' modules.order | sort | uniq -d)
do do
echo "warning: same module names found:" >&2 echo "warning: same module names found:" >&2
sed -n "/\/$m/s:^kernel/: :p" modules.order >&2 sed -n "/\/$m/s:^: :p" modules.order >&2
done done
} }
......
...@@ -132,6 +132,11 @@ fi ...@@ -132,6 +132,11 @@ fi
if [ "$ARCH" != "um" ]; then if [ "$ARCH" != "um" ]; then
$MAKE -f $srctree/Makefile headers $MAKE -f $srctree/Makefile headers
$MAKE -f $srctree/Makefile headers_install INSTALL_HDR_PATH="$libc_headers_dir/usr" $MAKE -f $srctree/Makefile headers_install INSTALL_HDR_PATH="$libc_headers_dir/usr"
# move asm headers to /usr/include/<libc-machine>/asm to match the structure
# used by Debian-based distros (to support multi-arch)
host_arch=$(dpkg-architecture -a$(cat debian/arch) -qDEB_HOST_MULTIARCH)
mkdir $libc_headers_dir/usr/include/$host_arch
mv $libc_headers_dir/usr/include/asm $libc_headers_dir/usr/include/$host_arch/
fi fi
# Install the maintainer scripts # Install the maintainer scripts
......
...@@ -197,6 +197,7 @@ Architecture: $debarch ...@@ -197,6 +197,7 @@ Architecture: $debarch
Description: Linux support headers for userspace development Description: Linux support headers for userspace development
This package provides userspaces headers from the Linux kernel. These headers This package provides userspaces headers from the Linux kernel. These headers
are used by the installed headers for GNU glibc and other system libraries. are used by the installed headers for GNU glibc and other system libraries.
Multi-Arch: same
Package: $dbg_packagename Package: $dbg_packagename
Section: debug Section: debug
......
...@@ -29,7 +29,7 @@ fi ...@@ -29,7 +29,7 @@ fi
PROVIDES="$PROVIDES kernel-$KERNELRELEASE" PROVIDES="$PROVIDES kernel-$KERNELRELEASE"
__KERNELRELEASE=$(echo $KERNELRELEASE | sed -e "s/-/_/g") __KERNELRELEASE=$(echo $KERNELRELEASE | sed -e "s/-/_/g")
EXCLUDES="$RCS_TAR_IGNORE --exclude=.tmp_versions --exclude=*vmlinux* \ EXCLUDES="$RCS_TAR_IGNORE --exclude=*vmlinux* --exclude=*.mod \
--exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation \ --exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation \
--exclude=.config.old --exclude=.missing-syscalls.d --exclude=*.s" --exclude=.config.old --exclude=.missing-syscalls.d --exclude=*.s"
......
...@@ -12,8 +12,8 @@ default: ...@@ -12,8 +12,8 @@ default:
$(MAKE) -C $(KDIR) M=$(CURDIR) $(MAKE) -C $(KDIR) M=$(CURDIR)
clean: clean:
- rm -rf *.o *.ko .tmp-versions .*.cmd .*.mod.* *.mod.c - rm -rf *.o *.ko .*.cmd .*.mod.* *.mod.c
- rm -rf .tmp_versions* Module.symvers modules.order - rm -rf Module.symvers modules.order
install: default install: default
install -d $(KMISC) install -d $(KMISC)
......
...@@ -30,8 +30,6 @@ header-test-$(CONFIG_CPU_BIG_ENDIAN) += linux/byteorder/big_endian.h ...@@ -30,8 +30,6 @@ header-test-$(CONFIG_CPU_BIG_ENDIAN) += linux/byteorder/big_endian.h
header-test-$(CONFIG_CPU_LITTLE_ENDIAN) += linux/byteorder/little_endian.h header-test-$(CONFIG_CPU_LITTLE_ENDIAN) += linux/byteorder/little_endian.h
header-test- += linux/coda.h header-test- += linux/coda.h
header-test- += linux/coda_psdev.h header-test- += linux/coda_psdev.h
header-test- += linux/dvb/audio.h
header-test- += linux/dvb/osd.h
header-test- += linux/elfcore.h header-test- += linux/elfcore.h
header-test- += linux/errqueue.h header-test- += linux/errqueue.h
header-test- += linux/fsmap.h header-test- += linux/fsmap.h
...@@ -44,7 +42,6 @@ header-test- += linux/netfilter_bridge/ebtables.h ...@@ -44,7 +42,6 @@ header-test- += linux/netfilter_bridge/ebtables.h
header-test- += linux/netfilter_ipv4/ipt_LOG.h header-test- += linux/netfilter_ipv4/ipt_LOG.h
header-test- += linux/netfilter_ipv6/ip6t_LOG.h header-test- += linux/netfilter_ipv6/ip6t_LOG.h
header-test- += linux/nfc.h header-test- += linux/nfc.h
header-test- += linux/nilfs2_ondisk.h
header-test- += linux/omap3isp.h header-test- += linux/omap3isp.h
header-test- += linux/omapfb.h header-test- += linux/omapfb.h
header-test- += linux/patchkey.h header-test- += linux/patchkey.h
...@@ -59,9 +56,6 @@ header-test- += linux/v4l2-mediabus.h ...@@ -59,9 +56,6 @@ header-test- += linux/v4l2-mediabus.h
header-test- += linux/v4l2-subdev.h header-test- += linux/v4l2-subdev.h
header-test- += linux/videodev2.h header-test- += linux/videodev2.h
header-test- += linux/vm_sockets.h header-test- += linux/vm_sockets.h
header-test- += misc/ocxl.h
header-test- += mtd/mtd-abi.h
header-test- += mtd/mtd-user.h
header-test- += scsi/scsi_bsg_fc.h header-test- += scsi/scsi_bsg_fc.h
header-test- += scsi/scsi_netlink.h header-test- += scsi/scsi_netlink.h
header-test- += scsi/scsi_netlink_fc.h header-test- += scsi/scsi_netlink_fc.h
...@@ -108,7 +102,6 @@ header-test- += linux/bpf_perf_event.h ...@@ -108,7 +102,6 @@ header-test- += linux/bpf_perf_event.h
endif endif
ifeq ($(SRCARCH),s390) ifeq ($(SRCARCH),s390)
header-test- += asm/runtime_instr.h
header-test- += asm/zcrypt.h header-test- += asm/zcrypt.h
endif endif
...@@ -116,7 +109,6 @@ ifeq ($(SRCARCH),sparc) ...@@ -116,7 +109,6 @@ ifeq ($(SRCARCH),sparc)
header-test- += asm/stat.h header-test- += asm/stat.h
header-test- += asm/uctx.h header-test- += asm/uctx.h
header-test- += asm/fbio.h header-test- += asm/fbio.h
header-test- += asm/openpromio.h
endif endif
# asm-generic/*.h is used by asm/*.h, and should not be included directly # asm-generic/*.h is used by asm/*.h, and should not be included directly
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment