Commit | Line | Data |
---|---|---|
b2441318 | 1 | # SPDX-License-Identifier: GPL-2.0 |
8c2c3df3 CM |
2 | # |
3 | # Makefile for the linux kernel. | |
4 | # | |
5 | ||
d784e298 | 6 | CFLAGS_armv8_deprecated.o := -I$(src) |
8c2c3df3 | 7 | |
edf072d3 TD |
8 | CFLAGS_REMOVE_ftrace.o = $(CC_FLAGS_FTRACE) |
9 | CFLAGS_REMOVE_insn.o = $(CC_FLAGS_FTRACE) | |
10 | CFLAGS_REMOVE_return_address.o = $(CC_FLAGS_FTRACE) | |
819e50e2 | 11 | |
70918779 KC |
12 | # Remove stack protector to avoid triggering unneeded stack canary |
13 | # checks due to randomize_kstack_offset. | |
14 | CFLAGS_REMOVE_syscall.o = -fstack-protector -fstack-protector-strong | |
15 | CFLAGS_syscall.o += -fno-stack-protector | |
16 | ||
802b9111 AK |
17 | # When KASAN is enabled, a stack trace is recorded for every alloc/free, which |
18 | # can significantly impact performance. Avoid instrumenting the stack trace | |
19 | # collection code to minimize this impact. | |
20 | KASAN_SANITIZE_stacktrace.o := n | |
21 | ||
bf6fa2c0 MR |
22 | # It's not safe to invoke KCOV when portions of the kernel environment aren't |
23 | # available or are out-of-sync with HW state. Since `noinstr` doesn't always | |
24 | # inhibit KCOV instrumentation, disable it for the entire compilation unit. | |
e6f85cbe | 25 | KCOV_INSTRUMENT_entry-common.o := n |
b5df5b83 | 26 | KCOV_INSTRUMENT_idle.o := n |
bf6fa2c0 | 27 | |
8c2c3df3 | 28 | # Object file lists. |
2f328fea | 29 | obj-y := debug-monitors.o entry.o irq.o fpsimd.o \ |
ed3768db MR |
30 | entry-common.o entry-fpsimd.o process.o ptrace.o \ |
31 | setup.o signal.o sys.o stacktrace.o time.o traps.o \ | |
72fd7236 | 32 | io.o vdso.o hyp-stub.o psci.o cpu_ops.o \ |
f5e0a12c | 33 | return_address.o cpuinfo.o cpu_errata.o \ |
4b3dc967 | 34 | cpufeature.o alternative.o cacheinfo.o \ |
4141c857 | 35 | smp.o smp_spin_table.o topology.o smccc-call.o \ |
181a1269 WD |
36 | syscall.o proton-pack.o idreg-override.o idle.o \ |
37 | patching.o | |
8c2c3df3 | 38 | |
b8f58ac7 | 39 | targets += efi-entry.o |
e8f3010f AB |
40 | |
41 | OBJCOPYFLAGS := --prefix-symbols=__efistub_ | |
42 | $(obj)/%.stub.o: $(obj)/%.o FORCE | |
43 | $(call if_changed,objcopy) | |
44 | ||
af1b3cf2 | 45 | obj-$(CONFIG_COMPAT) += sys32.o signal32.o \ |
bfe801eb | 46 | sys_compat.o |
bfe801eb | 47 | obj-$(CONFIG_COMPAT) += sigreturn32.o |
3fc24ef3 | 48 | obj-$(CONFIG_COMPAT_ALIGNMENT_FIXUPS) += compat_alignment.o |
af1b3cf2 | 49 | obj-$(CONFIG_KUSER_HELPERS) += kuser32.o |
2f328fea MY |
50 | obj-$(CONFIG_FUNCTION_TRACER) += ftrace.o entry-ftrace.o |
51 | obj-$(CONFIG_MODULES) += module.o | |
52 | obj-$(CONFIG_ARM64_MODULE_PLTS) += module-plts.o | |
53 | obj-$(CONFIG_PERF_EVENTS) += perf_regs.o perf_callchain.o | |
54 | obj-$(CONFIG_HW_PERF_EVENTS) += perf_event.o | |
55 | obj-$(CONFIG_HAVE_HW_BREAKPOINT) += hw_breakpoint.o | |
56 | obj-$(CONFIG_CPU_PM) += sleep.o suspend.o | |
57 | obj-$(CONFIG_CPU_IDLE) += cpuidle.o | |
58 | obj-$(CONFIG_JUMP_LABEL) += jump_label.o | |
59 | obj-$(CONFIG_KGDB) += kgdb.o | |
60 | obj-$(CONFIG_EFI) += efi.o efi-entry.stub.o \ | |
7e611e7d | 61 | efi-rt-wrapper.o |
2f328fea MY |
62 | obj-$(CONFIG_PCI) += pci.o |
63 | obj-$(CONFIG_ARMV8_DEPRECATED) += armv8_deprecated.o | |
64 | obj-$(CONFIG_ACPI) += acpi.o | |
65 | obj-$(CONFIG_ACPI_NUMA) += acpi_numa.o | |
66 | obj-$(CONFIG_ARM64_ACPI_PARKING_PROTOCOL) += acpi_parking_protocol.o | |
67 | obj-$(CONFIG_PARAVIRT) += paravirt.o | |
aacd149b | 68 | obj-$(CONFIG_RANDOMIZE_BASE) += kaslr.o pi/ |
2f328fea | 69 | obj-$(CONFIG_HIBERNATION) += hibernate.o hibernate-asm.o |
6dd8b1a0 | 70 | obj-$(CONFIG_ELF_CORE) += elfcore.o |
2f328fea | 71 | obj-$(CONFIG_KEXEC_CORE) += machine_kexec.o relocate_kernel.o \ |
d28f6df1 | 72 | cpu-reset.o |
2f328fea MY |
73 | obj-$(CONFIG_KEXEC_FILE) += machine_kexec_file.o kexec_image.o |
74 | obj-$(CONFIG_ARM64_RELOC_TEST) += arm64-reloc-test.o | |
214fad55 | 75 | arm64-reloc-test-y := reloc_test_core.o reloc_test_syms.o |
2f328fea MY |
76 | obj-$(CONFIG_CRASH_DUMP) += crash_dump.o |
77 | obj-$(CONFIG_CRASH_CORE) += crash_core.o | |
78 | obj-$(CONFIG_ARM_SDE_INTERFACE) += sdei.o | |
2f328fea | 79 | obj-$(CONFIG_ARM64_PTR_AUTH) += pointer_auth.o |
637ec831 | 80 | obj-$(CONFIG_ARM64_MTE) += mte.o |
a5b8ca97 MY |
81 | obj-y += vdso-wrap.o |
82 | obj-$(CONFIG_COMPAT_VDSO) += vdso32-wrap.o | |
8c2c3df3 | 83 | |
205f3991 JG |
84 | # Force dependency (vdso*-wrap.S includes vdso.so through incbin) |
85 | $(obj)/vdso-wrap.o: $(obj)/vdso/vdso.so | |
86 | $(obj)/vdso32-wrap.o: $(obj)/vdso32/vdso.so | |
87 | ||
a5b8ca97 | 88 | obj-y += probes/ |
32164845 MY |
89 | obj-y += head.o |
90 | extra-y += vmlinux.lds | |
757b435a AB |
91 | |
92 | ifeq ($(CONFIG_DEBUG_EFI),y) | |
93 | AFLAGS_head.o += -DVMLINUX_PATH="\"$(realpath $(objtree)/vmlinux)\"" | |
94 | endif | |
8212f898 MY |
95 | |
96 | # for cleaning | |
97 | subdir- += vdso vdso32 |