mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-07 13:43:51 +00:00
arm64 fixes for -rc3
- Really fix shadow call stack patching with LTO=full - Remove unused (empty) header file generated from the compat vDSO -----BEGIN PGP SIGNATURE----- iQFEBAABCgAuFiEEPxTL6PPUbjXGY88ct6xw3ITBYzQFAmW7tXMQHHdpbGxAa2Vy bmVsLm9yZwAKCRC3rHDchMFjNOK3B/9vZDlophbhSGWZea1Icjlt+lRLfCZhggFP ZgXu+pqUfVZ8aMpjwu/j2MdVuLV6YaRVzJR8jfbv4zDZnN9k3vWuDkxl/+w7EVOp c8jzKOvt4w2z2skC0yV6i7WPgbbGvKuf0bKCxw2yAthsdbSoyNB7suy8YY9tfl9C Y7TN78pRWF8U8GwsPCHKH5l6U6MjW6PToKjZYJrwk8rxzBJ0E18XlBsLoGYojQeC 98C4S579AzlHda4RcmhX5teqgDAEVIlNkmPKpvBkLRsOmfw4amWXUmRqKO9UoHyq t3QMAUkP0FJxm2/+VYmZc/FeJtvmJb95o04HCNpVsSdMVaIezDhj =RmC2 -----END PGP SIGNATURE----- Merge tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux Pull arm64 fixes from Will Deacon: "Two small fixes. The first one is an alternative fix for the SCS patching problem we thought we'd fixed in -rc1; it turned out not to be robust with all toolchains/configs, so this is a revert+retry which has seen some more testing. The other one simply removes an unused header file, but I couldn't resist the negative diffstat. - Really fix shadow call stack patching with LTO=full - Remove unused (empty) header file generated from the compat vDSO" * tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux: arm64: vdso32: Remove unused vdso32-offsets.h arm64: scs: Disable LTO for SCS patching code arm64: Revert "scs: Work around full LTO issue with dynamic SCS"
This commit is contained in:
commit
ec86369c88
@ -195,7 +195,7 @@ vdso_prepare: prepare0
|
||||
include/generated/vdso-offsets.h arch/arm64/kernel/vdso/vdso.so
|
||||
ifdef CONFIG_COMPAT_VDSO
|
||||
$(Q)$(MAKE) $(build)=arch/arm64/kernel/vdso32 \
|
||||
include/generated/vdso32-offsets.h arch/arm64/kernel/vdso32/vdso.so
|
||||
arch/arm64/kernel/vdso32/vdso.so
|
||||
endif
|
||||
endif
|
||||
|
||||
|
@ -17,9 +17,6 @@
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
#include <generated/vdso-offsets.h>
|
||||
#ifdef CONFIG_COMPAT_VDSO
|
||||
#include <generated/vdso32-offsets.h>
|
||||
#endif
|
||||
|
||||
#define VDSO_SYMBOL(base, name) \
|
||||
({ \
|
||||
|
@ -77,9 +77,9 @@ obj-$(CONFIG_UNWIND_PATCH_PAC_INTO_SCS) += patch-scs.o
|
||||
# We need to prevent the SCS patching code from patching itself. Using
|
||||
# -mbranch-protection=none here to avoid the patchable PAC opcodes from being
|
||||
# generated triggers an issue with full LTO on Clang, which stops emitting PAC
|
||||
# instructions altogether. So instead, omit the unwind tables used by the
|
||||
# patching code, so it will not be able to locate its own PAC instructions.
|
||||
CFLAGS_patch-scs.o += -fno-asynchronous-unwind-tables -fno-unwind-tables
|
||||
# instructions altogether. So disable LTO as well for the compilation unit.
|
||||
CFLAGS_patch-scs.o += -mbranch-protection=none
|
||||
CFLAGS_REMOVE_patch-scs.o += $(CC_FLAGS_LTO)
|
||||
|
||||
# Force dependency (vdso*-wrap.S includes vdso.so through incbin)
|
||||
$(obj)/vdso-wrap.o: $(obj)/vdso/vdso.so
|
||||
|
@ -127,9 +127,6 @@ obj-vdso := $(c-obj-vdso) $(c-obj-vdso-gettimeofday) $(asm-obj-vdso)
|
||||
targets += vdso.lds
|
||||
CPPFLAGS_vdso.lds += -P -C -U$(ARCH)
|
||||
|
||||
include/generated/vdso32-offsets.h: $(obj)/vdso32.so.dbg FORCE
|
||||
$(call if_changed,vdsosym)
|
||||
|
||||
# Strip rule for vdso.so
|
||||
$(obj)/vdso.so: OBJCOPYFLAGS := -S
|
||||
$(obj)/vdso.so: $(obj)/vdso32.so.dbg FORCE
|
||||
@ -166,9 +163,3 @@ quiet_cmd_vdsoas = AS32 $@
|
||||
|
||||
quiet_cmd_vdsomunge = MUNGE $@
|
||||
cmd_vdsomunge = $(obj)/$(munge) $< $@
|
||||
|
||||
# Generate vDSO offsets using helper script (borrowed from the 64-bit vDSO)
|
||||
gen-vdsosym := $(srctree)/$(src)/../vdso/gen_vdso_offsets.sh
|
||||
quiet_cmd_vdsosym = VDSOSYM $@
|
||||
# The AArch64 nm should be able to read an AArch32 binary
|
||||
cmd_vdsosym = $(NM) $< | $(gen-vdsosym) | LC_ALL=C sort > $@
|
||||
|
Loading…
Reference in New Issue
Block a user