Commit 746b25b1 authored by Linus Torvalds's avatar Linus Torvalds

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

Pull Kbuild updates from Masahiro Yamada:

 - Support 'make compile_commands.json' to generate the compilation
   database more easily, avoiding stale entries

 - Support 'make clang-analyzer' and 'make clang-tidy' for static checks
   using clang-tidy

 - Preprocess scripts/modules.lds.S to allow CONFIG options in the
   module linker script

 - Drop cc-option tests from compiler flags supported by our minimal
   GCC/Clang versions

 - Use always 12-digits commit hash for CONFIG_LOCALVERSION_AUTO=y

 - Use sha1 build id for both BFD linker and LLD

 - Improve deb-pkg for reproducible builds and rootless builds

 - Remove stale, useless scripts/namespace.pl

 - Turn -Wreturn-type warning into error

 - Fix build error of deb-pkg when CONFIG_MODULES=n

 - Replace 'hostname' command with more portable 'uname -n'

 - Various Makefile cleanups

* tag 'kbuild-v5.10' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild: (34 commits)
  kbuild: Use uname for LINUX_COMPILE_HOST detection
  kbuild: Only add -fno-var-tracking-assignments for old GCC versions
  kbuild: remove leftover comment for filechk utility
  treewide: remove DISABLE_LTO
  kbuild: deb-pkg: clean up package name variables
  kbuild: deb-pkg: do not build linux-headers package if CONFIG_MODULES=n
  kbuild: enforce -Werror=return-type
  scripts: remove namespace.pl
  builddeb: Add support for all required debian/rules targets
  builddeb: Enable rootless builds
  builddeb: Pass -n to gzip for reproducible packages
  kbuild: split the build log of kallsyms
  kbuild: explicitly specify the build id style
  scripts/setlocalversion: make git describe output more reliable
  kbuild: remove cc-option test of -Werror=date-time
  kbuild: remove cc-option test of -fno-stack-check
  kbuild: remove cc-option test of -fno-strict-overflow
  kbuild: move CFLAGS_{KASAN,UBSAN,KCSAN} exports to relevant Makefiles
  kbuild: remove redundant CONFIG_KASAN check from scripts/Makefile.kasan
  kbuild: do not create built-in objects for external module builds
  ...
