#
  # Copyright 2009 Simtec Electronics
  
- include $(src)/Makefile.s3c64xx
 -ifdef CONFIG_ARCH_S3C24XX
 -include $(srctree)/$(src)/Makefile.s3c24xx
 -endif
 -
 -ifdef CONFIG_ARCH_S3C64XX
+ include $(srctree)/$(src)/Makefile.s3c64xx
 -endif
  
  # Objects we always build independent of SoC choice
  
 
  KCOV_INSTRUMENT := n
  UBSAN_SANITIZE := n
  KASAN_SANITIZE := n
 +KCSAN_SANITIZE := n
  
- ccflags-y := -shared -fno-common -fno-builtin -nostdlib -Wl,--hash-style=both
- ccflags-$(CONFIG_LD_IS_LLD) += $(call cc-option,--ld-path=$(LD),-fuse-ld=lld)
+ ccflags-y := -fno-common -fno-builtin
+ ldflags-y := -Wl,--hash-style=both -nostdlib -shared -z noexecstack
+ ldflags-$(CONFIG_LD_IS_LLD) += $(call cc-option,--ld-path=$(LD),-fuse-ld=lld)
+ # Filter flags that clang will warn are unused for linking
+ ldflags-y += $(filter-out $(CC_AUTO_VAR_INIT_ZERO_ENABLER) $(CC_FLAGS_FTRACE) -Wa$(comma)%, $(KBUILD_CFLAGS))
  
- CC32FLAGS := -Wl,-soname=linux-vdso32.so.1 -m32
- AS32FLAGS := -D__VDSO32__ -s
+ CC32FLAGS := -m32
+ LD32FLAGS := -Wl,-soname=linux-vdso32.so.1
+ AS32FLAGS := -D__VDSO32__
  
- CC64FLAGS := -Wl,-soname=linux-vdso64.so.1
- AS64FLAGS := -D__VDSO64__ -s
+ LD64FLAGS := -Wl,-soname=linux-vdso64.so.1
+ AS64FLAGS := -D__VDSO64__
  
  targets += vdso32.lds
  CPPFLAGS_vdso32.lds += -P -C -Upowerpc
 
        $(Q)$(srctree)/scripts/generate_rust_analyzer.py $(srctree) $(objtree) \
                $(RUST_LIB_SRC) > $(objtree)/rust-project.json
  
 +redirect-intrinsics = \
 +      __eqsf2 __gesf2 __lesf2 __nesf2 __unordsf2 \
 +      __unorddf2 \
 +      __muloti4 __multi3 \
 +      __udivmodti4 __udivti3 __umodti3
 +
 +ifneq ($(or $(CONFIG_ARM64),$(and $(CONFIG_RISCV),$(CONFIG_64BIT))),)
 +      # These intrinsics are defined for ARM64 and RISCV64
 +      redirect-intrinsics += \
 +              __ashrti3 \
 +              __ashlti3 __lshrti3
 +endif
 +
  $(obj)/core.o: private skip_clippy = 1
  $(obj)/core.o: private skip_flags = -Dunreachable_pub
 +$(obj)/core.o: private rustc_objcopy = $(foreach sym,$(redirect-intrinsics),--redefine-sym $(sym)=__rust$(sym))
  $(obj)/core.o: private rustc_target_flags = $(core-cfgs)
- $(obj)/core.o: $(RUST_LIB_SRC)/core/src/lib.rs $(obj)/target.json FORCE
+ $(obj)/core.o: $(RUST_LIB_SRC)/core/src/lib.rs scripts/target.json FORCE
        $(call if_changed_dep,rustc_library)
  
  $(obj)/compiler_builtins.o: private rustc_objcopy = -w -W '__*'