1 # SPDX-License-Identifier: GPL-2.0
2 # Copyright 2022 Google LLC
4 KBUILD_CFLAGS
:= $(subst $(CC_FLAGS_FTRACE
),,$(KBUILD_CFLAGS
)) -fpie \
5 -Os
-DDISABLE_BRANCH_PROFILING
$(DISABLE_STACKLEAK_PLUGIN
) \
6 $(DISABLE_LATENT_ENTROPY_PLUGIN
) \
7 $(call cc-option
,-mbranch-protection
=none
) \
8 -I
$(srctree
)/scripts
/dtc
/libfdt
-fno-stack-protector \
9 -include $(srctree
)/include/linux
/hidden.h \
10 -D__DISABLE_EXPORTS
-ffreestanding
-D__NO_FORTIFY \
11 -fno-asynchronous-unwind-tables
-fno-unwind-tables \
12 $(call cc-option
,-fno-addrsig
)
14 # this code may run with the MMU off so disable unaligned accesses
15 CFLAGS_map_range.o
+= -mstrict-align
17 # remove SCS flags from all objects in this directory
18 KBUILD_CFLAGS
:= $(filter-out $(CC_FLAGS_SCS
), $(KBUILD_CFLAGS
))
20 KBUILD_CFLAGS
:= $(filter-out $(CC_FLAGS_LTO
), $(KBUILD_CFLAGS
))
22 hostprogs
:= relacheck
24 quiet_cmd_piobjcopy
= $(quiet_cmd_objcopy
)
25 cmd_piobjcopy
= $(cmd_objcopy
) && $(obj
)/relacheck
$(@
) $(<)
27 $(obj
)/%.pi.o
: OBJCOPYFLAGS
:= --prefix-symbols
=__pi_ \
28 --remove-section
=.note.gnu.property
29 $(obj
)/%.pi.o
: $(obj
)/%.o
$(obj
)/relacheck FORCE
30 $(call if_changed
,piobjcopy
)
32 # ensure that all the lib- code ends up as __init code and data
33 $(obj
)/lib-
%.pi.o
: OBJCOPYFLAGS
+= --prefix-alloc-sections
=.init
35 $(obj
)/lib-
%.o
: $(srctree
)/lib
/%.c FORCE
36 $(call if_changed_rule
,cc_o_c
)
38 obj-y
:= idreg-override.pi.o \
39 map_kernel.pi.o map_range.pi.o \
40 lib-fdt.pi.o lib-fdt_ro.pi.o
41 obj-
$(CONFIG_RELOCATABLE
) += relocate.pi.o
42 obj-
$(CONFIG_RANDOMIZE_BASE
) += kaslr_early.pi.o
43 obj-
$(CONFIG_UNWIND_PATCH_PAC_INTO_SCS
) += patch-scs.pi.o
44 extra-y
:= $(patsubst %.pi.o
,%.o
,$(obj-y
))