kbuild: add CONFIG_ASM_MODVERSIONS
Add CONFIG_ASM_MODVERSIONS. This allows to remove one if-conditional nesting in scripts/Makefile.build. scripts/Makefile.build is run every time Kbuild descends into a sub-directory. So, I want to avoid $(wildcard ...) evaluation where possible although computing $(wildcard ...) is so cheap that it may not make measurable performance difference. Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>
This commit is contained in:
parent
a564bdeb5e
commit
2ff2b7ec65
|
@ -289,6 +289,13 @@ config ARCH_32BIT_OFF_T
|
||||||
still support 32-bit off_t. This option is enabled for all such
|
still support 32-bit off_t. This option is enabled for all such
|
||||||
architectures explicitly.
|
architectures explicitly.
|
||||||
|
|
||||||
|
config HAVE_ASM_MODVERSIONS
|
||||||
|
bool
|
||||||
|
help
|
||||||
|
This symbol should be selected by an architecure if it provides
|
||||||
|
<asm/asm-prototypes.h> to support the module versioning for symbols
|
||||||
|
exported from assembly code.
|
||||||
|
|
||||||
config HAVE_REGS_AND_STACK_ACCESS_API
|
config HAVE_REGS_AND_STACK_ACCESS_API
|
||||||
bool
|
bool
|
||||||
help
|
help
|
||||||
|
|
|
@ -11,6 +11,7 @@ config ALPHA
|
||||||
select PCI_DOMAINS if PCI
|
select PCI_DOMAINS if PCI
|
||||||
select PCI_SYSCALL if PCI
|
select PCI_SYSCALL if PCI
|
||||||
select HAVE_AOUT
|
select HAVE_AOUT
|
||||||
|
select HAVE_ASM_MODVERSIONS
|
||||||
select HAVE_IDE
|
select HAVE_IDE
|
||||||
select HAVE_OPROFILE
|
select HAVE_OPROFILE
|
||||||
select HAVE_PCSPKR_PLATFORM
|
select HAVE_PCSPKR_PLATFORM
|
||||||
|
|
|
@ -135,6 +135,7 @@ config ARM64
|
||||||
select HAVE_ARCH_TRANSPARENT_HUGEPAGE
|
select HAVE_ARCH_TRANSPARENT_HUGEPAGE
|
||||||
select HAVE_ARCH_VMAP_STACK
|
select HAVE_ARCH_VMAP_STACK
|
||||||
select HAVE_ARM_SMCCC
|
select HAVE_ARM_SMCCC
|
||||||
|
select HAVE_ASM_MODVERSIONS
|
||||||
select HAVE_EBPF_JIT
|
select HAVE_EBPF_JIT
|
||||||
select HAVE_C_RECORDMCOUNT
|
select HAVE_C_RECORDMCOUNT
|
||||||
select HAVE_CMPXCHG_DOUBLE
|
select HAVE_CMPXCHG_DOUBLE
|
||||||
|
|
|
@ -17,6 +17,7 @@ config IA64
|
||||||
select FORCE_PCI if (!IA64_HP_SIM)
|
select FORCE_PCI if (!IA64_HP_SIM)
|
||||||
select PCI_DOMAINS if PCI
|
select PCI_DOMAINS if PCI
|
||||||
select PCI_SYSCALL if PCI
|
select PCI_SYSCALL if PCI
|
||||||
|
select HAVE_ASM_MODVERSIONS
|
||||||
select HAVE_UNSTABLE_SCHED_CLOCK
|
select HAVE_UNSTABLE_SCHED_CLOCK
|
||||||
select HAVE_EXIT_THREAD
|
select HAVE_EXIT_THREAD
|
||||||
select HAVE_IDE
|
select HAVE_IDE
|
||||||
|
|
|
@ -14,6 +14,7 @@ config M68K
|
||||||
select DMA_DIRECT_REMAP if HAS_DMA && MMU && !COLDFIRE
|
select DMA_DIRECT_REMAP if HAS_DMA && MMU && !COLDFIRE
|
||||||
select HAVE_IDE
|
select HAVE_IDE
|
||||||
select HAVE_AOUT if MMU
|
select HAVE_AOUT if MMU
|
||||||
|
select HAVE_ASM_MODVERSIONS
|
||||||
select HAVE_DEBUG_BUGVERBOSE
|
select HAVE_DEBUG_BUGVERBOSE
|
||||||
select GENERIC_IRQ_SHOW
|
select GENERIC_IRQ_SHOW
|
||||||
select GENERIC_ATOMIC64
|
select GENERIC_ATOMIC64
|
||||||
|
|
|
@ -44,6 +44,7 @@ config MIPS
|
||||||
select HAVE_ARCH_SECCOMP_FILTER
|
select HAVE_ARCH_SECCOMP_FILTER
|
||||||
select HAVE_ARCH_TRACEHOOK
|
select HAVE_ARCH_TRACEHOOK
|
||||||
select HAVE_ARCH_TRANSPARENT_HUGEPAGE if CPU_SUPPORTS_HUGEPAGES && 64BIT
|
select HAVE_ARCH_TRANSPARENT_HUGEPAGE if CPU_SUPPORTS_HUGEPAGES && 64BIT
|
||||||
|
select HAVE_ASM_MODVERSIONS
|
||||||
select HAVE_EBPF_JIT if (!CPU_MICROMIPS)
|
select HAVE_EBPF_JIT if (!CPU_MICROMIPS)
|
||||||
select HAVE_CONTEXT_TRACKING
|
select HAVE_CONTEXT_TRACKING
|
||||||
select HAVE_COPY_THREAD_TLS
|
select HAVE_COPY_THREAD_TLS
|
||||||
|
|
|
@ -178,6 +178,7 @@ config PPC
|
||||||
select HAVE_ARCH_NVRAM_OPS
|
select HAVE_ARCH_NVRAM_OPS
|
||||||
select HAVE_ARCH_SECCOMP_FILTER
|
select HAVE_ARCH_SECCOMP_FILTER
|
||||||
select HAVE_ARCH_TRACEHOOK
|
select HAVE_ARCH_TRACEHOOK
|
||||||
|
select HAVE_ASM_MODVERSIONS
|
||||||
select HAVE_C_RECORDMCOUNT
|
select HAVE_C_RECORDMCOUNT
|
||||||
select HAVE_CBPF_JIT if !PPC64
|
select HAVE_CBPF_JIT if !PPC64
|
||||||
select HAVE_STACKPROTECTOR if PPC64 && $(cc-option,-mstack-protector-guard=tls -mstack-protector-guard-reg=r13)
|
select HAVE_STACKPROTECTOR if PPC64 && $(cc-option,-mstack-protector-guard=tls -mstack-protector-guard-reg=r13)
|
||||||
|
|
|
@ -31,6 +31,7 @@ config RISCV
|
||||||
select GENERIC_SMP_IDLE_THREAD
|
select GENERIC_SMP_IDLE_THREAD
|
||||||
select GENERIC_ATOMIC64 if !64BIT
|
select GENERIC_ATOMIC64 if !64BIT
|
||||||
select HAVE_ARCH_AUDITSYSCALL
|
select HAVE_ARCH_AUDITSYSCALL
|
||||||
|
select HAVE_ASM_MODVERSIONS
|
||||||
select HAVE_MEMBLOCK_NODE_MAP
|
select HAVE_MEMBLOCK_NODE_MAP
|
||||||
select HAVE_DMA_CONTIGUOUS
|
select HAVE_DMA_CONTIGUOUS
|
||||||
select HAVE_FUTEX_CMPXCHG if FUTEX
|
select HAVE_FUTEX_CMPXCHG if FUTEX
|
||||||
|
|
|
@ -131,6 +131,7 @@ config S390
|
||||||
select HAVE_ARCH_TRACEHOOK
|
select HAVE_ARCH_TRACEHOOK
|
||||||
select HAVE_ARCH_TRANSPARENT_HUGEPAGE
|
select HAVE_ARCH_TRANSPARENT_HUGEPAGE
|
||||||
select HAVE_ARCH_VMAP_STACK
|
select HAVE_ARCH_VMAP_STACK
|
||||||
|
select HAVE_ASM_MODVERSIONS
|
||||||
select HAVE_EBPF_JIT if PACK_STACK && HAVE_MARCH_Z196_FEATURES
|
select HAVE_EBPF_JIT if PACK_STACK && HAVE_MARCH_Z196_FEATURES
|
||||||
select HAVE_CMPXCHG_DOUBLE
|
select HAVE_CMPXCHG_DOUBLE
|
||||||
select HAVE_CMPXCHG_LOCAL
|
select HAVE_CMPXCHG_LOCAL
|
||||||
|
|
|
@ -17,6 +17,7 @@ config SPARC
|
||||||
select ARCH_MIGHT_HAVE_PC_SERIO
|
select ARCH_MIGHT_HAVE_PC_SERIO
|
||||||
select OF
|
select OF
|
||||||
select OF_PROMTREE
|
select OF_PROMTREE
|
||||||
|
select HAVE_ASM_MODVERSIONS
|
||||||
select HAVE_IDE
|
select HAVE_IDE
|
||||||
select HAVE_OPROFILE
|
select HAVE_OPROFILE
|
||||||
select HAVE_ARCH_KGDB if !SMP || SPARC64
|
select HAVE_ARCH_KGDB if !SMP || SPARC64
|
||||||
|
|
|
@ -9,6 +9,7 @@ config UML
|
||||||
select ARCH_NO_PREEMPT
|
select ARCH_NO_PREEMPT
|
||||||
select HAVE_ARCH_AUDITSYSCALL
|
select HAVE_ARCH_AUDITSYSCALL
|
||||||
select HAVE_ARCH_SECCOMP_FILTER
|
select HAVE_ARCH_SECCOMP_FILTER
|
||||||
|
select HAVE_ASM_MODVERSIONS
|
||||||
select HAVE_UID16
|
select HAVE_UID16
|
||||||
select HAVE_FUTEX_CMPXCHG if FUTEX
|
select HAVE_FUTEX_CMPXCHG if FUTEX
|
||||||
select HAVE_DEBUG_KMEMLEAK
|
select HAVE_DEBUG_KMEMLEAK
|
||||||
|
|
|
@ -147,6 +147,7 @@ config X86
|
||||||
select HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD if X86_64
|
select HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD if X86_64
|
||||||
select HAVE_ARCH_VMAP_STACK if X86_64
|
select HAVE_ARCH_VMAP_STACK if X86_64
|
||||||
select HAVE_ARCH_WITHIN_STACK_FRAMES
|
select HAVE_ARCH_WITHIN_STACK_FRAMES
|
||||||
|
select HAVE_ASM_MODVERSIONS
|
||||||
select HAVE_CMPXCHG_DOUBLE
|
select HAVE_CMPXCHG_DOUBLE
|
||||||
select HAVE_CMPXCHG_LOCAL
|
select HAVE_CMPXCHG_LOCAL
|
||||||
select HAVE_CONTEXT_TRACKING if X86_64
|
select HAVE_CONTEXT_TRACKING if X86_64
|
||||||
|
|
|
@ -1989,6 +1989,14 @@ config MODVERSIONS
|
||||||
make them incompatible with the kernel you are running. If
|
make them incompatible with the kernel you are running. If
|
||||||
unsure, say N.
|
unsure, say N.
|
||||||
|
|
||||||
|
config ASM_MODVERSIONS
|
||||||
|
bool
|
||||||
|
default HAVE_ASM_MODVERSIONS && MODVERSIONS
|
||||||
|
help
|
||||||
|
This enables module versioning for exported symbols also from
|
||||||
|
assembly. This can be enabled only when the target architecture
|
||||||
|
supports it.
|
||||||
|
|
||||||
config MODULE_REL_CRCS
|
config MODULE_REL_CRCS
|
||||||
bool
|
bool
|
||||||
depends on MODVERSIONS
|
depends on MODVERSIONS
|
||||||
|
|
|
@ -349,11 +349,7 @@ $(obj)/%.s: $(src)/%.S FORCE
|
||||||
quiet_cmd_as_o_S = AS $(quiet_modtag) $@
|
quiet_cmd_as_o_S = AS $(quiet_modtag) $@
|
||||||
cmd_as_o_S = $(CC) $(a_flags) -c -o $@ $<
|
cmd_as_o_S = $(CC) $(a_flags) -c -o $@ $<
|
||||||
|
|
||||||
ifdef CONFIG_MODVERSIONS
|
ifdef CONFIG_ASM_MODVERSIONS
|
||||||
|
|
||||||
ASM_PROTOTYPES := $(wildcard $(srctree)/arch/$(SRCARCH)/include/asm/asm-prototypes.h)
|
|
||||||
|
|
||||||
ifneq ($(ASM_PROTOTYPES),)
|
|
||||||
|
|
||||||
# versioning matches the C process described above, with difference that
|
# versioning matches the C process described above, with difference that
|
||||||
# we parse asm-prototypes.h C header to get function definitions.
|
# we parse asm-prototypes.h C header to get function definitions.
|
||||||
|
@ -369,7 +365,6 @@ cmd_modversions_S = \
|
||||||
rm -f $(@D)/.tmp_$(@F:.o=.ver); \
|
rm -f $(@D)/.tmp_$(@F:.o=.ver); \
|
||||||
fi
|
fi
|
||||||
endif
|
endif
|
||||||
endif
|
|
||||||
|
|
||||||
$(obj)/%.o: $(src)/%.S $(objtool_dep) FORCE
|
$(obj)/%.o: $(src)/%.S $(objtool_dep) FORCE
|
||||||
$(call if_changed_rule,as_o_S)
|
$(call if_changed_rule,as_o_S)
|
||||||
|
|
Loading…
Reference in New Issue