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