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

TOMOYO Linux Cross Reference
Linux/arch/riscv/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 sha256.o entry.o string.o ctype.o memcpy.o memset.o
  4 ifeq ($(CONFIG_KASAN_GENERIC)$(CONFIG_KASAN_SW_TAGS),)
  5 purgatory-y += strcmp.o strlen.o strncmp.o
  6 endif
  7 
  8 targets += $(purgatory-y)
  9 PURGATORY_OBJS = $(addprefix $(obj)/,$(purgatory-y))
 10 
 11 $(obj)/string.o: $(srctree)/lib/string.c FORCE
 12         $(call if_changed_rule,cc_o_c)
 13 
 14 $(obj)/ctype.o: $(srctree)/lib/ctype.c FORCE
 15         $(call if_changed_rule,cc_o_c)
 16 
 17 $(obj)/memcpy.o: $(srctree)/arch/riscv/lib/memcpy.S FORCE
 18         $(call if_changed_rule,as_o_S)
 19 
 20 $(obj)/memset.o: $(srctree)/arch/riscv/lib/memset.S FORCE
 21         $(call if_changed_rule,as_o_S)
 22 
 23 $(obj)/strcmp.o: $(srctree)/arch/riscv/lib/strcmp.S FORCE
 24         $(call if_changed_rule,as_o_S)
 25 
 26 $(obj)/strlen.o: $(srctree)/arch/riscv/lib/strlen.S FORCE
 27         $(call if_changed_rule,as_o_S)
 28 
 29 $(obj)/strncmp.o: $(srctree)/arch/riscv/lib/strncmp.S FORCE
 30         $(call if_changed_rule,as_o_S)
 31 
 32 $(obj)/sha256.o: $(srctree)/lib/crypto/sha256.c FORCE
 33         $(call if_changed_rule,cc_o_c)
 34 
 35 CFLAGS_sha256.o := -D__DISABLE_EXPORTS -D__NO_FORTIFY
 36 CFLAGS_string.o := -D__DISABLE_EXPORTS
 37 CFLAGS_ctype.o := -D__DISABLE_EXPORTS
 38 
 39 # When profile-guided optimization is enabled, llvm emits two different
 40 # overlapping text sections, which is not supported by kexec. Remove profile
 41 # optimization flags.
 42 KBUILD_CFLAGS := $(filter-out -fprofile-sample-use=% -fprofile-use=%,$(KBUILD_CFLAGS))
 43 
 44 # When linking purgatory.ro with -r unresolved symbols are not checked,
 45 # also link a purgatory.chk binary without -r to check for unresolved symbols.
 46 PURGATORY_LDFLAGS := -e purgatory_start -z nodefaultlib
 47 LDFLAGS_purgatory.ro := -r $(PURGATORY_LDFLAGS)
 48 LDFLAGS_purgatory.chk := $(PURGATORY_LDFLAGS)
 49 targets += purgatory.ro purgatory.chk
 50 
 51 # These are adjustments to the compiler flags used for objects that
 52 # make up the standalone purgatory.ro
 53 
 54 PURGATORY_CFLAGS_REMOVE := -mcmodel=kernel
 55 PURGATORY_CFLAGS := -mcmodel=medany -ffreestanding -fno-zero-initialized-in-bss
 56 PURGATORY_CFLAGS += $(DISABLE_STACKLEAK_PLUGIN) -DDISABLE_BRANCH_PROFILING
 57 PURGATORY_CFLAGS += -fno-stack-protector -g0
 58 
 59 # Default KBUILD_CFLAGS can have -pg option set when FTRACE is enabled. That
 60 # in turn leaves some undefined symbols like __fentry__ in purgatory and not
 61 # sure how to relocate those.
 62 ifdef CONFIG_FUNCTION_TRACER
 63 PURGATORY_CFLAGS_REMOVE         += $(CC_FLAGS_FTRACE)
 64 endif
 65 
 66 ifdef CONFIG_STACKPROTECTOR
 67 PURGATORY_CFLAGS_REMOVE         += -fstack-protector
 68 endif
 69 
 70 ifdef CONFIG_STACKPROTECTOR_STRONG
 71 PURGATORY_CFLAGS_REMOVE         += -fstack-protector-strong
 72 endif
 73 
 74 ifdef CONFIG_CFI_CLANG
 75 PURGATORY_CFLAGS_REMOVE         += $(CC_FLAGS_CFI)
 76 endif
 77 
 78 ifdef CONFIG_RELOCATABLE
 79 PURGATORY_CFLAGS_REMOVE         += -fPIE
 80 endif
 81 
 82 ifdef CONFIG_SHADOW_CALL_STACK
 83 PURGATORY_CFLAGS_REMOVE         += $(CC_FLAGS_SCS)
 84 endif
 85 
 86 CFLAGS_REMOVE_purgatory.o       += $(PURGATORY_CFLAGS_REMOVE)
 87 CFLAGS_purgatory.o              += $(PURGATORY_CFLAGS)
 88 
 89 CFLAGS_REMOVE_sha256.o          += $(PURGATORY_CFLAGS_REMOVE)
 90 CFLAGS_sha256.o                 += $(PURGATORY_CFLAGS)
 91 
 92 CFLAGS_REMOVE_string.o          += $(PURGATORY_CFLAGS_REMOVE)
 93 CFLAGS_string.o                 += $(PURGATORY_CFLAGS)
 94 
 95 CFLAGS_REMOVE_ctype.o           += $(PURGATORY_CFLAGS_REMOVE)
 96 CFLAGS_ctype.o                  += $(PURGATORY_CFLAGS)
 97 
 98 asflags-remove-y                += $(foreach x, -g -gdwarf-4 -gdwarf-5, $(x) -Wa,$(x))
 99 
100 $(obj)/purgatory.ro: $(PURGATORY_OBJS) FORCE
101                 $(call if_changed,ld)
102 
103 $(obj)/purgatory.chk: $(obj)/purgatory.ro FORCE
104                 $(call if_changed,ld)
105 
106 $(obj)/kexec-purgatory.o: $(obj)/purgatory.ro $(obj)/purgatory.chk
107 
108 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