提交 28d747f2 编写于 作者: L Linus Torvalds

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

Pull more Kbuild updates from Masahiro Yamada:

 - add more Build-Depends to Debian source package

 - prefix header search paths with $(srctree)/

 - make modpost show verbose section mismatch warnings

 - avoid hard-coded CROSS_COMPILE for h8300

 - fix regression for Debian make-kpkg command

 - add semantic patch to detect missing put_device()

 - fix some warnings of 'make deb-pkg'

 - optimize NOSTDINC_FLAGS evaluation

 - add warnings about redundant generic-y

 - clean up Makefiles and scripts

* tag 'kbuild-v5.1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild:
  kconfig: remove stale lxdialog/.gitignore
  kbuild: force all architectures except um to include mandatory-y
  kbuild: warn redundant generic-y
  Revert "modsign: Abort modules_install when signing fails"
  kbuild: Make NOSTDINC_FLAGS a simply expanded variable
  kbuild: deb-pkg: avoid implicit effects
  coccinelle: semantic code search for missing put_device()
  kbuild: pkg: grep include/config/auto.conf instead of $KCONFIG_CONFIG
  kbuild: deb-pkg: introduce is_enabled and if_enabled_echo to builddeb
  kbuild: deb-pkg: add CONFIG_ prefix to kernel config options
  kbuild: add workaround for Debian make-kpkg
  kbuild: source include/config/auto.conf instead of ${KCONFIG_CONFIG}
  unicore32: simplify linker script generation for decompressor
  h8300: use cc-cross-prefix instead of hardcoding h8300-unknown-linux-
  kbuild: move archive command to scripts/Makefile.lib
  modpost: always show verbose warning for section mismatch
  ia64: prefix header search path with $(srctree)/
  libfdt: prefix header search paths with $(srctree)/
  deb-pkg: generate correct build dependencies
