~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/x86/purgatory/Makefile

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 # SPDX-License-Identifier: GPL-2.0
  2 
  3 purgatory-y := purgatory.o stack.o setup-x86_$(BITS).o sha256.o entry64.o string.o
  4 
  5 targets += $(purgatory-y)
  6 PURGATORY_OBJS = $(addprefix $(obj)/,$(purgatory-y))
  7 
  8 $(obj)/string.o: $(srctree)/arch/x86/boot/compressed/string.c FORCE
  9         $(call if_changed_rule,cc_o_c)
 10 
 11 $(obj)/sha256.o: $(srctree)/lib/crypto/sha256.c FORCE
 12         $(call if_changed_rule,cc_o_c)
 13 
 14 CFLAGS_sha256.o := -D__DISABLE_EXPORTS -D__NO_FORTIFY
 15 
 16 # When profile-guided optimization is enabled, llvm emits two different
 17 # overlapping text sections, which is not supported by kexec. Remove profile
 18 # optimization flags.
 19 KBUILD_CFLAGS := $(filter-out -fprofile-sample-use=% -fprofile-use=%,$(KBUILD_CFLAGS))
 20 
 21 # When LTO is enabled, llvm emits many text sections, which is not supported
 22 # by kexec. Remove -flto=* flags.
 23 KBUILD_CFLAGS := $(filter-out $(CC_FLAGS_LTO),$(KBUILD_CFLAGS))
 24 
 25 # When linking purgatory.ro with -r unresolved symbols are not checked,
 26 # also link a purgatory.chk binary without -r to check for unresolved symbols.
 27 PURGATORY_LDFLAGS := -e purgatory_start -z nodefaultlib
 28 LDFLAGS_purgatory.ro := -r $(PURGATORY_LDFLAGS)
 29 LDFLAGS_purgatory.chk := $(PURGATORY_LDFLAGS)
 30 targets += purgatory.ro purgatory.chk
 31 
 32 # These are adjustments to the compiler flags used for objects that
 33 # make up the standalone purgatory.ro
 34 
 35 PURGATORY_CFLAGS_REMOVE := -mcmodel=kernel
 36 PURGATORY_CFLAGS := -mcmodel=small -ffreestanding -fno-zero-initialized-in-bss -g0
 37 PURGATORY_CFLAGS += -fpic -fvisibility=hidden
 38 PURGATORY_CFLAGS += $(DISABLE_STACKLEAK_PLUGIN) -DDISABLE_BRANCH_PROFILING
 39 PURGATORY_CFLAGS += -fno-stack-protector
 40 
 41 # Default KBUILD_CFLAGS can have -pg option set when FTRACE is enabled. That
 42 # in turn leaves some undefined symbols like __fentry__ in purgatory and not
 43 # sure how to relocate those.
 44 ifdef CONFIG_FUNCTION_TRACER
 45 PURGATORY_CFLAGS_REMOVE         += $(CC_FLAGS_FTRACE)
 46 endif
 47 
 48 ifdef CONFIG_STACKPROTECTOR
 49 PURGATORY_CFLAGS_REMOVE         += -fstack-protector
 50 endif
 51 
 52 ifdef CONFIG_STACKPROTECTOR_STRONG
 53 PURGATORY_CFLAGS_REMOVE         += -fstack-protector-strong
 54 endif
 55 
 56 ifdef CONFIG_MITIGATION_RETPOLINE
 57 PURGATORY_CFLAGS_REMOVE         += $(RETPOLINE_CFLAGS)
 58 endif
 59 
 60 ifdef CONFIG_CFI_CLANG
 61 PURGATORY_CFLAGS_REMOVE         += $(CC_FLAGS_CFI)
 62 endif
 63 
 64 CFLAGS_REMOVE_purgatory.o       += $(PURGATORY_CFLAGS_REMOVE)
 65 CFLAGS_purgatory.o              += $(PURGATORY_CFLAGS)
 66 
 67 CFLAGS_REMOVE_sha256.o          += $(PURGATORY_CFLAGS_REMOVE)
 68 CFLAGS_sha256.o                 += $(PURGATORY_CFLAGS)
 69 
 70 CFLAGS_REMOVE_string.o          += $(PURGATORY_CFLAGS_REMOVE)
 71 CFLAGS_string.o                 += $(PURGATORY_CFLAGS)
 72 
 73 asflags-remove-y                += $(foreach x, -g -gdwarf-4 -gdwarf-5, $(x) -Wa,$(x))
 74 
 75 $(obj)/purgatory.ro: $(PURGATORY_OBJS) FORCE
 76                 $(call if_changed,ld)
 77 
 78 $(obj)/purgatory.chk: $(obj)/purgatory.ro FORCE
 79                 $(call if_changed,ld)
 80 
 81 $(obj)/kexec-purgatory.o: $(obj)/purgatory.ro $(obj)/purgatory.chk
 82 
 83 obj-y += kexec-purgatory.o

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php