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
289289 still support 32-bit off_t. This option is enabled for all such
290290 architectures explicitly.
291291
292+config 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+
292299 config HAVE_REGS_AND_STACK_ACCESS_API
293300 bool
294301 help
arch/alpha/Kconfig+1−0
@@ -11,6 +11,7 @@ config ALPHA · 10 unmodified lines
1111 select PCI_DOMAINS if PCI
1212 select PCI_SYSCALL if PCI
1313 select HAVE_AOUT
14+ select HAVE_ASM_MODVERSIONS
1415 select HAVE_IDE
1516 select HAVE_OPROFILE
1617 select HAVE_PCSPKR_PLATFORM
arch/arm64/Kconfig+1−0
@@ -135,6 +135,7 @@ config ARM64 · 134 unmodified lines
135135 select HAVE_ARCH_TRANSPARENT_HUGEPAGE
136136 select HAVE_ARCH_VMAP_STACK
137137 select HAVE_ARM_SMCCC
138+ select HAVE_ASM_MODVERSIONS
138139 select HAVE_EBPF_JIT
139140 select HAVE_C_RECORDMCOUNT
140141 select HAVE_CMPXCHG_DOUBLE
arch/ia64/Kconfig+1−0
@@ -17,6 +17,7 @@ config IA64 · 16 unmodified lines
1717 select FORCE_PCI if (!IA64_HP_SIM)
1818 select PCI_DOMAINS if PCI
1919 select PCI_SYSCALL if PCI
20+ select HAVE_ASM_MODVERSIONS
2021 select HAVE_UNSTABLE_SCHED_CLOCK
2122 select HAVE_EXIT_THREAD
2223 select HAVE_IDE
arch/m68k/Kconfig+1−0
@@ -14,6 +14,7 @@ config M68K · 13 unmodified lines
1414 select DMA_DIRECT_REMAP if HAS_DMA && MMU && !COLDFIRE
1515 select HAVE_IDE
1616 select HAVE_AOUT if MMU
17+ select HAVE_ASM_MODVERSIONS
1718 select HAVE_DEBUG_BUGVERBOSE
1819 select GENERIC_IRQ_SHOW
1920 select GENERIC_ATOMIC64
arch/mips/Kconfig+1−0
@@ -44,6 +44,7 @@ config MIPS · 43 unmodified lines
4444 select HAVE_ARCH_SECCOMP_FILTER
4545 select HAVE_ARCH_TRACEHOOK
4646 select HAVE_ARCH_TRANSPARENT_HUGEPAGE if CPU_SUPPORTS_HUGEPAGES && 64BIT
47+ select HAVE_ASM_MODVERSIONS
4748 select HAVE_EBPF_JIT if (!CPU_MICROMIPS)
4849 select HAVE_CONTEXT_TRACKING
4950 select HAVE_COPY_THREAD_TLS
arch/powerpc/Kconfig+1−0
@@ -178,6 +178,7 @@ config PPC · 177 unmodified lines
178178 select HAVE_ARCH_NVRAM_OPS
179179 select HAVE_ARCH_SECCOMP_FILTER
180180 select HAVE_ARCH_TRACEHOOK
181+ select HAVE_ASM_MODVERSIONS
181182 select HAVE_C_RECORDMCOUNT
182183 select HAVE_CBPF_JIT if !PPC64
183184 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
3131 select GENERIC_SMP_IDLE_THREAD
3232 select GENERIC_ATOMIC64 if !64BIT
3333 select HAVE_ARCH_AUDITSYSCALL
34+ select HAVE_ASM_MODVERSIONS
3435 select HAVE_MEMBLOCK_NODE_MAP
3536 select HAVE_DMA_CONTIGUOUS
3637 select HAVE_FUTEX_CMPXCHG if FUTEX
arch/s390/Kconfig+1−0
@@ -131,6 +131,7 @@ config S390 · 130 unmodified lines
131131 select HAVE_ARCH_TRACEHOOK
132132 select HAVE_ARCH_TRANSPARENT_HUGEPAGE
133133 select HAVE_ARCH_VMAP_STACK
134+ select HAVE_ASM_MODVERSIONS
134135 select HAVE_EBPF_JIT if PACK_STACK && HAVE_MARCH_Z196_FEATURES
135136 select HAVE_CMPXCHG_DOUBLE
136137 select HAVE_CMPXCHG_LOCAL
arch/sparc/Kconfig+1−0
@@ -17,6 +17,7 @@ config SPARC · 16 unmodified lines
1717 select ARCH_MIGHT_HAVE_PC_SERIO
1818 select OF
1919 select OF_PROMTREE
20+ select HAVE_ASM_MODVERSIONS
2021 select HAVE_IDE
2122 select HAVE_OPROFILE
2223 select HAVE_ARCH_KGDB if !SMP || SPARC64
arch/um/Kconfig+1−0
@@ -9,6 +9,7 @@ config UML · 8 unmodified lines
99 select ARCH_NO_PREEMPT
1010 select HAVE_ARCH_AUDITSYSCALL
1111 select HAVE_ARCH_SECCOMP_FILTER
12+ select HAVE_ASM_MODVERSIONS
1213 select HAVE_UID16
1314 select HAVE_FUTEX_CMPXCHG if FUTEX
1415 select HAVE_DEBUG_KMEMLEAK
arch/x86/Kconfig+1−0
@@ -147,6 +147,7 @@ config X86 · 146 unmodified lines
147147 select HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD if X86_64
148148 select HAVE_ARCH_VMAP_STACK if X86_64
149149 select HAVE_ARCH_WITHIN_STACK_FRAMES
150+ select HAVE_ASM_MODVERSIONS
150151 select HAVE_CMPXCHG_DOUBLE
151152 select HAVE_CMPXCHG_LOCAL
152153 select HAVE_CONTEXT_TRACKING if X86_64
init/Kconfig+8−0
@@ -1989,6 +1989,14 @@ config MODVERSIONS · 1988 unmodified lines
19891989 make them incompatible with the kernel you are running. If
19901990 unsure, say N.
19911991
1992+config 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+
19922000 config MODULE_REL_CRCS
19932001 bool
19942002 depends on MODVERSIONS
scripts/Makefile.build+1−6
@@ -349,11 +349,7 @@ $(obj)/%.s: $(src)/%.S FORCE · 348 unmodified lines
349349 quiet_cmd_as_o_S = AS $(quiet_modtag) $@
350350 cmd_as_o_S = $(CC) $(a_flags) -c -o $@ $<
351351
352−ifdef CONFIG_MODVERSIONS
353−
354−ASM_PROTOTYPES := $(wildcard $(srctree)/arch/$(SRCARCH)/include/asm/asm-prototypes.h)
355−
356−ifneq ($(ASM_PROTOTYPES),)
352+ifdef CONFIG_ASM_MODVERSIONS
357353
358354 # versioning matches the C process described above, with difference that
359355 # we parse asm-prototypes.h C header to get function definitions.
@@ -369,7 +365,6 @@ cmd_modversions_S = \ · 9 unmodified lines
369365 rm -f $(@D)/.tmp_$(@F:.o=.ver); \
370366 fi
371367 endif
372−endif
373368
374369 $(obj)/%.o: $(src)/%.S $(objtool_dep) FORCE
375370 $(call if_changed_rule,as_o_S)