====================== =============== ========================================
GNU C 5.1 gcc --version
Clang/LLVM (optional) 11.0.0 clang --version
- GNU make 3.81 make --version
+Rust (optional) 1.62.0 rustc --version
+bindgen (optional) 0.56.0 bindgen --version
+ GNU make 3.82 make --version
bash 4.2 bash --version
binutils 2.23 ld -v
flex 2.5.35 flex --version
quiet_cmd_syscalls = CALL $<
cmd_syscalls = $(CONFIG_SHELL) $< $(CC) $(c_flags) $(missing_syscalls_flags)
- missing-syscalls: scripts/checksyscalls.sh $(offsets-file) FORCE
+ PHONY += missing-syscalls
+ missing-syscalls: scripts/checksyscalls.sh $(offsets-file)
$(call cmd,syscalls)
- #####
- # Check atomic headers are up-to-date
-
- always-y += old-atomics
-
- quiet_cmd_atomics = CALL $<
- cmd_atomics = $(CONFIG_SHELL) $<
-
- old-atomics: scripts/atomic/check-atomics.sh FORCE
- $(call cmd,atomics)
+ # Check the manual modification of atomic headers
+
+ quiet_cmd_check_sha1 = CHKSHA1 $<
+ cmd_check_sha1 = \
+ if ! command -v sha1sum >/dev/null; then \
+ echo "warning: cannot check the header due to sha1sum missing"; \
+ exit 0; \
+ fi; \
+ if [ "$$(sed -n '$$s:// ::p' $<)" != \
+ "$$(sed '$$d' $< | sha1sum | sed 's/ .*//')" ]; then \
+ echo "error: $< has been modified." >&2; \
+ exit 1; \
+ fi; \
+ touch $@
+
+ atomic-checks += $(addprefix $(obj)/.checked-, \
+ atomic-arch-fallback.h \
+ atomic-instrumented.h \
+ atomic-long.h)
+
+ targets += $(atomic-checks)
+ $(atomic-checks): $(obj)/.checked-%: include/linux/atomic/% FORCE
+ $(call if_changed,check_sha1)
+
+ # A phony target that depends on all the preparation targets
+
+ PHONY += prepare
+ prepare: $(offsets-file) missing-syscalls $(atomic-checks)
+ @:
+
+ # Ordinary directory descending
+ # ---------------------------------------------------------------------------
+
+ obj-y += init/
+ obj-y += usr/
+ obj-y += arch/$(SRCARCH)/
+ obj-y += $(ARCH_CORE)
+ obj-y += kernel/
+ obj-y += certs/
+ obj-y += mm/
+ obj-y += fs/
+ obj-y += ipc/
+ obj-y += security/
+ obj-y += crypto/
+ obj-$(CONFIG_BLOCK) += block/
+ obj-$(CONFIG_IO_URING) += io_uring/
++obj-$(CONFIG_RUST) += rust/
+ obj-y += $(ARCH_LIB)
+ obj-y += drivers/
+ obj-y += sound/
+ obj-$(CONFIG_SAMPLES) += samples/
+ obj-$(CONFIG_NET) += net/
+ obj-y += virt/
+ obj-y += $(ARCH_DRIVERS)
AFLAGS_MODULE =
LDFLAGS_MODULE =
CFLAGS_KERNEL =
+RUSTFLAGS_KERNEL =
AFLAGS_KERNEL =
- LDFLAGS_vmlinux =
+ export LDFLAGS_vmlinux =
# Use USERINCLUDE when you must reference the UAPI directories only.
USERINCLUDE := \
KBUILD_CFLAGS-$(CONFIG_WERROR) += -Werror
KBUILD_CFLAGS-$(CONFIG_CC_NO_ARRAY_BOUNDS) += -Wno-array-bounds
- KBUILD_CFLAGS += $(KBUILD_CFLAGS-y) $(CONFIG_CC_IMPLICIT_FALLTHROUGH)
+KBUILD_RUSTFLAGS-$(CONFIG_WERROR) += -Dwarnings
+KBUILD_RUSTFLAGS += $(KBUILD_RUSTFLAGS-y)
+
ifdef CONFIG_CC_IS_CLANG
KBUILD_CPPFLAGS += -Qunused-arguments
# The kernel builds with '-std=gnu11' so use of GNU extensions is acceptable.
# Directories & files removed with 'make clean'
CLEAN_FILES += include/ksym vmlinux.symvers modules-only.symvers \
modules.builtin modules.builtin.modinfo modules.nsdeps \
- compile_commands.json .thinlto-cache rust/test rust/doc
- compile_commands.json .thinlto-cache .vmlinux.objs .vmlinux.export.c
++ compile_commands.json .thinlto-cache rust/test rust/doc \
++ .vmlinux.objs .vmlinux.export.c
# Directories & files removed with 'make mrproper'
MRPROPER_FILES += include/config include/generated \
asflags-y := $(KBUILD_CFLAGS)
ccflags-y := -Wno-sign-compare
- obj-y := entry.o traps.o process.o osf_sys.o irq.o \
+ obj-y := head.o entry.o traps.o process.o osf_sys.o irq.o \
irq_alpha.o signal.o setup.o ptrace.o time.o \
- systbls.o err_common.o io.o bugs.o
+ systbls.o err_common.o io.o bugs.o termios.o
obj-$(CONFIG_VGA_HOSE) += console.o
obj-$(CONFIG_SMP) += smp.o
sed -e "s/^\#define /-D'/" -e "s/ /'='/" -e "s/$$/'/" -e 's/\$$/&&/g')
endif
- head-y := arch/loongarch/kernel/head.o
-
libs-y += arch/loongarch/lib/
+libs-$(CONFIG_EFI_STUB) += $(objtree)/drivers/firmware/efi/libstub/lib.a
ifeq ($(KBUILD_EXTMOD),)
prepare: vdso_prepare
obj-$(CONFIG_PPC_DOORBELL) += dbell.o
obj-$(CONFIG_JUMP_LABEL) += jump_label.o
- extra-$(CONFIG_PPC64) := head_64.o
- extra-$(CONFIG_PPC_BOOK3S_32) := head_book3s_32.o
- extra-$(CONFIG_40x) := head_40x.o
- extra-$(CONFIG_44x) := head_44x.o
- extra-$(CONFIG_PPC_85xx) := head_85xx.o
- extra-$(CONFIG_PPC_8xx) := head_8xx.o
+ obj-$(CONFIG_PPC64) += head_64.o
+ obj-$(CONFIG_PPC_BOOK3S_32) += head_book3s_32.o
+ obj-$(CONFIG_40x) += head_40x.o
+ obj-$(CONFIG_44x) += head_44x.o
-obj-$(CONFIG_FSL_BOOKE) += head_fsl_booke.o
+ obj-$(CONFIG_PPC_8xx) += head_8xx.o
++obj-$(CONFIG_FSL_BOOKE) += head_85xx.o
extra-y += vmlinux.lds
obj-$(CONFIG_RELOCATABLE) += reloc_$(BITS).o
obj-y += runtime_instr.o cache.o fpu.o dumpstack.o guarded_storage.o sthyi.o
obj-y += entry.o reipl.o relocate_kernel.o kdebugfs.o alternative.o
obj-y += nospec-branch.o ipl_vmparm.o machine_kexec_reloc.o unwind_bc.o
-obj-y += smp.o text_amode31.o stacktrace.o
+obj-y += smp.o text_amode31.o stacktrace.o abs_lowcore.o
- extra-y += head64.o vmlinux.lds
+ extra-y += vmlinux.lds
obj-$(CONFIG_SYSFS) += nospec-sysfs.o
CFLAGS_REMOVE_nospec-branch.o += $(CC_FLAGS_EXPOLINE)
--- /dev/null
-arch/powerpc/kernel/head_fsl_booke.o
+ # Head objects
+ #
+ # The objects listed here are placed at the head of vmlinux. A typical use-case
+ # is an object that contains the entry point. This is kept for compatibility
+ # with head-y, which Kbuild used to support.
+ #
+ # A counter approach is to control the section placement by the linker script.
+ # The code marked as __HEAD goes into the ".head.text" section, which is placed
+ # before the normal ".text" section.
+ #
+ # If you can achieve the correct code ordering by linker script, please delete
+ # the entry from this file.
+ #
+ arch/alpha/kernel/head.o
+ arch/arc/kernel/head.o
+ arch/arm/kernel/head-nommu.o
+ arch/arm/kernel/head.o
+ arch/arm64/kernel/head.o
+ arch/csky/kernel/head.o
+ arch/hexagon/kernel/head.o
+ arch/ia64/kernel/head.o
+ arch/loongarch/kernel/head.o
+ arch/m68k/68000/head.o
+ arch/m68k/coldfire/head.o
+ arch/m68k/kernel/head.o
+ arch/m68k/kernel/sun3-head.o
+ arch/microblaze/kernel/head.o
+ arch/mips/kernel/head.o
+ arch/nios2/kernel/head.o
+ arch/openrisc/kernel/head.o
+ arch/parisc/kernel/head.o
+ arch/powerpc/kernel/head_40x.o
+ arch/powerpc/kernel/head_44x.o
+ arch/powerpc/kernel/head_64.o
+ arch/powerpc/kernel/head_8xx.o
++arch/powerpc/kernel/head_85xx.o
+ arch/powerpc/kernel/head_book3s_32.o
+ arch/powerpc/kernel/entry_64.o
+ arch/powerpc/kernel/fpu.o
+ arch/powerpc/kernel/vector.o
+ arch/powerpc/kernel/prom_init.o
+ arch/riscv/kernel/head.o
+ arch/s390/kernel/head64.o
+ arch/sh/kernel/head_32.o
+ arch/sparc/kernel/head_32.o
+ arch/sparc/kernel/head_64.o
+ arch/x86/kernel/head_32.o
+ arch/x86/kernel/head_64.o
+ arch/x86/kernel/head32.o
+ arch/x86/kernel/head64.o
+ arch/x86/kernel/ebda.o
+ arch/x86/kernel/platform-quirks.o
+ arch/xtensa/kernel/head.o