When CONFIG_EXPOLINE_EXTERN is used expoline thunks are generated from arch/s390/lib/expoline.S and postlinked into every module. This is also true for external modules. Add expoline.o build to the modules_prepare target.
Unified · Split
| @@ -82,7 +82,7 @@ endif · 81 unmodified lines | |||
| 82 | 82 | ||
| 83 | ifdef CONFIG_EXPOLINE | 83 | ifdef CONFIG_EXPOLINE |
| 84 | ifdef CONFIG_EXPOLINE_EXTERN | 84 | ifdef CONFIG_EXPOLINE_EXTERN |
| 85 | KBUILD_LDFLAGS_MODULE += arch/s390/lib/expoline.o | 85 | KBUILD_LDFLAGS_MODULE += arch/s390/lib/expoline/expoline.o |
| 86 | CC_FLAGS_EXPOLINE := -mindirect-branch=thunk-extern | 86 | CC_FLAGS_EXPOLINE := -mindirect-branch=thunk-extern |
| 87 | CC_FLAGS_EXPOLINE += -mfunction-return=thunk-extern | 87 | CC_FLAGS_EXPOLINE += -mfunction-return=thunk-extern |
| 88 | else | 88 | else |
| @@ -163,6 +163,12 @@ vdso_prepare: prepare0 · 74 unmodified lines | |||
| 163 | $(Q)$(MAKE) $(build)=arch/s390/kernel/vdso64 include/generated/vdso64-offsets.h | 163 | $(Q)$(MAKE) $(build)=arch/s390/kernel/vdso64 include/generated/vdso64-offsets.h |
| 164 | $(if $(CONFIG_COMPAT),$(Q)$(MAKE) \ | 164 | $(if $(CONFIG_COMPAT),$(Q)$(MAKE) \ |
| 165 | $(build)=arch/s390/kernel/vdso32 include/generated/vdso32-offsets.h) | 165 | $(build)=arch/s390/kernel/vdso32 include/generated/vdso32-offsets.h) |
| 166 | |||
| 167 | ifdef CONFIG_EXPOLINE_EXTERN | ||
| 168 | modules_prepare: expoline_prepare | ||
| 169 | expoline_prepare: prepare0 | ||
| 170 | $(Q)$(MAKE) $(build)=arch/s390/lib/expoline arch/s390/lib/expoline/expoline.o | ||
| 171 | endif | ||
| 166 | endif | 172 | endif |
| 167 | 173 | ||
| 168 | # Don't use tabs in echo arguments | 174 | # Don't use tabs in echo arguments |
| @@ -7,7 +7,6 @@ lib-y += delay.o string.o uaccess.o find.o spinlock.o · 6 unmodified lines | |||
| 7 | obj-y += mem.o xor.o | 7 | obj-y += mem.o xor.o |
| 8 | lib-$(CONFIG_KPROBES) += probes.o | 8 | lib-$(CONFIG_KPROBES) += probes.o |
| 9 | lib-$(CONFIG_UPROBES) += probes.o | 9 | lib-$(CONFIG_UPROBES) += probes.o |
| 10 | obj-$(CONFIG_EXPOLINE_EXTERN) += expoline.o | ||
| 11 | obj-$(CONFIG_S390_KPROBES_SANITY_TEST) += test_kprobes_s390.o | 10 | obj-$(CONFIG_S390_KPROBES_SANITY_TEST) += test_kprobes_s390.o |
| 12 | test_kprobes_s390-objs += test_kprobes_asm.o test_kprobes.o | 11 | test_kprobes_s390-objs += test_kprobes_asm.o test_kprobes.o |
| 13 | 12 | ||
| @@ -22,3 +21,5 @@ obj-$(CONFIG_S390_MODULES_SANITY_TEST) += test_modules.o · 8 unmodified lines | |||
| 22 | obj-$(CONFIG_S390_MODULES_SANITY_TEST_HELPERS) += test_modules_helpers.o | 21 | obj-$(CONFIG_S390_MODULES_SANITY_TEST_HELPERS) += test_modules_helpers.o |
| 23 | 22 | ||
| 24 | lib-$(CONFIG_FUNCTION_ERROR_INJECTION) += error-inject.o | 23 | lib-$(CONFIG_FUNCTION_ERROR_INJECTION) += error-inject.o |
| 24 | |||
| 25 | obj-$(CONFIG_EXPOLINE_EXTERN) += expoline/ | ||
| @@ -0,0 +1,3 @@ | |||
| 1 | # SPDX-License-Identifier: GPL-2.0 | ||
| 2 | |||
| 3 | obj-y += expoline.o | ||
File renamed without changes.