1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef _LINUX_VERMAGIC_H
3 #define _LINUX_VERMAGIC_H
5 #ifndef INCLUDE_VERMAGIC
6 #error "This header can be included from kernel/module.c or *.mod.c only"
9 #include <generated/utsrelease.h>
10 #include <asm/vermagic.h>
12 /* Simply sanity version stamp for modules. */
14 #define MODULE_VERMAGIC_SMP "SMP "
16 #define MODULE_VERMAGIC_SMP ""
19 #define MODULE_VERMAGIC_PREEMPT "preempt "
20 #elif defined(CONFIG_PREEMPT_RT)
21 #define MODULE_VERMAGIC_PREEMPT "preempt_rt "
23 #define MODULE_VERMAGIC_PREEMPT ""
25 #ifdef CONFIG_MODULE_UNLOAD
26 #define MODULE_VERMAGIC_MODULE_UNLOAD "mod_unload "
28 #define MODULE_VERMAGIC_MODULE_UNLOAD ""
30 #ifdef CONFIG_MODVERSIONS
31 #define MODULE_VERMAGIC_MODVERSIONS "modversions "
33 #define MODULE_VERMAGIC_MODVERSIONS ""
35 #ifdef RANDSTRUCT_PLUGIN
36 #include <generated/randomize_layout_hash.h>
37 #define MODULE_RANDSTRUCT_PLUGIN "RANDSTRUCT_PLUGIN_" RANDSTRUCT_HASHED_SEED
39 #define MODULE_RANDSTRUCT_PLUGIN
42 #define VERMAGIC_STRING \
44 MODULE_VERMAGIC_SMP MODULE_VERMAGIC_PREEMPT \
45 MODULE_VERMAGIC_MODULE_UNLOAD MODULE_VERMAGIC_MODVERSIONS \
46 MODULE_ARCH_VERMAGIC \
47 MODULE_RANDSTRUCT_PLUGIN
49 #endif /* _LINUX_VERMAGIC_H */