mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-08-27 06:50:37 +00:00

While the randstruct GCC plugin was being rebuilt if the randstruct seed changed, Clang builds did not notice the change. This could result in differing struct layouts in a target depending on when it was built. Include the existing generated header file in compiler-version.h when its associated feature name, RANDSTRUCT, is defined. This will be picked up by fixdep and force rebuilds where needed. Link: https://lore.kernel.org/r/20250503184623.2572355-2-kees@kernel.org Reviewed-by: Nicolas Schier <n.schier@avm.de> Tested-by: Nicolas Schier <n.schier@avm.de> Signed-off-by: Kees Cook <kees@kernel.org>
49 lines
1.2 KiB
C
49 lines
1.2 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef _LINUX_VERMAGIC_H
|
|
#define _LINUX_VERMAGIC_H
|
|
|
|
#ifndef INCLUDE_VERMAGIC
|
|
#error "This header can be included from kernel/module.c or *.mod.c only"
|
|
#endif
|
|
|
|
#include <generated/utsrelease.h>
|
|
#include <asm/vermagic.h>
|
|
|
|
/* Simply sanity version stamp for modules. */
|
|
#ifdef CONFIG_SMP
|
|
#define MODULE_VERMAGIC_SMP "SMP "
|
|
#else
|
|
#define MODULE_VERMAGIC_SMP ""
|
|
#endif
|
|
#ifdef CONFIG_PREEMPT_RT
|
|
#define MODULE_VERMAGIC_PREEMPT "preempt_rt "
|
|
#elif defined(CONFIG_PREEMPT_BUILD)
|
|
#define MODULE_VERMAGIC_PREEMPT "preempt "
|
|
#else
|
|
#define MODULE_VERMAGIC_PREEMPT ""
|
|
#endif
|
|
#ifdef CONFIG_MODULE_UNLOAD
|
|
#define MODULE_VERMAGIC_MODULE_UNLOAD "mod_unload "
|
|
#else
|
|
#define MODULE_VERMAGIC_MODULE_UNLOAD ""
|
|
#endif
|
|
#ifdef CONFIG_MODVERSIONS
|
|
#define MODULE_VERMAGIC_MODVERSIONS "modversions "
|
|
#else
|
|
#define MODULE_VERMAGIC_MODVERSIONS ""
|
|
#endif
|
|
#ifdef RANDSTRUCT
|
|
#define MODULE_RANDSTRUCT "RANDSTRUCT_" RANDSTRUCT_HASHED_SEED
|
|
#else
|
|
#define MODULE_RANDSTRUCT
|
|
#endif
|
|
|
|
#define VERMAGIC_STRING \
|
|
UTS_RELEASE " " \
|
|
MODULE_VERMAGIC_SMP MODULE_VERMAGIC_PREEMPT \
|
|
MODULE_VERMAGIC_MODULE_UNLOAD MODULE_VERMAGIC_MODVERSIONS \
|
|
MODULE_ARCH_VERMAGIC \
|
|
MODULE_RANDSTRUCT
|
|
|
|
#endif /* _LINUX_VERMAGIC_H */
|