History

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.

Masahiro Yamada committed 7 years ago

Commit 2ff2b7e1 parent a564bde14 files · +27 −6Browse files

Unified · Split

14 files
  1. arch/Kconfig +7 −0
  2. arch/alpha/Kconfig +1 −0
  3. arch/arm64/Kconfig +1 −0
  4. arch/ia64/Kconfig +1 −0
  5. arch/m68k/Kconfig +1 −0
  6. arch/mips/Kconfig +1 −0
  7. arch/powerpc/Kconfig +1 −0
  8. arch/riscv/Kconfig +1 −0
  9. arch/s390/Kconfig +1 −0
  10. arch/sparc/Kconfig +1 −0
  11. arch/um/Kconfig +1 −0
  12. arch/x86/Kconfig +1 −0
  13. init/Kconfig +8 −0
  14. scripts/Makefile.build +1 −6
arch/Kconfig+7−0
@@ -289,6 +289,13 @@ config ARCH_32BIT_OFF_T · 288 unmodified lines
289 still support 32-bit off_t. This option is enabled for all such289 still support 32-bit off_t. This option is enabled for all such
290 architectures explicitly.290 architectures explicitly.
291 291
292config HAVE_ASM_MODVERSIONS
293 bool
294 help
295 This symbol should be selected by an architecure if it provides
296 <asm/asm-prototypes.h> to support the module versioning for symbols
297 exported from assembly code.
298
292config HAVE_REGS_AND_STACK_ACCESS_API299config HAVE_REGS_AND_STACK_ACCESS_API
293 bool300 bool
294 help301 help
arch/alpha/Kconfig+1−0
@@ -11,6 +11,7 @@ config ALPHA · 10 unmodified lines
11 select PCI_DOMAINS if PCI11 select PCI_DOMAINS if PCI
12 select PCI_SYSCALL if PCI12 select PCI_SYSCALL if PCI
13 select HAVE_AOUT13 select HAVE_AOUT
14 select HAVE_ASM_MODVERSIONS
14 select HAVE_IDE15 select HAVE_IDE
15 select HAVE_OPROFILE16 select HAVE_OPROFILE
16 select HAVE_PCSPKR_PLATFORM17 select HAVE_PCSPKR_PLATFORM
arch/arm64/Kconfig+1−0
@@ -135,6 +135,7 @@ config ARM64 · 134 unmodified lines
135 select HAVE_ARCH_TRANSPARENT_HUGEPAGE135 select HAVE_ARCH_TRANSPARENT_HUGEPAGE
136 select HAVE_ARCH_VMAP_STACK136 select HAVE_ARCH_VMAP_STACK
137 select HAVE_ARM_SMCCC137 select HAVE_ARM_SMCCC
138 select HAVE_ASM_MODVERSIONS
138 select HAVE_EBPF_JIT139 select HAVE_EBPF_JIT
139 select HAVE_C_RECORDMCOUNT140 select HAVE_C_RECORDMCOUNT
140 select HAVE_CMPXCHG_DOUBLE141 select HAVE_CMPXCHG_DOUBLE
arch/ia64/Kconfig+1−0
@@ -17,6 +17,7 @@ config IA64 · 16 unmodified lines
17 select FORCE_PCI if (!IA64_HP_SIM)17 select FORCE_PCI if (!IA64_HP_SIM)
18 select PCI_DOMAINS if PCI18 select PCI_DOMAINS if PCI
19 select PCI_SYSCALL if PCI19 select PCI_SYSCALL if PCI
20 select HAVE_ASM_MODVERSIONS
20 select HAVE_UNSTABLE_SCHED_CLOCK21 select HAVE_UNSTABLE_SCHED_CLOCK
21 select HAVE_EXIT_THREAD22 select HAVE_EXIT_THREAD
22 select HAVE_IDE23 select HAVE_IDE
arch/m68k/Kconfig+1−0
@@ -14,6 +14,7 @@ config M68K · 13 unmodified lines
14 select DMA_DIRECT_REMAP if HAS_DMA && MMU && !COLDFIRE14 select DMA_DIRECT_REMAP if HAS_DMA && MMU && !COLDFIRE
15 select HAVE_IDE15 select HAVE_IDE
16 select HAVE_AOUT if MMU16 select HAVE_AOUT if MMU
17 select HAVE_ASM_MODVERSIONS
17 select HAVE_DEBUG_BUGVERBOSE18 select HAVE_DEBUG_BUGVERBOSE
18 select GENERIC_IRQ_SHOW19 select GENERIC_IRQ_SHOW
19 select GENERIC_ATOMIC6420 select GENERIC_ATOMIC64
arch/mips/Kconfig+1−0
@@ -44,6 +44,7 @@ config MIPS · 43 unmodified lines
44 select HAVE_ARCH_SECCOMP_FILTER44 select HAVE_ARCH_SECCOMP_FILTER
45 select HAVE_ARCH_TRACEHOOK45 select HAVE_ARCH_TRACEHOOK
46 select HAVE_ARCH_TRANSPARENT_HUGEPAGE if CPU_SUPPORTS_HUGEPAGES && 64BIT46 select HAVE_ARCH_TRANSPARENT_HUGEPAGE if CPU_SUPPORTS_HUGEPAGES && 64BIT
47 select HAVE_ASM_MODVERSIONS
47 select HAVE_EBPF_JIT if (!CPU_MICROMIPS)48 select HAVE_EBPF_JIT if (!CPU_MICROMIPS)
48 select HAVE_CONTEXT_TRACKING49 select HAVE_CONTEXT_TRACKING
49 select HAVE_COPY_THREAD_TLS50 select HAVE_COPY_THREAD_TLS
arch/powerpc/Kconfig+1−0
@@ -178,6 +178,7 @@ config PPC · 177 unmodified lines
178 select HAVE_ARCH_NVRAM_OPS178 select HAVE_ARCH_NVRAM_OPS
179 select HAVE_ARCH_SECCOMP_FILTER179 select HAVE_ARCH_SECCOMP_FILTER
180 select HAVE_ARCH_TRACEHOOK180 select HAVE_ARCH_TRACEHOOK
181 select HAVE_ASM_MODVERSIONS
181 select HAVE_C_RECORDMCOUNT182 select HAVE_C_RECORDMCOUNT
182 select HAVE_CBPF_JIT if !PPC64183 select HAVE_CBPF_JIT if !PPC64
183 select HAVE_STACKPROTECTOR if PPC64 && $(cc-option,-mstack-protector-guard=tls -mstack-protector-guard-reg=r13)184 select HAVE_STACKPROTECTOR if PPC64 && $(cc-option,-mstack-protector-guard=tls -mstack-protector-guard-reg=r13)
arch/riscv/Kconfig+1−0
@@ -31,6 +31,7 @@ config RISCV · 30 unmodified lines
31 select GENERIC_SMP_IDLE_THREAD31 select GENERIC_SMP_IDLE_THREAD
32 select GENERIC_ATOMIC64 if !64BIT32 select GENERIC_ATOMIC64 if !64BIT
33 select HAVE_ARCH_AUDITSYSCALL33 select HAVE_ARCH_AUDITSYSCALL
34 select HAVE_ASM_MODVERSIONS
34 select HAVE_MEMBLOCK_NODE_MAP35 select HAVE_MEMBLOCK_NODE_MAP
35 select HAVE_DMA_CONTIGUOUS36 select HAVE_DMA_CONTIGUOUS
36 select HAVE_FUTEX_CMPXCHG if FUTEX37 select HAVE_FUTEX_CMPXCHG if FUTEX
arch/s390/Kconfig+1−0
@@ -131,6 +131,7 @@ config S390 · 130 unmodified lines
131 select HAVE_ARCH_TRACEHOOK131 select HAVE_ARCH_TRACEHOOK
132 select HAVE_ARCH_TRANSPARENT_HUGEPAGE132 select HAVE_ARCH_TRANSPARENT_HUGEPAGE
133 select HAVE_ARCH_VMAP_STACK133 select HAVE_ARCH_VMAP_STACK
134 select HAVE_ASM_MODVERSIONS
134 select HAVE_EBPF_JIT if PACK_STACK && HAVE_MARCH_Z196_FEATURES135 select HAVE_EBPF_JIT if PACK_STACK && HAVE_MARCH_Z196_FEATURES
135 select HAVE_CMPXCHG_DOUBLE136 select HAVE_CMPXCHG_DOUBLE
136 select HAVE_CMPXCHG_LOCAL137 select HAVE_CMPXCHG_LOCAL
arch/sparc/Kconfig+1−0
@@ -17,6 +17,7 @@ config SPARC · 16 unmodified lines
17 select ARCH_MIGHT_HAVE_PC_SERIO17 select ARCH_MIGHT_HAVE_PC_SERIO
18 select OF18 select OF
19 select OF_PROMTREE19 select OF_PROMTREE
20 select HAVE_ASM_MODVERSIONS
20 select HAVE_IDE21 select HAVE_IDE
21 select HAVE_OPROFILE22 select HAVE_OPROFILE
22 select HAVE_ARCH_KGDB if !SMP || SPARC6423 select HAVE_ARCH_KGDB if !SMP || SPARC64
arch/um/Kconfig+1−0
@@ -9,6 +9,7 @@ config UML · 8 unmodified lines
9 select ARCH_NO_PREEMPT9 select ARCH_NO_PREEMPT
10 select HAVE_ARCH_AUDITSYSCALL10 select HAVE_ARCH_AUDITSYSCALL
11 select HAVE_ARCH_SECCOMP_FILTER11 select HAVE_ARCH_SECCOMP_FILTER
12 select HAVE_ASM_MODVERSIONS
12 select HAVE_UID1613 select HAVE_UID16
13 select HAVE_FUTEX_CMPXCHG if FUTEX14 select HAVE_FUTEX_CMPXCHG if FUTEX
14 select HAVE_DEBUG_KMEMLEAK15 select HAVE_DEBUG_KMEMLEAK
arch/x86/Kconfig+1−0
@@ -147,6 +147,7 @@ config X86 · 146 unmodified lines
147 select HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD if X86_64147 select HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD if X86_64
148 select HAVE_ARCH_VMAP_STACK if X86_64148 select HAVE_ARCH_VMAP_STACK if X86_64
149 select HAVE_ARCH_WITHIN_STACK_FRAMES149 select HAVE_ARCH_WITHIN_STACK_FRAMES
150 select HAVE_ASM_MODVERSIONS
150 select HAVE_CMPXCHG_DOUBLE151 select HAVE_CMPXCHG_DOUBLE
151 select HAVE_CMPXCHG_LOCAL152 select HAVE_CMPXCHG_LOCAL
152 select HAVE_CONTEXT_TRACKING if X86_64153 select HAVE_CONTEXT_TRACKING if X86_64
init/Kconfig+8−0
@@ -1989,6 +1989,14 @@ config MODVERSIONS · 1988 unmodified lines
1989 make them incompatible with the kernel you are running. If1989 make them incompatible with the kernel you are running. If
1990 unsure, say N.1990 unsure, say N.
1991 1991
1992config ASM_MODVERSIONS
1993 bool
1994 default HAVE_ASM_MODVERSIONS && MODVERSIONS
1995 help
1996 This enables module versioning for exported symbols also from
1997 assembly. This can be enabled only when the target architecture
1998 supports it.
1999
1992config MODULE_REL_CRCS2000config MODULE_REL_CRCS
1993 bool2001 bool
1994 depends on MODVERSIONS2002 depends on MODVERSIONS
scripts/Makefile.build+1−6
@@ -349,11 +349,7 @@ $(obj)/%.s: $(src)/%.S FORCE · 348 unmodified lines
349quiet_cmd_as_o_S = AS $(quiet_modtag) $@349quiet_cmd_as_o_S = AS $(quiet_modtag) $@
350 cmd_as_o_S = $(CC) $(a_flags) -c -o $@ $<350 cmd_as_o_S = $(CC) $(a_flags) -c -o $@ $<
351 351
352ifdef CONFIG_MODVERSIONS352ifdef CONFIG_ASM_MODVERSIONS
353
354ASM_PROTOTYPES := $(wildcard $(srctree)/arch/$(SRCARCH)/include/asm/asm-prototypes.h)
355
356ifneq ($(ASM_PROTOTYPES),)
357 353
358# versioning matches the C process described above, with difference that354# versioning matches the C process described above, with difference that
359# we parse asm-prototypes.h C header to get function definitions.355# we parse asm-prototypes.h C header to get function definitions.
@@ -369,7 +365,6 @@ cmd_modversions_S = \ · 9 unmodified lines
369 rm -f $(@D)/.tmp_$(@F:.o=.ver); \365 rm -f $(@D)/.tmp_$(@F:.o=.ver); \
370 fi366 fi
371endif367endif
372endif
373 368
374$(obj)/%.o: $(src)/%.S $(objtool_dep) FORCE369$(obj)/%.o: $(src)/%.S $(objtool_dep) FORCE
375 $(call if_changed_rule,as_o_S)370 $(call if_changed_rule,as_o_S)