parents 2b714820 1e66d50a
...@@ -53,8 +53,7 @@ and elsewhere regarding submitting Linux kernel patches. ...@@ -53,8 +53,7 @@ and elsewhere regarding submitting Linux kernel patches.
9) Check cleanly with sparse. 9) Check cleanly with sparse.
10) Use ``make checkstack`` and ``make namespacecheck`` and fix any problems 10) Use ``make checkstack`` and fix any problems that it finds.
that they find.
.. note:: .. note::
......
...@@ -4273,6 +4273,7 @@ W: https://clangbuiltlinux.github.io/ ...@@ -4273,6 +4273,7 @@ W: https://clangbuiltlinux.github.io/
B: https://github.com/ClangBuiltLinux/linux/issues B: https://github.com/ClangBuiltLinux/linux/issues
C: irc://chat.freenode.net/clangbuiltlinux C: irc://chat.freenode.net/clangbuiltlinux
F: Documentation/kbuild/llvm.rst F: Documentation/kbuild/llvm.rst
F: scripts/clang-tools/
K: \b(?i:clang|llvm)\b K: \b(?i:clang|llvm)\b
CLEANCACHE API CLEANCACHE API
......
...@@ -497,7 +497,7 @@ KBUILD_AFLAGS := -D__ASSEMBLY__ -fno-PIE ...@@ -497,7 +497,7 @@ KBUILD_AFLAGS := -D__ASSEMBLY__ -fno-PIE
KBUILD_CFLAGS := -Wall -Wundef -Werror=strict-prototypes -Wno-trigraphs \ KBUILD_CFLAGS := -Wall -Wundef -Werror=strict-prototypes -Wno-trigraphs \
-fno-strict-aliasing -fno-common -fshort-wchar -fno-PIE \ -fno-strict-aliasing -fno-common -fshort-wchar -fno-PIE \
-Werror=implicit-function-declaration -Werror=implicit-int \ -Werror=implicit-function-declaration -Werror=implicit-int \
-Wno-format-security \ -Werror=return-type -Wno-format-security \
-std=gnu89 -std=gnu89
KBUILD_CPPFLAGS := -D__KERNEL__ KBUILD_CPPFLAGS := -D__KERNEL__
KBUILD_AFLAGS_KERNEL := KBUILD_AFLAGS_KERNEL :=
...@@ -505,7 +505,6 @@ KBUILD_CFLAGS_KERNEL := ...@@ -505,7 +505,6 @@ KBUILD_CFLAGS_KERNEL :=
KBUILD_AFLAGS_MODULE := -DMODULE KBUILD_AFLAGS_MODULE := -DMODULE
KBUILD_CFLAGS_MODULE := -DMODULE KBUILD_CFLAGS_MODULE := -DMODULE
KBUILD_LDFLAGS_MODULE := KBUILD_LDFLAGS_MODULE :=
export KBUILD_LDS_MODULE := $(srctree)/scripts/module-common.lds
KBUILD_LDFLAGS := KBUILD_LDFLAGS :=
CLANG_FLAGS := CLANG_FLAGS :=
...@@ -517,7 +516,6 @@ export KBUILD_HOSTCXXFLAGS KBUILD_HOSTLDFLAGS KBUILD_HOSTLDLIBS LDFLAGS_MODULE ...@@ -517,7 +516,6 @@ export KBUILD_HOSTCXXFLAGS KBUILD_HOSTLDFLAGS KBUILD_HOSTLDLIBS LDFLAGS_MODULE
export KBUILD_CPPFLAGS NOSTDINC_FLAGS LINUXINCLUDE OBJCOPYFLAGS KBUILD_LDFLAGS export KBUILD_CPPFLAGS NOSTDINC_FLAGS LINUXINCLUDE OBJCOPYFLAGS KBUILD_LDFLAGS
export KBUILD_CFLAGS CFLAGS_KERNEL CFLAGS_MODULE export KBUILD_CFLAGS CFLAGS_KERNEL CFLAGS_MODULE
export CFLAGS_KASAN CFLAGS_KASAN_NOSANITIZE CFLAGS_UBSAN CFLAGS_KCSAN
export KBUILD_AFLAGS AFLAGS_KERNEL AFLAGS_MODULE export KBUILD_AFLAGS AFLAGS_KERNEL AFLAGS_MODULE
export KBUILD_AFLAGS_MODULE KBUILD_CFLAGS_MODULE KBUILD_LDFLAGS_MODULE export KBUILD_AFLAGS_MODULE KBUILD_CFLAGS_MODULE KBUILD_LDFLAGS_MODULE
export KBUILD_AFLAGS_KERNEL KBUILD_CFLAGS_KERNEL export KBUILD_AFLAGS_KERNEL KBUILD_CFLAGS_KERNEL
...@@ -634,7 +632,7 @@ endif ...@@ -634,7 +632,7 @@ endif
# in addition to whatever we do anyway. # in addition to whatever we do anyway.
# Just "make" or "make all" shall build modules as well # Just "make" or "make all" shall build modules as well
ifneq ($(filter all modules nsdeps,$(MAKECMDGOALS)),) ifneq ($(filter all modules nsdeps %compile_commands.json clang-%,$(MAKECMDGOALS)),)
KBUILD_MODULES := 1 KBUILD_MODULES := 1
endif endif
...@@ -707,8 +705,11 @@ $(KCONFIG_CONFIG): ...@@ -707,8 +705,11 @@ $(KCONFIG_CONFIG):
# This exploits the 'multi-target pattern rule' trick. # This exploits the 'multi-target pattern rule' trick.
# The syncconfig should be executed only once to make all the targets. # The syncconfig should be executed only once to make all the targets.
# (Note: use the grouped target '&:' when we bump to GNU Make 4.3) # (Note: use the grouped target '&:' when we bump to GNU Make 4.3)
quiet_cmd_syncconfig = SYNC $@
cmd_syncconfig = $(MAKE) -f $(srctree)/Makefile syncconfig
%/config/auto.conf %/config/auto.conf.cmd %/generated/autoconf.h: $(KCONFIG_CONFIG) %/config/auto.conf %/config/auto.conf.cmd %/generated/autoconf.h: $(KCONFIG_CONFIG)
$(Q)$(MAKE) -f $(srctree)/Makefile syncconfig +$(call cmd,syncconfig)
else # !may-sync-config else # !may-sync-config
# External modules and some install targets need include/generated/autoconf.h # External modules and some install targets need include/generated/autoconf.h
# and include/config/auto.conf but do not care if they are up-to-date. # and include/config/auto.conf but do not care if they are up-to-date.
...@@ -813,16 +814,22 @@ KBUILD_CFLAGS += -ftrivial-auto-var-init=zero ...@@ -813,16 +814,22 @@ KBUILD_CFLAGS += -ftrivial-auto-var-init=zero
KBUILD_CFLAGS += -enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from-clang KBUILD_CFLAGS += -enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from-clang
endif endif
DEBUG_CFLAGS := $(call cc-option, -fno-var-tracking-assignments) # Workaround for GCC versions < 5.0
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61801
ifdef CONFIG_CC_IS_GCC
DEBUG_CFLAGS := $(call cc-ifversion, -lt, 0500, $(call cc-option, -fno-var-tracking-assignments))
endif
ifdef CONFIG_DEBUG_INFO ifdef CONFIG_DEBUG_INFO
ifdef CONFIG_DEBUG_INFO_SPLIT ifdef CONFIG_DEBUG_INFO_SPLIT
DEBUG_CFLAGS += -gsplit-dwarf DEBUG_CFLAGS += -gsplit-dwarf
else else
DEBUG_CFLAGS += -g DEBUG_CFLAGS += -g
endif endif
KBUILD_AFLAGS += -Wa,-gdwarf-2 KBUILD_AFLAGS += -Wa,-gdwarf-2
endif
ifdef CONFIG_DEBUG_INFO_DWARF4 ifdef CONFIG_DEBUG_INFO_DWARF4
DEBUG_CFLAGS += -gdwarf-4 DEBUG_CFLAGS += -gdwarf-4
endif endif
...@@ -838,6 +845,8 @@ KBUILD_AFLAGS += -gz=zlib ...@@ -838,6 +845,8 @@ KBUILD_AFLAGS += -gz=zlib
KBUILD_LDFLAGS += --compress-debug-sections=zlib KBUILD_LDFLAGS += --compress-debug-sections=zlib
endif endif
endif # CONFIG_DEBUG_INFO
KBUILD_CFLAGS += $(DEBUG_CFLAGS) KBUILD_CFLAGS += $(DEBUG_CFLAGS)
export DEBUG_CFLAGS export DEBUG_CFLAGS
...@@ -919,16 +928,16 @@ KBUILD_CFLAGS += $(call cc-disable-warning, restrict) ...@@ -919,16 +928,16 @@ KBUILD_CFLAGS += $(call cc-disable-warning, restrict)
KBUILD_CFLAGS += $(call cc-disable-warning, maybe-uninitialized) KBUILD_CFLAGS += $(call cc-disable-warning, maybe-uninitialized)
# disable invalid "can't wrap" optimizations for signed / pointers # disable invalid "can't wrap" optimizations for signed / pointers
KBUILD_CFLAGS += $(call cc-option,-fno-strict-overflow) KBUILD_CFLAGS += -fno-strict-overflow
# Make sure -fstack-check isn't enabled (like gentoo apparently did) # Make sure -fstack-check isn't enabled (like gentoo apparently did)
KBUILD_CFLAGS += $(call cc-option,-fno-stack-check,) KBUILD_CFLAGS += -fno-stack-check
# conserve stack if available # conserve stack if available
KBUILD_CFLAGS += $(call cc-option,-fconserve-stack) KBUILD_CFLAGS += $(call cc-option,-fconserve-stack)
# Prohibit date/time macros, which would make the build non-deterministic # Prohibit date/time macros, which would make the build non-deterministic
KBUILD_CFLAGS += $(call cc-option,-Werror=date-time) KBUILD_CFLAGS += -Werror=date-time
# enforce correct pointer usage # enforce correct pointer usage
KBUILD_CFLAGS += $(call cc-option,-Werror=incompatible-pointer-types) KBUILD_CFLAGS += $(call cc-option,-Werror=incompatible-pointer-types)
...@@ -964,8 +973,8 @@ KBUILD_CPPFLAGS += $(KCPPFLAGS) ...@@ -964,8 +973,8 @@ KBUILD_CPPFLAGS += $(KCPPFLAGS)
KBUILD_AFLAGS += $(KAFLAGS) KBUILD_AFLAGS += $(KAFLAGS)
KBUILD_CFLAGS += $(KCFLAGS) KBUILD_CFLAGS += $(KCFLAGS)
KBUILD_LDFLAGS_MODULE += --build-id KBUILD_LDFLAGS_MODULE += --build-id=sha1
LDFLAGS_vmlinux += --build-id LDFLAGS_vmlinux += --build-id=sha1
ifeq ($(CONFIG_STRIP_ASM_SYMS),y) ifeq ($(CONFIG_STRIP_ASM_SYMS),y)
LDFLAGS_vmlinux += $(call ld-option, -X,) LDFLAGS_vmlinux += $(call ld-option, -X,)
...@@ -1377,7 +1386,7 @@ endif ...@@ -1377,7 +1386,7 @@ endif
# using awk while concatenating to the final file. # using awk while concatenating to the final file.
PHONY += modules PHONY += modules
modules: $(if $(KBUILD_BUILTIN),vmlinux) modules_check modules: $(if $(KBUILD_BUILTIN),vmlinux) modules_check modules_prepare
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
PHONY += modules_check PHONY += modules_check
...@@ -1394,6 +1403,7 @@ targets += modules.order ...@@ -1394,6 +1403,7 @@ targets += modules.order
# Target to prepare building external modules # Target to prepare building external modules
PHONY += modules_prepare PHONY += modules_prepare
modules_prepare: prepare modules_prepare: prepare
$(Q)$(MAKE) $(build)=scripts scripts/module.lds
# Target to install modules # Target to install modules
PHONY += modules_install PHONY += modules_install
...@@ -1452,7 +1462,8 @@ endif # CONFIG_MODULES ...@@ -1452,7 +1462,8 @@ endif # CONFIG_MODULES
# Directories & files removed with 'make clean' # Directories & files removed with 'make clean'
CLEAN_FILES += include/ksym vmlinux.symvers \ CLEAN_FILES += include/ksym vmlinux.symvers \
modules.builtin modules.builtin.modinfo modules.nsdeps modules.builtin modules.builtin.modinfo modules.nsdeps \
compile_commands.json
# Directories & files removed with 'make mrproper' # Directories & files removed with 'make mrproper'
MRPROPER_FILES += include/config include/generated \ MRPROPER_FILES += include/config include/generated \
...@@ -1558,12 +1569,13 @@ help: ...@@ -1558,12 +1569,13 @@ help:
echo '' echo ''
@echo 'Static analysers:' @echo 'Static analysers:'
@echo ' checkstack - Generate a list of stack hogs' @echo ' checkstack - Generate a list of stack hogs'
@echo ' namespacecheck - Name space analysis on compiled kernel'
@echo ' versioncheck - Sanity check on version.h usage' @echo ' versioncheck - Sanity check on version.h usage'
@echo ' includecheck - Check for duplicate included header files' @echo ' includecheck - Check for duplicate included header files'
@echo ' export_report - List the usages of all exported symbols' @echo ' export_report - List the usages of all exported symbols'
@echo ' headerdep - Detect inclusion cycles in headers' @echo ' headerdep - Detect inclusion cycles in headers'
@echo ' coccicheck - Check with Coccinelle' @echo ' coccicheck - Check with Coccinelle'
@echo ' clang-analyzer - Check with clang static analyzer'
@echo ' clang-tidy - Check with clang-tidy'
@echo '' @echo ''
@echo 'Tools:' @echo 'Tools:'
@echo ' nsdeps - Generate missing symbol namespace dependencies' @echo ' nsdeps - Generate missing symbol namespace dependencies'
...@@ -1681,14 +1693,18 @@ else # KBUILD_EXTMOD ...@@ -1681,14 +1693,18 @@ else # KBUILD_EXTMOD
# Install the modules built in the module directory # Install the modules built in the module directory
# Assumes install directory is already created # Assumes install directory is already created
# We are always building modules # We are always building only modules.
KBUILD_BUILTIN :=
KBUILD_MODULES := 1 KBUILD_MODULES := 1
build-dirs := $(KBUILD_EXTMOD) build-dirs := $(KBUILD_EXTMOD)
PHONY += modules PHONY += modules
modules: descend modules: $(MODORDER)
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
$(MODORDER): descend
@:
PHONY += modules_install PHONY += modules_install
modules_install: _emodinst_ _emodinst_post modules_install: _emodinst_ _emodinst_post
...@@ -1702,8 +1718,12 @@ PHONY += _emodinst_post ...@@ -1702,8 +1718,12 @@ PHONY += _emodinst_post
_emodinst_post: _emodinst_ _emodinst_post: _emodinst_
$(call cmd,depmod) $(call cmd,depmod)
compile_commands.json: $(extmod-prefix)compile_commands.json
PHONY += compile_commands.json
clean-dirs := $(KBUILD_EXTMOD) clean-dirs := $(KBUILD_EXTMOD)
clean: rm-files := $(KBUILD_EXTMOD)/Module.symvers $(KBUILD_EXTMOD)/modules.nsdeps clean: rm-files := $(KBUILD_EXTMOD)/Module.symvers $(KBUILD_EXTMOD)/modules.nsdeps \
$(KBUILD_EXTMOD)/compile_commands.json
PHONY += help PHONY += help
help: help:
...@@ -1715,7 +1735,9 @@ help: ...@@ -1715,7 +1735,9 @@ help:
@echo ' clean - remove generated files in module directory only' @echo ' clean - remove generated files in module directory only'
@echo '' @echo ''
PHONY += prepare # no-op for external module builds
PHONY += prepare modules_prepare
endif # KBUILD_EXTMOD endif # KBUILD_EXTMOD
# Single targets # Single targets
...@@ -1748,7 +1770,7 @@ MODORDER := .modules.tmp ...@@ -1748,7 +1770,7 @@ MODORDER := .modules.tmp
endif endif
PHONY += single_modpost PHONY += single_modpost
single_modpost: $(single-no-ko) single_modpost: $(single-no-ko) modules_prepare
$(Q){ $(foreach m, $(single-ko), echo $(extmod-prefix)$m;) } > $(MODORDER) $(Q){ $(foreach m, $(single-ko), echo $(extmod-prefix)$m;) } > $(MODORDER)
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
...@@ -1816,10 +1838,37 @@ nsdeps: export KBUILD_NSDEPS=1 ...@@ -1816,10 +1838,37 @@ nsdeps: export KBUILD_NSDEPS=1
nsdeps: modules nsdeps: modules
$(Q)$(CONFIG_SHELL) $(srctree)/scripts/nsdeps $(Q)$(CONFIG_SHELL) $(srctree)/scripts/nsdeps
# Clang Tooling
# ---------------------------------------------------------------------------
quiet_cmd_gen_compile_commands = GEN $@
cmd_gen_compile_commands = $(PYTHON3) $< -a $(AR) -o $@ $(filter-out $<, $(real-prereqs))
$(extmod-prefix)compile_commands.json: scripts/clang-tools/gen_compile_commands.py \
$(if $(KBUILD_EXTMOD),,$(KBUILD_VMLINUX_OBJS) $(KBUILD_VMLINUX_LIBS)) \
$(if $(CONFIG_MODULES), $(MODORDER)) FORCE
$(call if_changed,gen_compile_commands)
targets += $(extmod-prefix)compile_commands.json
PHONY += clang-tidy clang-analyzer
ifdef CONFIG_CC_IS_CLANG
quiet_cmd_clang_tools = CHECK $<
cmd_clang_tools = $(PYTHON3) $(srctree)/scripts/clang-tools/run-clang-tools.py $@ $<
clang-tidy clang-analyzer: $(extmod-prefix)compile_commands.json
$(call cmd,clang_tools)
else
clang-tidy clang-analyzer:
@echo "$@ requires CC=clang" >&2
@false
endif
# Scripts to check various things for consistency # Scripts to check various things for consistency
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
PHONY += includecheck versioncheck coccicheck namespacecheck export_report PHONY += includecheck versioncheck coccicheck export_report
includecheck: includecheck:
find $(srctree)/* $(RCS_FIND_IGNORE) \ find $(srctree)/* $(RCS_FIND_IGNORE) \
...@@ -1834,9 +1883,6 @@ versioncheck: ...@@ -1834,9 +1883,6 @@ versioncheck:
coccicheck: coccicheck:
$(Q)$(BASH) $(srctree)/scripts/$@ $(Q)$(BASH) $(srctree)/scripts/$@
namespacecheck:
$(PERL) $(srctree)/scripts/namespace.pl
export_report: export_report:
$(PERL) $(srctree)/scripts/export_report.pl $(PERL) $(srctree)/scripts/export_report.pl
......
...@@ -20,10 +20,6 @@ endif ...@@ -20,10 +20,6 @@ endif
# linker. All sections should be explicitly named in the linker script. # linker. All sections should be explicitly named in the linker script.
LDFLAGS_vmlinux += $(call ld-option, --orphan-handling=warn) LDFLAGS_vmlinux += $(call ld-option, --orphan-handling=warn)
ifeq ($(CONFIG_ARM_MODULE_PLTS),y)
KBUILD_LDS_MODULE += $(srctree)/arch/arm/kernel/module.lds
endif
GZFLAGS :=-9 GZFLAGS :=-9
#KBUILD_CFLAGS +=-pipe #KBUILD_CFLAGS +=-pipe
......
/* SPDX-License-Identifier: GPL-2.0 */ /* SPDX-License-Identifier: GPL-2.0 */
#ifdef CONFIG_ARM_MODULE_PLTS
SECTIONS { SECTIONS {
.plt : { BYTE(0) } .plt : { BYTE(0) }
.init.plt : { BYTE(0) } .init.plt : { BYTE(0) }
} }
#endif
...@@ -19,7 +19,7 @@ ccflags-y += -DDISABLE_BRANCH_PROFILING -DBUILD_VDSO32 ...@@ -19,7 +19,7 @@ ccflags-y += -DDISABLE_BRANCH_PROFILING -DBUILD_VDSO32
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) \
--hash-style=sysv --build-id \ --hash-style=sysv --build-id=sha1 \
-T -T
obj-$(CONFIG_VDSO) += vdso.o obj-$(CONFIG_VDSO) += vdso.o
......
...@@ -126,10 +126,6 @@ endif ...@@ -126,10 +126,6 @@ endif
CHECKFLAGS += -D__aarch64__ CHECKFLAGS += -D__aarch64__
ifeq ($(CONFIG_ARM64_MODULE_PLTS),y)
KBUILD_LDS_MODULE += $(srctree)/arch/arm64/kernel/module.lds
endif
ifeq ($(CONFIG_DYNAMIC_FTRACE_WITH_REGS),y) ifeq ($(CONFIG_DYNAMIC_FTRACE_WITH_REGS),y)
KBUILD_CPPFLAGS += -DCC_USING_PATCHABLE_FUNCTION_ENTRY KBUILD_CPPFLAGS += -DCC_USING_PATCHABLE_FUNCTION_ENTRY
CC_FLAGS_FTRACE := -fpatchable-function-entry=2 CC_FLAGS_FTRACE := -fpatchable-function-entry=2
......
#ifdef CONFIG_ARM64_MODULE_PLTS
SECTIONS { SECTIONS {
.plt (NOLOAD) : { BYTE(0) } .plt (NOLOAD) : { BYTE(0) }
.init.plt (NOLOAD) : { BYTE(0) } .init.plt (NOLOAD) : { BYTE(0) }
.text.ftrace_trampoline (NOLOAD) : { BYTE(0) } .text.ftrace_trampoline (NOLOAD) : { BYTE(0) }
} }
#endif
...@@ -24,14 +24,13 @@ btildflags-$(CONFIG_ARM64_BTI_KERNEL) += -z force-bti ...@@ -24,14 +24,13 @@ btildflags-$(CONFIG_ARM64_BTI_KERNEL) += -z force-bti
# routines, as x86 does (see 6f121e548f83 ("x86, vdso: Reimplement vdso.so # routines, as x86 does (see 6f121e548f83 ("x86, vdso: Reimplement vdso.so
# preparation in build-time C")). # preparation in build-time C")).
ldflags-y := -shared -nostdlib -soname=linux-vdso.so.1 --hash-style=sysv \ ldflags-y := -shared -nostdlib -soname=linux-vdso.so.1 --hash-style=sysv \
-Bsymbolic $(call ld-option, --no-eh-frame-hdr) --build-id -n \ -Bsymbolic $(call ld-option, --no-eh-frame-hdr) --build-id=sha1 -n \
$(btildflags-y) -T $(btildflags-y) -T
ccflags-y := -fno-common -fno-builtin -fno-stack-protector -ffixed-x18 ccflags-y := -fno-common -fno-builtin -fno-stack-protector -ffixed-x18
ccflags-y += -DDISABLE_BRANCH_PROFILING ccflags-y += -DDISABLE_BRANCH_PROFILING
CFLAGS_REMOVE_vgettimeofday.o = $(CC_FLAGS_FTRACE) -Os $(CC_FLAGS_SCS) $(GCC_PLUGINS_CFLAGS) CFLAGS_REMOVE_vgettimeofday.o = $(CC_FLAGS_FTRACE) -Os $(CC_FLAGS_SCS) $(GCC_PLUGINS_CFLAGS)
KBUILD_CFLAGS += $(DISABLE_LTO)
KASAN_SANITIZE := n KASAN_SANITIZE := n
UBSAN_SANITIZE := n UBSAN_SANITIZE := n
OBJECT_FILES_NON_STANDARD := y OBJECT_FILES_NON_STANDARD := y
...@@ -47,7 +46,7 @@ endif ...@@ -47,7 +46,7 @@ endif
GCOV_PROFILE := n GCOV_PROFILE := n
obj-y += vdso.o obj-y += vdso.o
extra-y += vdso.lds targets += vdso.lds
CPPFLAGS_vdso.lds += -P -C -U$(ARCH) CPPFLAGS_vdso.lds += -P -C -U$(ARCH)
# Force dependency (incbin is bad) # Force dependency (incbin is bad)
......
...@@ -90,9 +90,9 @@ VDSO_CFLAGS += -O2 ...@@ -90,9 +90,9 @@ VDSO_CFLAGS += -O2
# Some useful compiler-dependent flags from top-level Makefile # Some useful compiler-dependent flags from top-level Makefile
VDSO_CFLAGS += $(call cc32-option,-Wdeclaration-after-statement,) VDSO_CFLAGS += $(call cc32-option,-Wdeclaration-after-statement,)
VDSO_CFLAGS += $(call cc32-option,-Wno-pointer-sign) VDSO_CFLAGS += $(call cc32-option,-Wno-pointer-sign)
VDSO_CFLAGS += $(call cc32-option,-fno-strict-overflow) VDSO_CFLAGS += -fno-strict-overflow
VDSO_CFLAGS += $(call cc32-option,-Werror=strict-prototypes) VDSO_CFLAGS += $(call cc32-option,-Werror=strict-prototypes)
VDSO_CFLAGS += $(call cc32-option,-Werror=date-time) VDSO_CFLAGS += -Werror=date-time
VDSO_CFLAGS += $(call cc32-option,-Werror=incompatible-pointer-types) VDSO_CFLAGS += $(call cc32-option,-Werror=incompatible-pointer-types)
# The 32-bit compiler does not provide 128-bit integers, which are used in # The 32-bit compiler does not provide 128-bit integers, which are used in
...@@ -128,7 +128,7 @@ VDSO_LDFLAGS += -Wl,-Bsymbolic -Wl,--no-undefined -Wl,-soname=linux-vdso.so.1 ...@@ -128,7 +128,7 @@ 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 += -Wl,--hash-style=sysv VDSO_LDFLAGS += -Wl,--hash-style=sysv
VDSO_LDFLAGS += -Wl,--build-id VDSO_LDFLAGS += -Wl,--build-id=sha1
VDSO_LDFLAGS += $(call cc32-ldoption,-fuse-ld=bfd) VDSO_LDFLAGS += $(call cc32-ldoption,-fuse-ld=bfd)
...@@ -155,7 +155,7 @@ asm-obj-vdso := $(addprefix $(obj)/, $(asm-obj-vdso)) ...@@ -155,7 +155,7 @@ asm-obj-vdso := $(addprefix $(obj)/, $(asm-obj-vdso))
obj-vdso := $(c-obj-vdso) $(c-obj-vdso-gettimeofday) $(asm-obj-vdso) obj-vdso := $(c-obj-vdso) $(c-obj-vdso-gettimeofday) $(asm-obj-vdso)
obj-y += vdso.o obj-y += vdso.o
extra-y += vdso.lds targets += vdso.lds
CPPFLAGS_vdso.lds += -P -C -U$(ARCH) CPPFLAGS_vdso.lds += -P -C -U$(ARCH)
# Force dependency (vdso.s includes vdso.so through incbin) # Force dependency (vdso.s includes vdso.so through incbin)
......
...@@ -20,7 +20,6 @@ CHECKFLAGS += -D__ia64=1 -D__ia64__=1 -D_LP64 -D__LP64__ ...@@ -20,7 +20,6 @@ CHECKFLAGS += -D__ia64=1 -D__ia64__=1 -D_LP64 -D__LP64__
OBJCOPYFLAGS := --strip-all OBJCOPYFLAGS := --strip-all
LDFLAGS_vmlinux := -static LDFLAGS_vmlinux := -static
KBUILD_LDS_MODULE += $(srctree)/arch/ia64/module.lds
KBUILD_AFLAGS_KERNEL := -mconstant-gp KBUILD_AFLAGS_KERNEL := -mconstant-gp
EXTRA := EXTRA :=
......
...@@ -75,7 +75,6 @@ KBUILD_CPPFLAGS += -D__uClinux__ ...@@ -75,7 +75,6 @@ KBUILD_CPPFLAGS += -D__uClinux__
endif endif
KBUILD_LDFLAGS := -m m68kelf KBUILD_LDFLAGS := -m m68kelf
KBUILD_LDS_MODULE += $(srctree)/arch/m68k/kernel/module.lds
ifdef CONFIG_SUN3 ifdef CONFIG_SUN3
LDFLAGS_vmlinux = -N LDFLAGS_vmlinux = -N
......
...@@ -61,7 +61,7 @@ endif ...@@ -61,7 +61,7 @@ endif
# VDSO linker flags. # VDSO linker flags.
ldflags-y := -Bsymbolic --no-undefined -soname=linux-vdso.so.1 \ ldflags-y := -Bsymbolic --no-undefined -soname=linux-vdso.so.1 \
$(filter -E%,$(KBUILD_CFLAGS)) -nostdlib -shared \ $(filter -E%,$(KBUILD_CFLAGS)) -nostdlib -shared \
-G 0 --eh-frame-hdr --hash-style=sysv --build-id -T -G 0 --eh-frame-hdr --hash-style=sysv --build-id=sha1 -T
CFLAGS_REMOVE_vdso.o = -pg CFLAGS_REMOVE_vdso.o = -pg
......
...@@ -20,7 +20,7 @@ GCOV_PROFILE := n ...@@ -20,7 +20,7 @@ GCOV_PROFILE := n
obj-y += vdso.o obj-y += vdso.o
extra-y += vdso.lds targets += vdso.lds
CPPFLAGS_vdso.lds += -P -C -U$(ARCH) CPPFLAGS_vdso.lds += -P -C -U$(ARCH)
# Force dependency # Force dependency
......
...@@ -65,7 +65,6 @@ UTS_MACHINE := $(subst $(space),,$(machine-y)) ...@@ -65,7 +65,6 @@ UTS_MACHINE := $(subst $(space),,$(machine-y))
ifdef CONFIG_PPC32 ifdef CONFIG_PPC32
KBUILD_LDFLAGS_MODULE += arch/powerpc/lib/crtsavres.o KBUILD_LDFLAGS_MODULE += arch/powerpc/lib/crtsavres.o
else else
KBUILD_LDS_MODULE += $(srctree)/arch/powerpc/kernel/module.lds
ifeq ($(call ld-ifversion, -ge, 225000000, y),y) ifeq ($(call ld-ifversion, -ge, 225000000, y),y)
# Have the linker provide sfpr if possible. # Have the linker provide sfpr if possible.
# There is a corresponding test in arch/powerpc/lib/Makefile # There is a corresponding test in arch/powerpc/lib/Makefile
......
...@@ -29,7 +29,7 @@ ccflags-y := -shared -fno-common -fno-builtin -nostdlib \ ...@@ -29,7 +29,7 @@ ccflags-y := -shared -fno-common -fno-builtin -nostdlib \
asflags-y := -D__VDSO32__ -s asflags-y := -D__VDSO32__ -s
obj-y += vdso32_wrapper.o obj-y += vdso32_wrapper.o
extra-y += vdso32.lds targets += vdso32.lds
CPPFLAGS_vdso32.lds += -P -C -Upowerpc CPPFLAGS_vdso32.lds += -P -C -Upowerpc
# Force dependency (incbin is bad) # Force dependency (incbin is bad)
......
...@@ -17,7 +17,7 @@ ccflags-y := -shared -fno-common -fno-builtin -nostdlib \ ...@@ -17,7 +17,7 @@ ccflags-y := -shared -fno-common -fno-builtin -nostdlib \
asflags-y := -D__VDSO64__ -s asflags-y := -D__VDSO64__ -s
obj-y += vdso64_wrapper.o obj-y += vdso64_wrapper.o
extra-y += vdso64.lds targets += vdso64.lds
CPPFLAGS_vdso64.lds += -P -C -U$(ARCH) CPPFLAGS_vdso64.lds += -P -C -U$(ARCH)
# Force dependency (incbin is bad) # Force dependency (incbin is bad)
......
...@@ -53,9 +53,6 @@ endif ...@@ -53,9 +53,6 @@ endif
ifeq ($(CONFIG_CMODEL_MEDANY),y) ifeq ($(CONFIG_CMODEL_MEDANY),y)
KBUILD_CFLAGS += -mcmodel=medany KBUILD_CFLAGS += -mcmodel=medany
endif endif
ifeq ($(CONFIG_MODULE_SECTIONS),y)
KBUILD_LDS_MODULE += $(srctree)/arch/riscv/kernel/module.lds
endif
ifeq ($(CONFIG_PERF_EVENTS),y) ifeq ($(CONFIG_PERF_EVENTS),y)
KBUILD_CFLAGS += -fno-omit-frame-pointer KBUILD_CFLAGS += -fno-omit-frame-pointer
endif endif
......
/* SPDX-License-Identifier: GPL-2.0 */ /* SPDX-License-Identifier: GPL-2.0 */
/* Copyright (C) 2017 Andes Technology Corporation */ /* Copyright (C) 2017 Andes Technology Corporation */
#ifdef CONFIG_MODULE_SECTIONS
SECTIONS { SECTIONS {
.plt (NOLOAD) : { BYTE(0) } .plt (NOLOAD) : { BYTE(0) }
.got (NOLOAD) : { BYTE(0) } .got (NOLOAD) : { BYTE(0) }
.got.plt (NOLOAD) : { BYTE(0) } .got.plt (NOLOAD) : { BYTE(0) }
} }
#endif
...@@ -49,7 +49,7 @@ $(obj)/vdso.so.dbg: $(src)/vdso.lds $(obj-vdso) FORCE ...@@ -49,7 +49,7 @@ $(obj)/vdso.so.dbg: $(src)/vdso.lds $(obj-vdso) FORCE
# refer to these symbols in the kernel code rather than hand-coded addresses. # refer to these symbols in the kernel code rather than hand-coded addresses.
SYSCFLAGS_vdso.so.dbg = -shared -s -Wl,-soname=linux-vdso.so.1 \ SYSCFLAGS_vdso.so.dbg = -shared -s -Wl,-soname=linux-vdso.so.1 \
-Wl,--build-id -Wl,--hash-style=both -Wl,--build-id=sha1 -Wl,--hash-style=both
$(obj)/vdso-dummy.o: $(src)/vdso.lds $(obj)/rt_sigreturn.o FORCE $(obj)/vdso-dummy.o: $(src)/vdso.lds $(obj)/rt_sigreturn.o FORCE
$(call if_changed,vdsold) $(call if_changed,vdsold)
......
...@@ -25,13 +25,13 @@ KBUILD_AFLAGS_64 += -m64 -s ...@@ -25,13 +25,13 @@ KBUILD_AFLAGS_64 += -m64 -s
KBUILD_CFLAGS_64 := $(filter-out -m64,$(KBUILD_CFLAGS)) KBUILD_CFLAGS_64 := $(filter-out -m64,$(KBUILD_CFLAGS))
KBUILD_CFLAGS_64 += -m64 -fPIC -shared -fno-common -fno-builtin KBUILD_CFLAGS_64 += -m64 -fPIC -shared -fno-common -fno-builtin
ldflags-y := -fPIC -shared -nostdlib -soname=linux-vdso64.so.1 \ ldflags-y := -fPIC -shared -nostdlib -soname=linux-vdso64.so.1 \
--hash-style=both --build-id -T --hash-style=both --build-id=sha1 -T
$(targets:%=$(obj)/%.dbg): KBUILD_CFLAGS = $(KBUILD_CFLAGS_64) $(targets:%=$(obj)/%.dbg): KBUILD_CFLAGS = $(KBUILD_CFLAGS_64)
$(targets:%=$(obj)/%.dbg): KBUILD_AFLAGS = $(KBUILD_AFLAGS_64) $(targets:%=$(obj)/%.dbg): KBUILD_AFLAGS = $(KBUILD_AFLAGS_64)
obj-y += vdso64_wrapper.o obj-y += vdso64_wrapper.o
extra-y += vdso64.lds targets += vdso64.lds
CPPFLAGS_vdso64.lds += -P -C -U$(ARCH) CPPFLAGS_vdso64.lds += -P -C -U$(ARCH)
# Disable gcov profiling, ubsan and kasan for VDSO code # Disable gcov profiling, ubsan and kasan for VDSO code
......
...@@ -3,8 +3,6 @@ ...@@ -3,8 +3,6 @@
# Building vDSO images for sparc. # Building vDSO images for sparc.
# #
KBUILD_CFLAGS += $(DISABLE_LTO)
VDSO64-$(CONFIG_SPARC64) := y VDSO64-$(CONFIG_SPARC64) := y
VDSOCOMPAT-$(CONFIG_COMPAT) := y VDSOCOMPAT-$(CONFIG_COMPAT) := y
...@@ -115,7 +113,7 @@ quiet_cmd_vdso = VDSO $@ ...@@ -115,7 +113,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 --hash-style=both --build-id -Bsymbolic VDSO_LDFLAGS = -shared --hash-style=both --build-id=sha1 -Bsymbolic
GCOV_PROFILE := n GCOV_PROFILE := n
# #
......
...@@ -16,6 +16,7 @@ generic-y += kdebug.h ...@@ -16,6 +16,7 @@ generic-y += kdebug.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 += mmiowb.h generic-y += mmiowb.h
generic-y += module.lds.h
generic-y += param.h generic-y += param.h
generic-y += pci.h generic-y += pci.h
generic-y += percpu.h generic-y += percpu.h
......
...@@ -9,8 +9,6 @@ ARCH_REL_TYPE_ABS := R_X86_64_JUMP_SLOT|R_X86_64_GLOB_DAT|R_X86_64_RELATIVE| ...@@ -9,8 +9,6 @@ ARCH_REL_TYPE_ABS := R_X86_64_JUMP_SLOT|R_X86_64_GLOB_DAT|R_X86_64_RELATIVE|
ARCH_REL_TYPE_ABS += R_386_GLOB_DAT|R_386_JMP_SLOT|R_386_RELATIVE ARCH_REL_TYPE_ABS += R_386_GLOB_DAT|R_386_JMP_SLOT|R_386_RELATIVE
include $(srctree)/lib/vdso/Makefile include $(srctree)/lib/vdso/Makefile
KBUILD_CFLAGS += $(DISABLE_LTO)
# Sanitizer runtimes are unavailable and cannot be linked here. # Sanitizer runtimes are unavailable and cannot be linked here.
KASAN_SANITIZE := n KASAN_SANITIZE := n
UBSAN_SANITIZE := n UBSAN_SANITIZE := n
...@@ -176,7 +174,7 @@ quiet_cmd_vdso = VDSO $@ ...@@ -176,7 +174,7 @@ 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 --hash-style=both --build-id \ VDSO_LDFLAGS = -shared --hash-style=both --build-id=sha1 \
$(call ld-option, --eh-frame-hdr) -Bsymbolic $(call ld-option, --eh-frame-hdr) -Bsymbolic
GCOV_PROFILE := n GCOV_PROFILE := n
......
...@@ -39,6 +39,7 @@ mandatory-y += mmiowb.h ...@@ -39,6 +39,7 @@ mandatory-y += mmiowb.h
mandatory-y += mmu.h mandatory-y += mmu.h
mandatory-y += mmu_context.h mandatory-y += mmu_context.h
mandatory-y += module.h mandatory-y += module.h
mandatory-y += module.lds.h
mandatory-y += msi.h mandatory-y += msi.h
mandatory-y += pci.h mandatory-y += pci.h
mandatory-y += percpu.h mandatory-y += percpu.h
......
/* SPDX-License-Identifier: GPL-2.0-only */
#ifndef __ASM_GENERIC_MODULE_LDS_H
#define __ASM_GENERIC_MODULE_LDS_H
/*
* <asm/module.lds.h> can specify arch-specific sections for linking modules.
* Empty for the asm-generic header.
*/
#endif /* __ASM_GENERIC_MODULE_LDS_H */
...@@ -38,9 +38,6 @@ KASAN_SANITIZE_kcov.o := n ...@@ -38,9 +38,6 @@ KASAN_SANITIZE_kcov.o := n
KCSAN_SANITIZE_kcov.o := n KCSAN_SANITIZE_kcov.o := n
CFLAGS_kcov.o := $(call cc-option, -fno-conserve-stack) -fno-stack-protector CFLAGS_kcov.o := $(call cc-option, -fno-conserve-stack) -fno-stack-protector
# cond_syscall is currently not LTO compatible
CFLAGS_sys_ni.o = $(DISABLE_LTO)
obj-y += sched/ obj-y += sched/
obj-y += locking/ obj-y += locking/
obj-y += power/ obj-y += power/
......
...@@ -212,9 +212,10 @@ config DEBUG_INFO ...@@ -212,9 +212,10 @@ config DEBUG_INFO
If unsure, say N. If unsure, say N.
if DEBUG_INFO
config DEBUG_INFO_REDUCED config DEBUG_INFO_REDUCED
bool "Reduce debugging information" bool "Reduce debugging information"
depends on DEBUG_INFO
help help
If you say Y here gcc is instructed to generate less debugging If you say Y here gcc is instructed to generate less debugging
information for structure types. This means that tools that information for structure types. This means that tools that
...@@ -227,7 +228,6 @@ config DEBUG_INFO_REDUCED ...@@ -227,7 +228,6 @@ config DEBUG_INFO_REDUCED
config DEBUG_INFO_COMPRESSED config DEBUG_INFO_COMPRESSED
bool "Compressed debugging information" bool "Compressed debugging information"
depends on DEBUG_INFO
depends on $(cc-option,-gz=zlib) depends on $(cc-option,-gz=zlib)
depends on $(ld-option,--compress-debug-sections=zlib) depends on $(ld-option,--compress-debug-sections=zlib)
help help
...@@ -243,7 +243,6 @@ config DEBUG_INFO_COMPRESSED ...@@ -243,7 +243,6 @@ config DEBUG_INFO_COMPRESSED
config DEBUG_INFO_SPLIT config DEBUG_INFO_SPLIT
bool "Produce split debuginfo in .dwo files" bool "Produce split debuginfo in .dwo files"
depends on DEBUG_INFO
depends on $(cc-option,-gsplit-dwarf) depends on $(cc-option,-gsplit-dwarf)
help help
Generate debug info into separate .dwo files. This significantly Generate debug info into separate .dwo files. This significantly
...@@ -259,7 +258,6 @@ config DEBUG_INFO_SPLIT ...@@ -259,7 +258,6 @@ config DEBUG_INFO_SPLIT
config DEBUG_INFO_DWARF4 config DEBUG_INFO_DWARF4
bool "Generate dwarf4 debuginfo" bool "Generate dwarf4 debuginfo"
depends on DEBUG_INFO
depends on $(cc-option,-gdwarf-4) depends on $(cc-option,-gdwarf-4)
help help
Generate dwarf4 debug info. This requires recent versions Generate dwarf4 debug info. This requires recent versions
...@@ -269,7 +267,6 @@ config DEBUG_INFO_DWARF4 ...@@ -269,7 +267,6 @@ config DEBUG_INFO_DWARF4
config DEBUG_INFO_BTF config DEBUG_INFO_BTF
bool "Generate BTF typeinfo" bool "Generate BTF typeinfo"
depends on DEBUG_INFO
depends on !DEBUG_INFO_SPLIT && !DEBUG_INFO_REDUCED depends on !DEBUG_INFO_SPLIT && !DEBUG_INFO_REDUCED
depends on !GCC_PLUGIN_RANDSTRUCT || COMPILE_TEST depends on !GCC_PLUGIN_RANDSTRUCT || COMPILE_TEST
help help
...@@ -279,7 +276,6 @@ config DEBUG_INFO_BTF ...@@ -279,7 +276,6 @@ config DEBUG_INFO_BTF
config GDB_SCRIPTS config GDB_SCRIPTS
bool "Provide GDB scripts for kernel debugging" bool "Provide GDB scripts for kernel debugging"
depends on DEBUG_INFO
help help
This creates the required links to GDB helper scripts in the This creates the required links to GDB helper scripts in the
build directory. If you load vmlinux into gdb, the helper build directory. If you load vmlinux into gdb, the helper
...@@ -288,6 +284,8 @@ config GDB_SCRIPTS ...@@ -288,6 +284,8 @@ config GDB_SCRIPTS
instance. See Documentation/dev-tools/gdb-kernel-debugging.rst instance. See Documentation/dev-tools/gdb-kernel-debugging.rst
for further details. for further details.
endif # DEBUG_INFO
config ENABLE_MUST_CHECK config ENABLE_MUST_CHECK
bool "Enable __must_check logic" bool "Enable __must_check logic"
default y default y
......
...@@ -8,3 +8,4 @@ asn1_compiler ...@@ -8,3 +8,4 @@ asn1_compiler
extract-cert extract-cert
sign-file sign-file
insert-sys-cert insert-sys-cert
/module.lds
...@@ -56,8 +56,6 @@ kecho := $($(quiet)kecho) ...@@ -56,8 +56,6 @@ kecho := $($(quiet)kecho)
# - If no file exist it is created # - If no file exist it is created
# - If the content differ the new file is used # - If the content differ the new file is used
# - If they are equal no change, and no timestamp update # - If they are equal no change, and no timestamp update
# - stdin is piped in from the first prerequisite ($<) so one has
# to specify a valid file as first prerequisite (often the kbuild file)
define filechk define filechk
$(Q)set -e; \ $(Q)set -e; \
mkdir -p $(dir $@); \ mkdir -p $(dir $@); \
......
...@@ -29,6 +29,9 @@ endif ...@@ -29,6 +29,9 @@ endif
# The following programs are only built on demand # The following programs are only built on demand
hostprogs += unifdef hostprogs += unifdef
# The module linker script is preprocessed on demand
targets += module.lds
subdir-$(CONFIG_GCC_PLUGINS) += gcc-plugins subdir-$(CONFIG_GCC_PLUGINS) += gcc-plugins
subdir-$(CONFIG_MODVERSIONS) += genksyms subdir-$(CONFIG_MODVERSIONS) += genksyms
subdir-$(CONFIG_SECURITY_SELINUX) += selinux subdir-$(CONFIG_SECURITY_SELINUX) += selinux
......
...@@ -111,7 +111,7 @@ endif ...@@ -111,7 +111,7 @@ endif
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
quiet_cmd_cc_s_c = CC $(quiet_modtag) $@ quiet_cmd_cc_s_c = CC $(quiet_modtag) $@
cmd_cc_s_c = $(CC) $(filter-out $(DEBUG_CFLAGS), $(c_flags)) $(DISABLE_LTO) -fverbose-asm -S -o $@ $< cmd_cc_s_c = $(CC) $(filter-out $(DEBUG_CFLAGS), $(c_flags)) -fverbose-asm -S -o $@ $<
$(obj)/%.s: $(src)/%.c FORCE $(obj)/%.s: $(src)/%.c FORCE
$(call if_changed_dep,cc_s_c) $(call if_changed_dep,cc_s_c)
......
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
ifdef CONFIG_KASAN
CFLAGS_KASAN_NOSANITIZE := -fno-builtin CFLAGS_KASAN_NOSANITIZE := -fno-builtin
KASAN_SHADOW_OFFSET ?= $(CONFIG_KASAN_SHADOW_OFFSET) KASAN_SHADOW_OFFSET ?= $(CONFIG_KASAN_SHADOW_OFFSET)
endif
ifdef CONFIG_KASAN_GENERIC ifdef CONFIG_KASAN_GENERIC
...@@ -49,3 +47,5 @@ CFLAGS_KASAN := -fsanitize=kernel-hwaddress \ ...@@ -49,3 +47,5 @@ CFLAGS_KASAN := -fsanitize=kernel-hwaddress \
$(instrumentation_flags) $(instrumentation_flags)
endif # CONFIG_KASAN_SW_TAGS endif # CONFIG_KASAN_SW_TAGS
export CFLAGS_KASAN CFLAGS_KASAN_NOSANITIZE
...@@ -9,7 +9,7 @@ endif ...@@ -9,7 +9,7 @@ endif
# Keep most options here optional, to allow enabling more compilers if absence # Keep most options here optional, to allow enabling more compilers if absence
# of some options does not break KCSAN nor causes false positive reports. # of some options does not break KCSAN nor causes false positive reports.
CFLAGS_KCSAN := -fsanitize=thread \ export CFLAGS_KCSAN := -fsanitize=thread \
$(call cc-option,$(call cc-param,tsan-instrument-func-entry-exit=0) -fno-optimize-sibling-calls) \ $(call cc-option,$(call cc-param,tsan-instrument-func-entry-exit=0) -fno-optimize-sibling-calls) \
$(call cc-option,$(call cc-param,tsan-compound-read-before-write=1),$(call cc-option,$(call cc-param,tsan-instrument-read-before-write=1))) \ $(call cc-option,$(call cc-param,tsan-compound-read-before-write=1),$(call cc-option,$(call cc-param,tsan-instrument-read-before-write=1))) \
$(call cc-param,tsan-distinguish-volatile=1) $(call cc-param,tsan-distinguish-volatile=1)
...@@ -33,11 +33,10 @@ quiet_cmd_ld_ko_o = LD [M] $@ ...@@ -33,11 +33,10 @@ quiet_cmd_ld_ko_o = LD [M] $@
cmd_ld_ko_o = \ cmd_ld_ko_o = \
$(LD) -r $(KBUILD_LDFLAGS) \ $(LD) -r $(KBUILD_LDFLAGS) \
$(KBUILD_LDFLAGS_MODULE) $(LDFLAGS_MODULE) \ $(KBUILD_LDFLAGS_MODULE) $(LDFLAGS_MODULE) \
$(addprefix -T , $(KBUILD_LDS_MODULE)) \ -T scripts/module.lds -o $@ $(filter %.o, $^); \
-o $@ $(filter %.o, $^); \
$(if $(ARCH_POSTLINK), $(MAKE) -f $(ARCH_POSTLINK) $@, true) $(if $(ARCH_POSTLINK), $(MAKE) -f $(ARCH_POSTLINK) $@, true)
$(modules): %.ko: %.o %.mod.o $(KBUILD_LDS_MODULE) FORCE $(modules): %.ko: %.o %.mod.o scripts/module.lds FORCE
+$(call if_changed,ld_ko_o) +$(call if_changed,ld_ko_o)
targets += $(modules) $(modules:.ko=.mod.o) targets += $(modules) $(modules:.ko=.mod.o)
......
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
export CFLAGS_UBSAN :=
ifdef CONFIG_UBSAN_ALIGNMENT ifdef CONFIG_UBSAN_ALIGNMENT
CFLAGS_UBSAN += $(call cc-option, -fsanitize=alignment) CFLAGS_UBSAN += $(call cc-option, -fsanitize=alignment)
endif endif
......
#!/usr/bin/env python
# SPDX-License-Identifier: GPL-2.0
#
# Copyright (C) Google LLC, 2020
#
# Author: Nathan Huckleberry <nhuck@google.com>
#
"""A helper routine run clang-tidy and the clang static-analyzer on
compile_commands.json.
"""
import argparse
import json
import multiprocessing
import os
import subprocess
import sys
def parse_arguments():
"""Set up and parses command-line arguments.
Returns:
args: Dict of parsed args
Has keys: [path, type]
"""
usage = """Run clang-tidy or the clang static-analyzer on a
compilation database."""
parser = argparse.ArgumentParser(description=usage)
type_help = "Type of analysis to be performed"
parser.add_argument("type",
choices=["clang-tidy", "clang-analyzer"],
help=type_help)
path_help = "Path to the compilation database to parse"
parser.add_argument("path", type=str, help=path_help)
return parser.parse_args()
def init(l, a):
global lock
global args
lock = l
args = a
def run_analysis(entry):
# Disable all checks, then re-enable the ones we want
checks = "-checks=-*,"
if args.type == "clang-tidy":
checks += "linuxkernel-*"
else:
checks += "clang-analyzer-*"
p = subprocess.run(["clang-tidy", "-p", args.path, checks, entry["file"]],
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT,
cwd=entry["directory"])
with lock:
sys.stderr.buffer.write(p.stdout)
def main():
args = parse_arguments()
lock = multiprocessing.Lock()
pool = multiprocessing.Pool(initializer=init, initargs=(lock, args))
# Read JSON data into the datastore variable
with open(args.path, "r") as f:
datastore = json.load(f)
pool.map(run_analysis, datastore)
if __name__ == "__main__":
main()
...@@ -20,19 +20,19 @@ endif ...@@ -20,19 +20,19 @@ endif
unexport CONFIG_ unexport CONFIG_
xconfig: $(obj)/qconf xconfig: $(obj)/qconf
$< $(silent) $(Kconfig) $(Q)$< $(silent) $(Kconfig)
gconfig: $(obj)/gconf gconfig: $(obj)/gconf
$< $(silent) $(Kconfig) $(Q)$< $(silent) $(Kconfig)
menuconfig: $(obj)/mconf menuconfig: $(obj)/mconf
$< $(silent) $(Kconfig) $(Q)$< $(silent) $(Kconfig)
config: $(obj)/conf config: $(obj)/conf
$< $(silent) --oldaskconfig $(Kconfig) $(Q)$< $(silent) --oldaskconfig $(Kconfig)
nconfig: $(obj)/nconf nconfig: $(obj)/nconf
$< $(silent) $(Kconfig) $(Q)$< $(silent) $(Kconfig)
build_menuconfig: $(obj)/mconf build_menuconfig: $(obj)/mconf
...@@ -68,12 +68,12 @@ simple-targets := oldconfig allnoconfig allyesconfig allmodconfig \ ...@@ -68,12 +68,12 @@ simple-targets := oldconfig allnoconfig allyesconfig allmodconfig \
PHONY += $(simple-targets) PHONY += $(simple-targets)
$(simple-targets): $(obj)/conf $(simple-targets): $(obj)/conf
$< $(silent) --$@ $(Kconfig) $(Q)$< $(silent) --$@ $(Kconfig)
PHONY += savedefconfig defconfig PHONY += savedefconfig defconfig
savedefconfig: $(obj)/conf savedefconfig: $(obj)/conf
$< $(silent) --$@=defconfig $(Kconfig) $(Q)$< $(silent) --$@=defconfig $(Kconfig)
defconfig: $(obj)/conf defconfig: $(obj)/conf
ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG)),) ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG)),)
...@@ -111,7 +111,7 @@ tinyconfig: ...@@ -111,7 +111,7 @@ tinyconfig:
# CHECK: -o cache_dir=<path> working? # CHECK: -o cache_dir=<path> working?
PHONY += testconfig PHONY += testconfig
testconfig: $(obj)/conf testconfig: $(obj)/conf
$(PYTHON3) -B -m pytest $(srctree)/$(src)/tests \ $(Q)$(PYTHON3) -B -m pytest $(srctree)/$(src)/tests \
-o cache_dir=$(abspath $(obj)/tests/.cache) \ -o cache_dir=$(abspath $(obj)/tests/.cache) \
$(if $(findstring 1,$(KBUILD_VERBOSE)),--capture=no) $(if $(findstring 1,$(KBUILD_VERBOSE)),--capture=no)
clean-files += tests/.cache clean-files += tests/.cache
......
...@@ -169,10 +169,9 @@ gen_btf() ...@@ -169,10 +169,9 @@ gen_btf()
printf '\1' | dd of=${2} conv=notrunc bs=1 seek=16 status=none printf '\1' | dd of=${2} conv=notrunc bs=1 seek=16 status=none
} }
# Create ${2} .o file with all symbols from the ${1} object file # Create ${2} .S file with all symbols from the ${1} object file
kallsyms() kallsyms()
{ {
info KSYM ${2}
local kallsymopt; local kallsymopt;
if [ -n "${CONFIG_KALLSYMS_ALL}" ]; then if [ -n "${CONFIG_KALLSYMS_ALL}" ]; then
...@@ -187,13 +186,8 @@ kallsyms() ...@@ -187,13 +186,8 @@ kallsyms()
kallsymopt="${kallsymopt} --base-relative" kallsymopt="${kallsymopt} --base-relative"
fi fi
local aflags="${KBUILD_AFLAGS} ${KBUILD_AFLAGS_KERNEL} \ info KSYMS ${2}
${NOSTDINC_FLAGS} ${LINUXINCLUDE} ${KBUILD_CPPFLAGS}" ${NM} -n ${1} | scripts/kallsyms ${kallsymopt} > ${2}
local afile="`basename ${2} .o`.S"
${NM} -n ${1} | scripts/kallsyms ${kallsymopt} > ${afile}
${CC} ${aflags} -c -o ${2} ${afile}
} }
# Perform one step in kallsyms generation, including temporary linking of # Perform one step in kallsyms generation, including temporary linking of
...@@ -203,9 +197,15 @@ kallsyms_step() ...@@ -203,9 +197,15 @@ kallsyms_step()
kallsymso_prev=${kallsymso} kallsymso_prev=${kallsymso}
kallsyms_vmlinux=.tmp_vmlinux.kallsyms${1} kallsyms_vmlinux=.tmp_vmlinux.kallsyms${1}
kallsymso=${kallsyms_vmlinux}.o kallsymso=${kallsyms_vmlinux}.o
kallsyms_S=${kallsyms_vmlinux}.S
vmlinux_link ${kallsyms_vmlinux} "${kallsymso_prev}" ${btf_vmlinux_bin_o} vmlinux_link ${kallsyms_vmlinux} "${kallsymso_prev}" ${btf_vmlinux_bin_o}
kallsyms ${kallsyms_vmlinux} ${kallsymso} kallsyms ${kallsyms_vmlinux} ${kallsyms_S}
info AS ${kallsyms_S}
${CC} ${NOSTDINC_FLAGS} ${LINUXINCLUDE} ${KBUILD_CPPFLAGS} \
${KBUILD_AFLAGS} ${KBUILD_AFLAGS_KERNEL} \
-c -o ${kallsymso} ${kallsyms_S}
} }
# Create map file with all symbols from ${1} # Create map file with all symbols from ${1}
......
...@@ -35,7 +35,7 @@ else ...@@ -35,7 +35,7 @@ else
LINUX_COMPILE_BY=$KBUILD_BUILD_USER LINUX_COMPILE_BY=$KBUILD_BUILD_USER
fi fi
if test -z "$KBUILD_BUILD_HOST"; then if test -z "$KBUILD_BUILD_HOST"; then
LINUX_COMPILE_HOST=`hostname` LINUX_COMPILE_HOST=`uname -n`
else else
LINUX_COMPILE_HOST=$KBUILD_BUILD_HOST LINUX_COMPILE_HOST=$KBUILD_BUILD_HOST
fi fi
......
...@@ -24,3 +24,6 @@ SECTIONS { ...@@ -24,3 +24,6 @@ SECTIONS {
__jump_table 0 : ALIGN(8) { KEEP(*(__jump_table)) } __jump_table 0 : ALIGN(8) { KEEP(*(__jump_table)) }
} }
/* bring in arch-specific sections */
#include <asm/module.lds.h>
This diff is collapsed.
...@@ -26,24 +26,29 @@ if_enabled_echo() { ...@@ -26,24 +26,29 @@ if_enabled_echo() {
create_package() { create_package() {
local pname="$1" pdir="$2" local pname="$1" pdir="$2"
local dpkg_deb_opts
mkdir -m 755 -p "$pdir/DEBIAN" mkdir -m 755 -p "$pdir/DEBIAN"
mkdir -p "$pdir/usr/share/doc/$pname" mkdir -p "$pdir/usr/share/doc/$pname"
cp debian/copyright "$pdir/usr/share/doc/$pname/" cp debian/copyright "$pdir/usr/share/doc/$pname/"
cp debian/changelog "$pdir/usr/share/doc/$pname/changelog.Debian" cp debian/changelog "$pdir/usr/share/doc/$pname/changelog.Debian"
gzip -9 "$pdir/usr/share/doc/$pname/changelog.Debian" gzip -n -9 "$pdir/usr/share/doc/$pname/changelog.Debian"
sh -c "cd '$pdir'; find . -type f ! -path './DEBIAN/*' -printf '%P\0' \ sh -c "cd '$pdir'; find . -type f ! -path './DEBIAN/*' -printf '%P\0' \
| xargs -r0 md5sum > DEBIAN/md5sums" | xargs -r0 md5sum > DEBIAN/md5sums"
# Fix ownership and permissions # Fix ownership and permissions
chown -R root:root "$pdir" if [ "$DEB_RULES_REQUIRES_ROOT" = "no" ]; then
dpkg_deb_opts="--root-owner-group"
else
chown -R root:root "$pdir"
fi
chmod -R go-w "$pdir" chmod -R go-w "$pdir"
# in case we are in a restrictive umask environment like 0077 # in case we are in a restrictive umask environment like 0077
chmod -R a+rX "$pdir" chmod -R a+rX "$pdir"
# Create the package # Create the package
dpkg-gencontrol -p$pname -P"$pdir" dpkg-gencontrol -p$pname -P"$pdir"
dpkg-deb ${KDEB_COMPRESS:+-Z$KDEB_COMPRESS} --build "$pdir" .. dpkg-deb $dpkg_deb_opts ${KDEB_COMPRESS:+-Z$KDEB_COMPRESS} --build "$pdir" ..
} }
deploy_kernel_headers () { deploy_kernel_headers () {
...@@ -55,7 +60,7 @@ deploy_kernel_headers () { ...@@ -55,7 +60,7 @@ deploy_kernel_headers () {
cd $srctree cd $srctree
find . arch/$SRCARCH -maxdepth 1 -name Makefile\* find . arch/$SRCARCH -maxdepth 1 -name Makefile\*
find include scripts -type f -o -type l find include scripts -type f -o -type l
find arch/$SRCARCH -name module.lds -o -name Kbuild.platforms -o -name Platform find arch/$SRCARCH -name Kbuild.platforms -o -name Platform
find $(find arch/$SRCARCH -name include -o -name scripts -type d) -type f find $(find arch/$SRCARCH -name include -o -name scripts -type d) -type f
) > debian/hdrsrcfiles ) > debian/hdrsrcfiles
...@@ -202,8 +207,10 @@ EOF ...@@ -202,8 +207,10 @@ EOF
done done
if [ "$ARCH" != "um" ]; then if [ "$ARCH" != "um" ]; then
deploy_kernel_headers debian/linux-headers if is_enabled CONFIG_MODULES; then
create_package linux-headers-$version debian/linux-headers deploy_kernel_headers debian/linux-headers
create_package linux-headers-$version debian/linux-headers
fi
deploy_libc_headers debian/linux-libc-dev deploy_libc_headers debian/linux-libc-dev
create_package linux-libc-dev debian/linux-libc-dev create_package linux-libc-dev debian/linux-libc-dev
......
...@@ -94,16 +94,16 @@ else ...@@ -94,16 +94,16 @@ else
packageversion=$version-$revision packageversion=$version-$revision
fi fi
sourcename=$KDEB_SOURCENAME sourcename=$KDEB_SOURCENAME
packagename=linux-image-$version
kernel_headers_packagename=linux-headers-$version
dbg_packagename=$packagename-dbg
debarch=
set_debarch
if [ "$ARCH" = "um" ] ; then if [ "$ARCH" = "um" ] ; then
packagename=user-mode-linux-$version packagename=user-mode-linux
else
packagename=linux-image
fi fi
debarch=
set_debarch
email=${DEBEMAIL-$EMAIL} email=${DEBEMAIL-$EMAIL}
# use email string directly if it contains <email> # use email string directly if it contains <email>
...@@ -174,22 +174,16 @@ Source: $sourcename ...@@ -174,22 +174,16 @@ Source: $sourcename
Section: kernel Section: kernel
Priority: optional Priority: optional
Maintainer: $maintainer Maintainer: $maintainer
Rules-Requires-Root: no
Build-Depends: bc, rsync, kmod, cpio, bison, flex | flex:native $extra_build_depends Build-Depends: bc, rsync, kmod, cpio, bison, flex | flex:native $extra_build_depends
Homepage: https://www.kernel.org/ Homepage: https://www.kernel.org/
Package: $packagename Package: $packagename-$version
Architecture: $debarch Architecture: $debarch
Description: Linux kernel, version $version Description: Linux kernel, version $version
This package contains the Linux kernel, modules and corresponding other This package contains the Linux kernel, modules and corresponding other
files, version: $version. files, version: $version.
Package: $kernel_headers_packagename
Architecture: $debarch
Description: Linux kernel headers for $version on $debarch
This package provides kernel header files for $version on $debarch
.
This is useful for people who need to build external modules
Package: linux-libc-dev Package: linux-libc-dev
Section: devel Section: devel
Provides: linux-kernel-headers Provides: linux-kernel-headers
...@@ -200,10 +194,22 @@ Description: Linux support headers for userspace development ...@@ -200,10 +194,22 @@ Description: Linux support headers for userspace development
Multi-Arch: same Multi-Arch: same
EOF EOF
if is_enabled CONFIG_MODULES; then
cat <<EOF >> debian/control
Package: linux-headers-$version
Architecture: $debarch
Description: Linux kernel headers for $version on $debarch
This package provides kernel header files for $version on $debarch
.
This is useful for people who need to build external modules
EOF
fi
if is_enabled CONFIG_DEBUG_INFO; then if is_enabled CONFIG_DEBUG_INFO; then
cat <<EOF >> debian/control cat <<EOF >> debian/control
Package: $dbg_packagename Package: linux-image-$version-dbg
Section: debug Section: debug
Architecture: $debarch Architecture: $debarch
Description: Linux kernel debugging symbols for $version Description: Linux kernel debugging symbols for $version
...@@ -217,11 +223,15 @@ cat <<EOF > debian/rules ...@@ -217,11 +223,15 @@ cat <<EOF > debian/rules
srctree ?= . srctree ?= .
build: build-indep:
build-arch:
\$(MAKE) KERNELRELEASE=${version} ARCH=${ARCH} \ \$(MAKE) KERNELRELEASE=${version} ARCH=${ARCH} \
KBUILD_BUILD_VERSION=${revision} -f \$(srctree)/Makefile KBUILD_BUILD_VERSION=${revision} -f \$(srctree)/Makefile
binary-arch: build: build-arch
binary-indep:
binary-arch: build-arch
\$(MAKE) KERNELRELEASE=${version} ARCH=${ARCH} \ \$(MAKE) KERNELRELEASE=${version} ARCH=${ARCH} \
KBUILD_BUILD_VERSION=${revision} -f \$(srctree)/Makefile intdeb-pkg KBUILD_BUILD_VERSION=${revision} -f \$(srctree)/Makefile intdeb-pkg
......
...@@ -45,7 +45,7 @@ scm_version() ...@@ -45,7 +45,7 @@ scm_version()
# Check for git and a git repo. # Check for git and a git repo.
if test -z "$(git rev-parse --show-cdup 2>/dev/null)" && if test -z "$(git rev-parse --show-cdup 2>/dev/null)" &&
head=$(git rev-parse --verify --short HEAD 2>/dev/null); then head=$(git rev-parse --verify HEAD 2>/dev/null); then
# If we are at a tagged commit (like "v2.6.30-rc6"), we ignore # If we are at a tagged commit (like "v2.6.30-rc6"), we ignore
# it, because this version is defined in the top level Makefile. # it, because this version is defined in the top level Makefile.
...@@ -59,11 +59,22 @@ scm_version() ...@@ -59,11 +59,22 @@ scm_version()
fi fi
# If we are past a tagged commit (like # If we are past a tagged commit (like
# "v2.6.30-rc5-302-g72357d5"), we pretty print it. # "v2.6.30-rc5-302-g72357d5"), we pretty print it.
if atag="$(git describe 2>/dev/null)"; then #
echo "$atag" | awk -F- '{printf("-%05d-%s", $(NF-1),$(NF))}' # Ensure the abbreviated sha1 has exactly 12
# hex characters, to make the output
# If we don't have a tag at all we print -g{commitish}. # independent of git version, local
# core.abbrev settings and/or total number of
# objects in the current repository - passing
# --abbrev=12 ensures a minimum of 12, and the
# awk substr() then picks the 'g' and first 12
# hex chars.
if atag="$(git describe --abbrev=12 2>/dev/null)"; then
echo "$atag" | awk -F- '{printf("-%05d-%s", $(NF-1),substr($(NF),0,13))}'
# If we don't have a tag at all we print -g{commitish},
# again using exactly 12 hex chars.
else else
head="$(echo $head | cut -c1-12)"
printf '%s%s' -g $head printf '%s%s' -g $head
fi fi
fi fi
......
...@@ -134,7 +134,7 @@ $(OUTPUT)/%:%.c ...@@ -134,7 +134,7 @@ $(OUTPUT)/%:%.c
$(OUTPUT)/urandom_read: urandom_read.c $(OUTPUT)/urandom_read: urandom_read.c
$(call msg,BINARY,,$@) $(call msg,BINARY,,$@)
$(Q)$(CC) $(LDFLAGS) -o $@ $< $(LDLIBS) -Wl,--build-id $(Q)$(CC) $(LDFLAGS) -o $@ $< $(LDLIBS) -Wl,--build-id=sha1
$(OUTPUT)/test_stub.o: test_stub.c $(BPFOBJ) $(OUTPUT)/test_stub.o: test_stub.c $(BPFOBJ)
$(call msg,CC,,$@) $(call msg,CC,,$@)
......
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