...@@ -1274,7 +1274,7 @@ See subsequent chapter for the syntax of the Kbuild file. ...@@ -1274,7 +1274,7 @@ See subsequent chapter for the syntax of the Kbuild file.
--- 7.4 mandatory-y --- 7.4 mandatory-y
mandatory-y is essentially used by include/(uapi/)asm-generic/Kbuild.asm mandatory-y is essentially used by include/(uapi/)asm-generic/Kbuild
to define the minimum set of ASM headers that all architectures must have. to define the minimum set of ASM headers that all architectures must have.
This works like optional generic-y. If a mandatory header is missing This works like optional generic-y. If a mandatory header is missing
......
...@@ -31,6 +31,16 @@ _all: ...@@ -31,6 +31,16 @@ _all:
# descending is started. They are now explicitly listed as the # descending is started. They are now explicitly listed as the
# prepare rule. # prepare rule.
# Ugly workaround for Debian make-kpkg:
# make-kpkg directly includes the top Makefile of Linux kernel. In such a case,
# skip sub-make to support debian_* targets in ruleset/kernel_version.mk, but
# displays warning to discourage such abusage.
ifneq ($(word 2, $(MAKEFILE_LIST)),)
$(warning Do not include top Makefile of Linux Kernel)
sub-make-done := 1
MAKEFLAGS += -rR
endif
ifneq ($(sub-make-done),1) ifneq ($(sub-make-done),1)
# Do not use make's built-in rules and variables # Do not use make's built-in rules and variables
...@@ -402,7 +412,7 @@ CHECK = sparse ...@@ -402,7 +412,7 @@ CHECK = sparse
CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ \ CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ \
-Wbitwise -Wno-return-void -Wno-unknown-attribute $(CF) -Wbitwise -Wno-return-void -Wno-unknown-attribute $(CF)
NOSTDINC_FLAGS = NOSTDINC_FLAGS :=
CFLAGS_MODULE = CFLAGS_MODULE =
AFLAGS_MODULE = AFLAGS_MODULE =
LDFLAGS_MODULE = LDFLAGS_MODULE =
...@@ -1088,9 +1098,11 @@ asm-generic := -f $(srctree)/scripts/Makefile.asm-generic obj ...@@ -1088,9 +1098,11 @@ asm-generic := -f $(srctree)/scripts/Makefile.asm-generic obj
PHONY += asm-generic uapi-asm-generic PHONY += asm-generic uapi-asm-generic
asm-generic: uapi-asm-generic asm-generic: uapi-asm-generic
$(Q)$(MAKE) $(asm-generic)=arch/$(SRCARCH)/include/generated/asm $(Q)$(MAKE) $(asm-generic)=arch/$(SRCARCH)/include/generated/asm \
generic=include/asm-generic
uapi-asm-generic: uapi-asm-generic:
$(Q)$(MAKE) $(asm-generic)=arch/$(SRCARCH)/include/generated/uapi/asm $(Q)$(MAKE) $(asm-generic)=arch/$(SRCARCH)/include/generated/uapi/asm \
generic=include/uapi/asm-generic
PHONY += prepare-objtool PHONY += prepare-objtool
prepare-objtool: $(objtool_target) prepare-objtool: $(objtool_target)
......
include include/uapi/asm-generic/Kbuild.asm
generated-y += unistd_32.h generated-y += unistd_32.h
include include/uapi/asm-generic/Kbuild.asm
generic-y += kvm_para.h generic-y += kvm_para.h
generic-y += ucontext.h generic-y += ucontext.h
...@@ -18,7 +18,6 @@ generic-y += segment.h ...@@ -18,7 +18,6 @@ generic-y += segment.h
generic-y += serial.h generic-y += serial.h
generic-y += simd.h generic-y += simd.h
generic-y += sizes.h generic-y += sizes.h
generic-y += timex.h
generic-y += trace_clock.h generic-y += trace_clock.h
generated-y += mach-types.h generated-y += mach-types.h
......
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
include include/uapi/asm-generic/Kbuild.asm
generated-y += unistd-common.h generated-y += unistd-common.h
generated-y += unistd-oabi.h generated-y += unistd-oabi.h
......
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
include include/uapi/asm-generic/Kbuild.asm
generic-y += kvm_para.h generic-y += kvm_para.h
include include/uapi/asm-generic/Kbuild.asm
generic-y += kvm_para.h generic-y += kvm_para.h
generic-y += ucontext.h generic-y += ucontext.h
include include/uapi/asm-generic/Kbuild.asm
generic-y += ucontext.h generic-y += ucontext.h
...@@ -27,7 +27,7 @@ KBUILD_LDFLAGS += $(ldflags-y) ...@@ -27,7 +27,7 @@ KBUILD_LDFLAGS += $(ldflags-y)
CHECKFLAGS += -msize-long CHECKFLAGS += -msize-long
ifeq ($(CROSS_COMPILE),) ifeq ($(CROSS_COMPILE),)
CROSS_COMPILE := h8300-unknown-linux- CROSS_COMPILE := $(call cc-cross-prefix, h8300-unknown-linux- h8300-linux-)
endif endif
core-y += arch/$(ARCH)/kernel/ arch/$(ARCH)/mm/ core-y += arch/$(ARCH)/kernel/ arch/$(ARCH)/mm/
......
...@@ -17,7 +17,6 @@ generic-y += fb.h ...@@ -17,7 +17,6 @@ generic-y += fb.h
generic-y += ftrace.h generic-y += ftrace.h
generic-y += futex.h generic-y += futex.h
generic-y += hardirq.h generic-y += hardirq.h
generic-y += hash.h
generic-y += hw_irq.h generic-y += hw_irq.h
generic-y += irq_regs.h generic-y += irq_regs.h
generic-y += irq_work.h generic-y += irq_work.h
......
include include/uapi/asm-generic/Kbuild.asm
generic-y += kvm_para.h generic-y += kvm_para.h
generic-y += ucontext.h generic-y += ucontext.h
include include/uapi/asm-generic/Kbuild.asm
generic-y += ucontext.h generic-y += ucontext.h
include include/uapi/asm-generic/Kbuild.asm
generated-y += unistd_64.h generated-y += unistd_64.h
generic-y += kvm_para.h generic-y += kvm_para.h
generic-y += socket.h
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
# Copyright (C) 1999,2001-2006,2008 Silicon Graphics, Inc. All Rights Reserved. # Copyright (C) 1999,2001-2006,2008 Silicon Graphics, Inc. All Rights Reserved.
# #
ccflags-y := -Iarch/ia64/sn/include ccflags-y := -I $(srctree)/arch/ia64/sn/include
obj-y += setup.o bte.o bte_error.o irq.o mca.o idle.o \ obj-y += setup.o bte.o bte_error.o irq.o mca.o idle.o \
huberror.o io_acpi_init.o io_common.o \ huberror.o io_acpi_init.o io_common.o \
......
...@@ -9,7 +9,5 @@ ...@@ -9,7 +9,5 @@
# sn2 specific kernel files # sn2 specific kernel files
# #
ccflags-y := -Iarch/ia64/sn/include
obj-y += cache.o io.o ptc_deadlock.o sn2_smp.o sn_proc_fs.o \ obj-y += cache.o io.o ptc_deadlock.o sn2_smp.o sn_proc_fs.o \
prominfo_proc.o timer.o timer_interrupt.o sn_hwperf.o prominfo_proc.o timer.o timer_interrupt.o sn_hwperf.o
...@@ -7,6 +7,4 @@ ...@@ -7,6 +7,4 @@
# #
# Makefile for the sn pci general routines. # Makefile for the sn pci general routines.
ccflags-y := -Iarch/ia64/sn/include
obj-y := pci_dma.o tioca_provider.o tioce_provider.o pcibr/ obj-y := pci_dma.o tioca_provider.o tioce_provider.o pcibr/
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
# #
# Makefile for the sn2 io routines. # Makefile for the sn2 io routines.
ccflags-y := -Iarch/ia64/sn/include ccflags-y := -I $(srctree)/arch/ia64/sn/include
obj-y += pcibr_dma.o pcibr_reg.o \ obj-y += pcibr_dma.o pcibr_reg.o \
pcibr_ate.o pcibr_provider.o pcibr_ate.o pcibr_provider.o
include include/uapi/asm-generic/Kbuild.asm
generated-y += unistd_32.h generated-y += unistd_32.h
generic-y += kvm_para.h generic-y += kvm_para.h
include include/uapi/asm-generic/Kbuild.asm
generated-y += unistd_32.h generated-y += unistd_32.h
generic-y += kvm_para.h generic-y += kvm_para.h
generic-y += ucontext.h generic-y += ucontext.h
include include/uapi/asm-generic/Kbuild.asm
generated-y += unistd_n32.h generated-y += unistd_n32.h
generated-y += unistd_n64.h generated-y += unistd_n64.h
generated-y += unistd_o32.h generated-y += unistd_o32.h
......
include include/uapi/asm-generic/Kbuild.asm
generic-y += ucontext.h generic-y += ucontext.h
include include/uapi/asm-generic/Kbuild.asm
generic-y += kvm_para.h generic-y += kvm_para.h
generic-y += ucontext.h generic-y += ucontext.h
...@@ -15,7 +15,6 @@ generic-y += fb.h ...@@ -15,7 +15,6 @@ generic-y += fb.h
generic-y += ftrace.h generic-y += ftrace.h
generic-y += hardirq.h generic-y += hardirq.h
generic-y += hw_irq.h generic-y += hw_irq.h
generic-y += irq.h
generic-y += irq_regs.h generic-y += irq_regs.h
generic-y += irq_work.h generic-y += irq_work.h
generic-y += kdebug.h generic-y += kdebug.h
...@@ -35,7 +34,6 @@ generic-y += qrwlock.h ...@@ -35,7 +34,6 @@ generic-y += qrwlock.h
generic-y += sections.h generic-y += sections.h
generic-y += segment.h generic-y += segment.h
generic-y += shmparam.h generic-y += shmparam.h
generic-y += string.h
generic-y += switch_to.h generic-y += switch_to.h
generic-y += topology.h generic-y += topology.h
generic-y += trace_clock.h generic-y += trace_clock.h
......
include include/uapi/asm-generic/Kbuild.asm
generic-y += kvm_para.h generic-y += kvm_para.h
generic-y += ucontext.h generic-y += ucontext.h
generated-y += syscall_table_32.h generated-y += syscall_table_32.h
generated-y += syscall_table_64.h generated-y += syscall_table_64.h
generated-y += syscall_table_c32.h generated-y += syscall_table_c32.h
generic-y += barrier.h
generic-y += current.h generic-y += current.h
generic-y += device.h generic-y += device.h
generic-y += div64.h generic-y += div64.h
...@@ -20,7 +19,6 @@ generic-y += percpu.h ...@@ -20,7 +19,6 @@ generic-y += percpu.h
generic-y += preempt.h generic-y += preempt.h
generic-y += seccomp.h generic-y += seccomp.h
generic-y += segment.h generic-y += segment.h
generic-y += topology.h
generic-y += trace_clock.h generic-y += trace_clock.h
generic-y += user.h generic-y += user.h
generic-y += vga.h generic-y += vga.h
......
include include/uapi/asm-generic/Kbuild.asm
generated-y += unistd_32.h generated-y += unistd_32.h
generated-y += unistd_64.h generated-y += unistd_64.h
generic-y += kvm_para.h generic-y += kvm_para.h
...@@ -5,7 +5,6 @@ generated-y += syscall_table_spu.h ...@@ -5,7 +5,6 @@ generated-y += syscall_table_spu.h
generic-y += div64.h generic-y += div64.h
generic-y += export.h generic-y += export.h
generic-y += irq_regs.h generic-y += irq_regs.h
generic-y += irq_work.h
generic-y += local64.h generic-y += local64.h
generic-y += mcs_spinlock.h generic-y += mcs_spinlock.h
generic-y += preempt.h generic-y += preempt.h
......
include include/uapi/asm-generic/Kbuild.asm
generated-y += unistd_32.h generated-y += unistd_32.h
generated-y += unistd_64.h generated-y += unistd_64.h
include include/uapi/asm-generic/Kbuild.asm
...@@ -57,9 +57,6 @@ $(obj)/section_cmp%: vmlinux $(obj)/compressed/vmlinux FORCE ...@@ -57,9 +57,6 @@ $(obj)/section_cmp%: vmlinux $(obj)/compressed/vmlinux FORCE
$(obj)/compressed/vmlinux: $(obj)/startup.a FORCE $(obj)/compressed/vmlinux: $(obj)/startup.a FORCE
$(Q)$(MAKE) $(build)=$(obj)/compressed $@ $(Q)$(MAKE) $(build)=$(obj)/compressed $@
quiet_cmd_ar = AR $@
cmd_ar = rm -f $@; $(AR) rcsTP$(KBUILD_ARFLAGS) $@ $(real-prereqs)
$(obj)/startup.a: $(OBJECTS) FORCE $(obj)/startup.a: $(OBJECTS) FORCE
$(call if_changed,ar) $(call if_changed,ar)
......
...@@ -20,7 +20,6 @@ generic-y += local.h ...@@ -20,7 +20,6 @@ generic-y += local.h
generic-y += local64.h generic-y += local64.h
generic-y += mcs_spinlock.h generic-y += mcs_spinlock.h
generic-y += mm-arch-hooks.h generic-y += mm-arch-hooks.h
generic-y += preempt.h
generic-y += rwsem.h generic-y += rwsem.h
generic-y += trace_clock.h generic-y += trace_clock.h
generic-y += unaligned.h generic-y += unaligned.h
......
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
include include/uapi/asm-generic/Kbuild.asm
generated-y += unistd_32.h generated-y += unistd_32.h
generated-y += unistd_64.h generated-y += unistd_64.h
generic-y += socket.h
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
include include/uapi/asm-generic/Kbuild.asm
generated-y += unistd_32.h generated-y += unistd_32.h
generic-y += kvm_para.h generic-y += kvm_para.h
......
include include/uapi/asm-generic/Kbuild.asm
generated-y += unistd_32.h generated-y += unistd_32.h
generated-y += unistd_64.h generated-y += unistd_64.h
...@@ -61,7 +61,4 @@ $(obj)/vmlinux: $(obj)/vmlinux.lds $(obj)/head.o $(obj)/piggy.o \ ...@@ -61,7 +61,4 @@ $(obj)/vmlinux: $(obj)/vmlinux.lds $(obj)/head.o $(obj)/piggy.o \
ZTEXTADDR := 0x03000000 ZTEXTADDR := 0x03000000
ZBSSADDR := ALIGN(4) ZBSSADDR := ALIGN(4)
SEDFLAGS_lds = s/TEXT_START/$(ZTEXTADDR)/;s/BSS_START/$(ZBSSADDR)/ CPPFLAGS_vmlinux.lds = -DTEXT_START="$(ZTEXTADDR)" -DBSS_START="$(ZBSSADDR)"
$(obj)/vmlinux.lds: $(obj)/vmlinux.lds.in arch/unicore32/boot/Makefile $(KCONFIG_CONFIG)
@sed "$(SEDFLAGS_lds)" < $< > $@
include include/uapi/asm-generic/Kbuild.asm
generic-y += kvm_para.h generic-y += kvm_para.h
generic-y += ucontext.h generic-y += ucontext.h
include include/uapi/asm-generic/Kbuild.asm
generated-y += unistd_32.h generated-y += unistd_32.h
generated-y += unistd_64.h generated-y += unistd_64.h
generated-y += unistd_x32.h generated-y += unistd_x32.h
generic-y += socket.h
...@@ -15,7 +15,6 @@ generic-y += irq_work.h ...@@ -15,7 +15,6 @@ generic-y += irq_work.h
generic-y += kdebug.h generic-y += kdebug.h
generic-y += kmap_types.h generic-y += kmap_types.h
generic-y += kprobes.h generic-y += kprobes.h
generic-y += linkage.h
generic-y += local.h generic-y += local.h
generic-y += local64.h generic-y += local64.h
generic-y += mcs_spinlock.h generic-y += mcs_spinlock.h
......
include include/uapi/asm-generic/Kbuild.asm
generated-y += unistd_32.h generated-y += unistd_32.h
generic-y += kvm_para.h generic-y += kvm_para.h
generic-y += socket.h
# SPDX-License-Identifier: GPL-2.0
#
# asm headers that all architectures except um should have
# (This file is not included when SRCARCH=um since UML borrows several
# asm headers from the host architecutre.)
# SPDX-License-Identifier: GPL-2.0
# #
# Headers that are mandatory in usr/include/asm/ # Headers that are mandatory in usr/include/asm/
# # (This file is not included when SRCARCH=um since UML does not support UAPI.)
mandatory-y += auxvec.h mandatory-y += auxvec.h
mandatory-y += bitsperlong.h mandatory-y += bitsperlong.h
mandatory-y += bpf_perf_event.h mandatory-y += bpf_perf_event.h
......
...@@ -213,7 +213,7 @@ KCOV_INSTRUMENT_stackdepot.o := n ...@@ -213,7 +213,7 @@ KCOV_INSTRUMENT_stackdepot.o := n
libfdt_files = fdt.o fdt_ro.o fdt_wip.o fdt_rw.o fdt_sw.o fdt_strerror.o \ libfdt_files = fdt.o fdt_ro.o fdt_wip.o fdt_rw.o fdt_sw.o fdt_strerror.o \
fdt_empty_tree.o fdt_empty_tree.o
$(foreach file, $(libfdt_files), \ $(foreach file, $(libfdt_files), \
$(eval CFLAGS_$(file) = -I$(src)/../scripts/dtc/libfdt)) $(eval CFLAGS_$(file) = -I $(srctree)/scripts/dtc/libfdt))
lib-$(CONFIG_LIBFDT) += $(libfdt_files) lib-$(CONFIG_LIBFDT) += $(libfdt_files)
obj-$(CONFIG_RBTREE_TEST) += rbtree_test.o obj-$(CONFIG_RBTREE_TEST) += rbtree_test.o
......
...@@ -12,8 +12,19 @@ all: ...@@ -12,8 +12,19 @@ all:
src := $(subst /generated,,$(obj)) src := $(subst /generated,,$(obj))
-include $(src)/Kbuild -include $(src)/Kbuild
# $(generic)/Kbuild lists mandatory-y. Exclude um since it is a special case.
ifneq ($(SRCARCH),um)
include $(generic)/Kbuild
endif
include scripts/Kbuild.include include scripts/Kbuild.include
redundant := $(filter $(mandatory-y) $(generated-y), $(generic-y))
redundant += $(foreach f, $(generic-y), $(if $(wildcard $(srctree)/$(src)/$(f)),$(f)))
redundant := $(sort $(redundant))
$(if $(redundant),\
$(warning redundant generic-y found in $(src)/Kbuild: $(redundant)))
# If arch does not implement mandatory headers, fallback to asm-generic ones. # If arch does not implement mandatory headers, fallback to asm-generic ones.
mandatory-y := $(filter-out $(generated-y), $(mandatory-y)) mandatory-y := $(filter-out $(generated-y), $(mandatory-y))
generic-y += $(foreach f, $(mandatory-y), $(if $(wildcard $(srctree)/$(src)/$(f)),,$(f))) generic-y += $(foreach f, $(mandatory-y), $(if $(wildcard $(srctree)/$(src)/$(f)),,$(f)))
......
...@@ -426,13 +426,9 @@ $(modorder-target): $(subdir-ym) FORCE ...@@ -426,13 +426,9 @@ $(modorder-target): $(subdir-ym) FORCE
# 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)
# #
ifdef lib-target ifdef lib-target
quiet_cmd_link_l_target = AR $@
# lib target archives do get a symbol table and index
cmd_link_l_target = rm -f $@; $(AR) rcsTP$(KBUILD_ARFLAGS) $@ $(real-prereqs)
$(lib-target): $(lib-y) FORCE $(lib-target): $(lib-y) FORCE
$(call if_changed,link_l_target) $(call if_changed,ar)
targets += $(lib-target) targets += $(lib-target)
......
...@@ -233,6 +233,12 @@ $(obj)/%: $(src)/%_shipped ...@@ -233,6 +233,12 @@ $(obj)/%: $(src)/%_shipped
quiet_cmd_ld = LD $@ quiet_cmd_ld = LD $@
cmd_ld = $(LD) $(ld_flags) $(real-prereqs) -o $@ cmd_ld = $(LD) $(ld_flags) $(real-prereqs) -o $@
# Archive
# ---------------------------------------------------------------------------
quiet_cmd_ar = AR $@
cmd_ar = rm -f $@; $(AR) rcsTP$(KBUILD_ARFLAGS) $@ $(real-prereqs)
# Objcopy # Objcopy
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
......
...@@ -23,7 +23,7 @@ quiet_cmd_modules_install = INSTALL $@ ...@@ -23,7 +23,7 @@ quiet_cmd_modules_install = INSTALL $@
mkdir -p $(2) ; \ mkdir -p $(2) ; \
cp $@ $(2) ; \ cp $@ $(2) ; \
$(mod_strip_cmd) $(2)/$(notdir $@) ; \ $(mod_strip_cmd) $(2)/$(notdir $@) ; \
$(mod_sign_cmd) $(2)/$(notdir $@) $(patsubst %,|| true,$(KBUILD_EXTMOD)) && \ $(mod_sign_cmd) $(2)/$(notdir $@) $(patsubst %,|| true,$(KBUILD_EXTMOD)) ; \
$(mod_compress_cmd) $(2)/$(notdir $@) $(mod_compress_cmd) $(2)/$(notdir $@)
# Modules built outside the kernel source tree go into extra by default # Modules built outside the kernel source tree go into extra by default
......
...@@ -77,7 +77,6 @@ modpost = scripts/mod/modpost \ ...@@ -77,7 +77,6 @@ modpost = scripts/mod/modpost \
$(if $(KBUILD_EXTMOD),-I $(modulesymfile)) \ $(if $(KBUILD_EXTMOD),-I $(modulesymfile)) \
$(if $(KBUILD_EXTRA_SYMBOLS), $(patsubst %, -e %,$(KBUILD_EXTRA_SYMBOLS))) \ $(if $(KBUILD_EXTRA_SYMBOLS), $(patsubst %, -e %,$(KBUILD_EXTRA_SYMBOLS))) \
$(if $(KBUILD_EXTMOD),-o $(modulesymfile)) \ $(if $(KBUILD_EXTMOD),-o $(modulesymfile)) \
$(if $(CONFIG_DEBUG_SECTION_MISMATCH),,-S) \
$(if $(CONFIG_SECTION_MISMATCH_WARN_ONLY),,-E) \ $(if $(CONFIG_SECTION_MISMATCH_WARN_ONLY),,-E) \
$(if $(KBUILD_EXTMOD)$(KBUILD_MODPOST_WARN),-w) $(if $(KBUILD_EXTMOD)$(KBUILD_MODPOST_WARN),-w)
......
...@@ -39,14 +39,7 @@ case "$KBUILD_VERBOSE" in ...@@ -39,14 +39,7 @@ case "$KBUILD_VERBOSE" in
esac esac
# We need access to CONFIG_ symbols # We need access to CONFIG_ symbols
case "${KCONFIG_CONFIG}" in . include/config/auto.conf
*/*)
. "${KCONFIG_CONFIG}"
;;
*)
# Force using a file from the current directory
. "./${KCONFIG_CONFIG}"
esac
# Generate a new ksym list file with symbols needed by the current # Generate a new ksym list file with symbols needed by the current
# set of modules. # set of modules.
......
// SPDX-License-Identifier: GPL-2.0
/// Find missing put_device for every of_find_device_by_node.
///
// Confidence: Moderate
// Copyright: (C) 2018-2019 Wen Yang, ZTE.
// Comments:
// Options: --no-includes --include-headers
virtual report
virtual org
@search exists@
local idexpression id;
expression x,e,e1;
position p1,p2;
type T,T1,T2,T3;
@@
id = of_find_device_by_node@p1(x)
... when != e = id
if (id == NULL || ...) { ... return ...; }
... when != put_device(&id->dev)
when != platform_device_put(id)
when != of_dev_put(id)
when != if (id) { ... put_device(&id->dev) ... }
when != e1 = (T)id
when != e1 = &id->dev
when != e1 = get_device(&id->dev)
when != e1 = (T1)platform_get_drvdata(id)
(
return
( id
| (T2)dev_get_drvdata(&id->dev)
| (T3)platform_get_drvdata(id)
);
| return@p2 ...;
)
@script:python depends on report@
p1 << search.p1;
p2 << search.p2;
@@
coccilib.report.print_report(p2[0], "ERROR: missing put_device; "
+ "call of_find_device_by_node on line "
+ p1[0].line
+ ", but without a corresponding object release "
+ "within this function.")
@script:python depends on org@
p1 << search.p1;
p2 << search.p2;
@@
cocci.print_main("of_find_device_by_node", p1)
cocci.print_secs("needed put_device", p2)
...@@ -171,14 +171,7 @@ if [ "$1" = "clean" ]; then ...@@ -171,14 +171,7 @@ if [ "$1" = "clean" ]; then
fi fi
# We need access to CONFIG_ symbols # We need access to CONFIG_ symbols
case "${KCONFIG_CONFIG}" in . include/config/auto.conf
*/*)
. "${KCONFIG_CONFIG}"
;;
*)
# Force using a file from the current directory
. "./${KCONFIG_CONFIG}"
esac
# Update version # Update version
info GEN .version info GEN .version
......
...@@ -35,7 +35,6 @@ static int vmlinux_section_warnings = 1; ...@@ -35,7 +35,6 @@ static int vmlinux_section_warnings = 1;
static int warn_unresolved = 0; static int warn_unresolved = 0;
/* How a symbol is exported */ /* How a symbol is exported */
static int sec_mismatch_count = 0; static int sec_mismatch_count = 0;
static int sec_mismatch_verbose = 1;
static int sec_mismatch_fatal = 0; static int sec_mismatch_fatal = 0;
/* ignore missing files */ /* ignore missing files */
static int ignore_missing_files; static int ignore_missing_files;
...@@ -1406,8 +1405,6 @@ static void report_sec_mismatch(const char *modname, ...@@ -1406,8 +1405,6 @@ static void report_sec_mismatch(const char *modname,
char *prl_to; char *prl_to;
sec_mismatch_count++; sec_mismatch_count++;
if (!sec_mismatch_verbose)
return;
get_pretty_name(from_is_func, &from, &from_p); get_pretty_name(from_is_func, &from, &from_p);
get_pretty_name(to_is_func, &to, &to_p); get_pretty_name(to_is_func, &to, &to_p);
...@@ -1655,9 +1652,7 @@ static void extable_mismatch_handler(const char* modname, struct elf_info *elf, ...@@ -1655,9 +1652,7 @@ static void extable_mismatch_handler(const char* modname, struct elf_info *elf,
sec_mismatch_count++; sec_mismatch_count++;
if (sec_mismatch_verbose) report_extable_warnings(modname, elf, mismatch, r, sym, fromsec, tosec);
report_extable_warnings(modname, elf, mismatch, r, sym,
fromsec, tosec);
if (match(tosec, mismatch->bad_tosec)) if (match(tosec, mismatch->bad_tosec))
fatal("The relocation at %s+0x%lx references\n" fatal("The relocation at %s+0x%lx references\n"
...@@ -2433,7 +2428,7 @@ int main(int argc, char **argv) ...@@ -2433,7 +2428,7 @@ int main(int argc, char **argv)
struct ext_sym_list *extsym_iter; struct ext_sym_list *extsym_iter;
struct ext_sym_list *extsym_start = NULL; struct ext_sym_list *extsym_start = NULL;
while ((opt = getopt(argc, argv, "i:I:e:mnsST:o:awE")) != -1) { while ((opt = getopt(argc, argv, "i:I:e:mnsT:o:awE")) != -1) {
switch (opt) { switch (opt) {
case 'i': case 'i':
kernel_read = optarg; kernel_read = optarg;
...@@ -2465,9 +2460,6 @@ int main(int argc, char **argv) ...@@ -2465,9 +2460,6 @@ int main(int argc, char **argv)
case 's': case 's':
vmlinux_section_warnings = 0; vmlinux_section_warnings = 0;
break; break;
case 'S':
sec_mismatch_verbose = 0;
break;
case 'T': case 'T':
files_source = optarg; files_source = optarg;
break; break;
...@@ -2525,18 +2517,9 @@ int main(int argc, char **argv) ...@@ -2525,18 +2517,9 @@ int main(int argc, char **argv)
} }
if (dump_write) if (dump_write)
write_dump(dump_write); write_dump(dump_write);
if (sec_mismatch_count) { if (sec_mismatch_count && sec_mismatch_fatal)
if (!sec_mismatch_verbose) { fatal("modpost: Section mismatches detected.\n"
warn("modpost: Found %d section mismatch(es).\n" "Set CONFIG_SECTION_MISMATCH_WARN_ONLY=y to allow them.\n");
"To see full details build your kernel with:\n"
"'make CONFIG_DEBUG_SECTION_MISMATCH=y'\n",
sec_mismatch_count);
}
if (sec_mismatch_fatal) {
fatal("modpost: Section mismatches detected.\n"
"Set CONFIG_SECTION_MISMATCH_WARN_ONLY=y to allow them.\n");
}
}
free(buf.p); free(buf.p);
return err; return err;
......
...@@ -12,6 +12,18 @@ ...@@ -12,6 +12,18 @@
set -e set -e
is_enabled() {
grep -q "^$1=y" include/config/auto.conf
}
if_enabled_echo() {
if is_enabled "$1"; then
echo -n "$2"
elif [ $# -ge 3 ]; then
echo -n "$3"
fi
}
create_package() { create_package() {
local pname="$1" pdir="$2" local pname="$1" pdir="$2"
...@@ -62,7 +74,7 @@ parisc|mips|powerpc) ...@@ -62,7 +74,7 @@ parisc|mips|powerpc)
installed_image_path="boot/vmlinuz-$version" installed_image_path="boot/vmlinuz-$version"
esac esac
BUILD_DEBUG="$(grep -s '^CONFIG_DEBUG_INFO=y' $KCONFIG_CONFIG || true)" BUILD_DEBUG=$(if_enabled_echo CONFIG_DEBUG_INFO Yes)
# Setup the directory structure # Setup the directory structure
rm -rf "$tmpdir" "$kernel_headers_dir" "$libc_headers_dir" "$dbg_dir" $objtree/debian/files rm -rf "$tmpdir" "$kernel_headers_dir" "$libc_headers_dir" "$dbg_dir" $objtree/debian/files
...@@ -83,14 +95,14 @@ else ...@@ -83,14 +95,14 @@ else
fi fi
cp "$($MAKE -s -f $srctree/Makefile image_name)" "$tmpdir/$installed_image_path" cp "$($MAKE -s -f $srctree/Makefile image_name)" "$tmpdir/$installed_image_path"
if grep -q "^CONFIG_OF_EARLY_FLATTREE=y" $KCONFIG_CONFIG ; then if is_enabled CONFIG_OF_EARLY_FLATTREE; then
# Only some architectures with OF support have this target # Only some architectures with OF support have this target
if [ -d "${srctree}/arch/$SRCARCH/boot/dts" ]; then if [ -d "${srctree}/arch/$SRCARCH/boot/dts" ]; then
$MAKE -f $srctree/Makefile INSTALL_DTBS_PATH="$tmpdir/usr/lib/$packagename" dtbs_install $MAKE -f $srctree/Makefile INSTALL_DTBS_PATH="$tmpdir/usr/lib/$packagename" dtbs_install
fi fi
fi fi
if grep -q '^CONFIG_MODULES=y' $KCONFIG_CONFIG ; then if is_enabled CONFIG_MODULES; then
INSTALL_MOD_PATH="$tmpdir" $MAKE -f $srctree/Makefile modules_install INSTALL_MOD_PATH="$tmpdir" $MAKE -f $srctree/Makefile modules_install
rm -f "$tmpdir/lib/modules/$version/build" rm -f "$tmpdir/lib/modules/$version/build"
rm -f "$tmpdir/lib/modules/$version/source" rm -f "$tmpdir/lib/modules/$version/source"
...@@ -111,8 +123,7 @@ if grep -q '^CONFIG_MODULES=y' $KCONFIG_CONFIG ; then ...@@ -111,8 +123,7 @@ if grep -q '^CONFIG_MODULES=y' $KCONFIG_CONFIG ; then
done done
# resign stripped modules # resign stripped modules
MODULE_SIG_ALL="$(grep -s '^CONFIG_MODULE_SIG_ALL=y' $KCONFIG_CONFIG || true)" if is_enabled CONFIG_MODULE_SIG_ALL; then
if [ -n "$MODULE_SIG_ALL" ]; then
INSTALL_MOD_PATH="$tmpdir" $MAKE -f $srctree/Makefile modules_sign INSTALL_MOD_PATH="$tmpdir" $MAKE -f $srctree/Makefile modules_sign
fi fi
fi fi
...@@ -129,11 +140,6 @@ fi ...@@ -129,11 +140,6 @@ fi
# make-kpkg sets $INITRD to indicate whether an initramfs is wanted, and # make-kpkg sets $INITRD to indicate whether an initramfs is wanted, and
# so do we; recent versions of dracut and initramfs-tools will obey this. # so do we; recent versions of dracut and initramfs-tools will obey this.
debhookdir=${KDEB_HOOKDIR:-/etc/kernel} debhookdir=${KDEB_HOOKDIR:-/etc/kernel}
if grep -q '^CONFIG_BLK_DEV_INITRD=y' $KCONFIG_CONFIG; then
want_initrd=Yes
else
want_initrd=No
fi
for script in postinst postrm preinst prerm ; do for script in postinst postrm preinst prerm ; do
mkdir -p "$tmpdir$debhookdir/$script.d" mkdir -p "$tmpdir$debhookdir/$script.d"
cat <<EOF > "$tmpdir/DEBIAN/$script" cat <<EOF > "$tmpdir/DEBIAN/$script"
...@@ -145,7 +151,7 @@ set -e ...@@ -145,7 +151,7 @@ set -e
export DEB_MAINT_PARAMS="\$*" export DEB_MAINT_PARAMS="\$*"
# Tell initramfs builder whether it's wanted # Tell initramfs builder whether it's wanted
export INITRD=$want_initrd export INITRD=$(if_enabled_echo CONFIG_BLK_DEV_INITRD Yes No)
test -d $debhookdir/$script.d && run-parts --arg="$version" --arg="/$installed_image_path" $debhookdir/$script.d test -d $debhookdir/$script.d && run-parts --arg="$version" --arg="/$installed_image_path" $debhookdir/$script.d
exit 0 exit 0
...@@ -158,11 +164,11 @@ done ...@@ -158,11 +164,11 @@ done
(cd $srctree; find arch/*/include include scripts -type f -o -type l) >> "$objtree/debian/hdrsrcfiles" (cd $srctree; find arch/*/include include scripts -type f -o -type l) >> "$objtree/debian/hdrsrcfiles"
(cd $srctree; find arch/$SRCARCH -name module.lds -o -name Kbuild.platforms -o -name Platform) >> "$objtree/debian/hdrsrcfiles" (cd $srctree; find arch/$SRCARCH -name module.lds -o -name Kbuild.platforms -o -name Platform) >> "$objtree/debian/hdrsrcfiles"
(cd $srctree; find $(find arch/$SRCARCH -name include -o -name scripts -type d) -type f) >> "$objtree/debian/hdrsrcfiles" (cd $srctree; find $(find arch/$SRCARCH -name include -o -name scripts -type d) -type f) >> "$objtree/debian/hdrsrcfiles"
if grep -q '^CONFIG_STACK_VALIDATION=y' $KCONFIG_CONFIG ; then if is_enabled CONFIG_STACK_VALIDATION; then
(cd $objtree; find tools/objtool -type f -executable) >> "$objtree/debian/hdrobjfiles" (cd $objtree; find tools/objtool -type f -executable) >> "$objtree/debian/hdrobjfiles"
fi fi
(cd $objtree; find arch/$SRCARCH/include Module.symvers include scripts -type f) >> "$objtree/debian/hdrobjfiles" (cd $objtree; find arch/$SRCARCH/include Module.symvers include scripts -type f) >> "$objtree/debian/hdrobjfiles"
if grep -q '^CONFIG_GCC_PLUGINS=y' $KCONFIG_CONFIG ; then if is_enabled CONFIG_GCC_PLUGINS; then
(cd $objtree; find scripts/gcc-plugins -name \*.so -o -name gcc-common.h) >> "$objtree/debian/hdrobjfiles" (cd $objtree; find scripts/gcc-plugins -name \*.so -o -name gcc-common.h) >> "$objtree/debian/hdrobjfiles"
fi fi
destdir=$kernel_headers_dir/usr/src/linux-headers-$version destdir=$kernel_headers_dir/usr/src/linux-headers-$version
......
...@@ -56,7 +56,7 @@ dirs=boot ...@@ -56,7 +56,7 @@ dirs=boot
# #
# Try to install modules # Try to install modules
# #
if grep -q '^CONFIG_MODULES=y' "${KCONFIG_CONFIG}"; then if grep -q '^CONFIG_MODULES=y' include/config/auto.conf; then
make ARCH="${ARCH}" -f ${srctree}/Makefile INSTALL_MOD_PATH="${tmpdir}" modules_install make ARCH="${ARCH}" -f ${srctree}/Makefile INSTALL_MOD_PATH="${tmpdir}" modules_install
dirs="$dirs lib" dirs="$dirs lib"
fi fi
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
set -e set -e
is_enabled() { is_enabled() {
grep -q "^CONFIG_$1=y" $KCONFIG_CONFIG grep -q "^$1=y" include/config/auto.conf
} }
if_enabled_echo() { if_enabled_echo() {
...@@ -31,23 +31,23 @@ set_debarch() { ...@@ -31,23 +31,23 @@ set_debarch() {
x86_64) x86_64)
debarch=amd64 ;; debarch=amd64 ;;
sparc*) sparc*)
debarch=sparc$(if_enabled_echo 64BIT 64) ;; debarch=sparc$(if_enabled_echo CONFIG_64BIT 64) ;;
s390*) s390*)
debarch=s390x ;; debarch=s390x ;;
ppc*) ppc*)
if is_enabled 64BIT; then if is_enabled CONFIG_64BIT; then
debarch=ppc64$(if_enabled_echo CPU_LITTLE_ENDIAN el) debarch=ppc64$(if_enabled_echo CONFIG_CPU_LITTLE_ENDIAN el)
else else
debarch=powerpc$(if_enabled_echo SPE spe) debarch=powerpc$(if_enabled_echo CONFIG_SPE spe)
fi fi
;; ;;
parisc*) parisc*)
debarch=hppa ;; debarch=hppa ;;
mips*) mips*)
if is_enabled CPU_LITTLE_ENDIAN; then if is_enabled CONFIG_CPU_LITTLE_ENDIAN; then
debarch=mips$(if_enabled_echo 64BIT 64)$(if_enabled_echo CPU_MIPSR6 r6)el debarch=mips$(if_enabled_echo CONFIG_64BIT 64)$(if_enabled_echo CONFIG_CPU_MIPSR6 r6)el
elif is_enabled CPU_MIPSR6; then elif is_enabled CONFIG_CPU_MIPSR6; then
debarch=mips$(if_enabled_echo 64BIT 64)r6 debarch=mips$(if_enabled_echo CONFIG_64BIT 64)r6
else else
debarch=mips debarch=mips
fi fi
...@@ -55,8 +55,8 @@ set_debarch() { ...@@ -55,8 +55,8 @@ set_debarch() {
aarch64|arm64) aarch64|arm64)
debarch=arm64 ;; debarch=arm64 ;;
arm*) arm*)
if is_enabled AEABI; then if is_enabled CONFIG_AEABI; then
debarch=arm$(if_enabled_echo VFP hf el) debarch=arm$(if_enabled_echo CONFIG_VFP hf el)
else else
debarch=arm debarch=arm
fi fi
...@@ -64,10 +64,10 @@ set_debarch() { ...@@ -64,10 +64,10 @@ set_debarch() {
openrisc) openrisc)
debarch=or1k ;; debarch=or1k ;;
sh) sh)
if is_enabled CPU_SH3; then if is_enabled CONFIG_CPU_SH3; then
debarch=sh3$(if_enabled_echo CPU_BIG_ENDIAN eb) debarch=sh3$(if_enabled_echo CONFIG_CPU_BIG_ENDIAN eb)
elif is_enabled CPU_SH4; then elif is_enabled CONFIG_CPU_SH4; then
debarch=sh4$(if_enabled_echo CPU_BIG_ENDIAN eb) debarch=sh4$(if_enabled_echo CONFIG_CPU_BIG_ENDIAN eb)
fi fi
;; ;;
esac esac
...@@ -132,8 +132,12 @@ else ...@@ -132,8 +132,12 @@ else
echo >&2 "Install lsb-release or set \$KDEB_CHANGELOG_DIST explicitly" echo >&2 "Install lsb-release or set \$KDEB_CHANGELOG_DIST explicitly"
fi fi
mkdir -p debian/ mkdir -p debian/source/
echo "1.0" > debian/source/format
echo $debarch > debian/arch echo $debarch > debian/arch
extra_build_depends=", $(if_enabled_echo CONFIG_UNWINDER_ORC libelf-dev)"
extra_build_depends="$extra_build_depends, $(if_enabled_echo CONFIG_SYSTEM_TRUSTED_KEYRING libssl-dev:native)"
# Generate a simple changelog template # Generate a simple changelog template
cat <<EOF > debian/changelog cat <<EOF > debian/changelog
...@@ -170,7 +174,7 @@ Source: $sourcename ...@@ -170,7 +174,7 @@ Source: $sourcename
Section: kernel Section: kernel
Priority: optional Priority: optional
Maintainer: $maintainer Maintainer: $maintainer
Build-Depends: bc, kmod, cpio Build-Depends: bc, kmod, cpio, bison, flex | flex:native $extra_build_depends
Homepage: http://www.kernel.org/ Homepage: http://www.kernel.org/
Package: $packagename Package: $packagename
...@@ -221,5 +225,6 @@ clean: ...@@ -221,5 +225,6 @@ clean:
binary: binary-arch binary: binary-arch
EOF EOF
chmod +x debian/rules
exit 0 exit 0
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册