xref: /linux-6.15/include/linux/vermagic.h (revision 51161bfc)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 
3 #ifndef INCLUDE_VERMAGIC
4 #error "This header can be included from kernel/module.c or *.mod.c only"
5 #endif
6 
7 #include <generated/utsrelease.h>
8 
9 /* Simply sanity version stamp for modules. */
10 #ifdef CONFIG_SMP
11 #define MODULE_VERMAGIC_SMP "SMP "
12 #else
13 #define MODULE_VERMAGIC_SMP ""
14 #endif
15 #ifdef CONFIG_PREEMPT
16 #define MODULE_VERMAGIC_PREEMPT "preempt "
17 #elif defined(CONFIG_PREEMPT_RT)
18 #define MODULE_VERMAGIC_PREEMPT "preempt_rt "
19 #else
20 #define MODULE_VERMAGIC_PREEMPT ""
21 #endif
22 #ifdef CONFIG_MODULE_UNLOAD
23 #define MODULE_VERMAGIC_MODULE_UNLOAD "mod_unload "
24 #else
25 #define MODULE_VERMAGIC_MODULE_UNLOAD ""
26 #endif
27 #ifdef CONFIG_MODVERSIONS
28 #define MODULE_VERMAGIC_MODVERSIONS "modversions "
29 #else
30 #define MODULE_VERMAGIC_MODVERSIONS ""
31 #endif
32 #ifndef MODULE_ARCH_VERMAGIC
33 #define MODULE_ARCH_VERMAGIC ""
34 #endif
35 #ifdef RANDSTRUCT_PLUGIN
36 #include <generated/randomize_layout_hash.h>
37 #define MODULE_RANDSTRUCT_PLUGIN "RANDSTRUCT_PLUGIN_" RANDSTRUCT_HASHED_SEED
38 #else
39 #define MODULE_RANDSTRUCT_PLUGIN
40 #endif
41 
42 #define VERMAGIC_STRING 						\
43 	UTS_RELEASE " "							\
44 	MODULE_VERMAGIC_SMP MODULE_VERMAGIC_PREEMPT 			\
45 	MODULE_VERMAGIC_MODULE_UNLOAD MODULE_VERMAGIC_MODVERSIONS	\
46 	MODULE_ARCH_VERMAGIC						\
47 	MODULE_RANDSTRUCT_PLUGIN
48 
49