Skip to content

Commit 7f56978

Browse files
committed
tools headers: Update the arch/x86/lib/memset_64.S copy with the kernel sources
To pick up the changes in: 2981557 x86,kcfi: Fix EXPORT_SYMBOL vs kCFI That required adding a copy of include/linux/cfi_types.h and its checking in tools/perf/check-headers.h. Addressing this perf tools build warning: Warning: Kernel ABI header differences: diff -u tools/arch/x86/lib/memset_64.S arch/x86/lib/memset_64.S Please see tools/include/uapi/README for further details. Acked-by: Ingo Molnar <mingo@kernel.org> Tested-by: Venkat Rao Bagalkote <venkat88@linux.ibm.com> Cc: x86@kernel.org Link: https://lore.kernel.org/r/20250410001125.391820-11-namhyung@kernel.org Signed-off-by: Namhyung Kim <namhyung@kernel.org>
1 parent 847f140 commit 7f56978

File tree

3 files changed

+48
-1
lines changed

3 files changed

+48
-1
lines changed

tools/arch/x86/lib/memset_64.S

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
#include <linux/export.h>
55
#include <linux/linkage.h>
6+
#include <linux/cfi_types.h>
67
#include <asm/cpufeatures.h>
78
#include <asm/alternative.h>
89

@@ -28,7 +29,7 @@
2829
* only for the return value that is the same as the source input,
2930
* which the compiler could/should do much better anyway.
3031
*/
31-
SYM_FUNC_START(__memset)
32+
SYM_TYPED_FUNC_START(__memset)
3233
ALTERNATIVE "jmp memset_orig", "", X86_FEATURE_FSRS
3334

3435
movq %rdi,%r9

tools/include/linux/cfi_types.h

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
/* SPDX-License-Identifier: GPL-2.0 */
2+
/*
3+
* Clang Control Flow Integrity (CFI) type definitions.
4+
*/
5+
#ifndef _LINUX_CFI_TYPES_H
6+
#define _LINUX_CFI_TYPES_H
7+
8+
#ifdef __ASSEMBLY__
9+
#include <linux/linkage.h>
10+
11+
#ifdef CONFIG_CFI_CLANG
12+
/*
13+
* Use the __kcfi_typeid_<function> type identifier symbol to
14+
* annotate indirectly called assembly functions. The compiler emits
15+
* these symbols for all address-taken function declarations in C
16+
* code.
17+
*/
18+
#ifndef __CFI_TYPE
19+
#define __CFI_TYPE(name) \
20+
.4byte __kcfi_typeid_##name
21+
#endif
22+
23+
#define SYM_TYPED_ENTRY(name, linkage, align...) \
24+
linkage(name) ASM_NL \
25+
align ASM_NL \
26+
__CFI_TYPE(name) ASM_NL \
27+
name:
28+
29+
#define SYM_TYPED_START(name, linkage, align...) \
30+
SYM_TYPED_ENTRY(name, linkage, align)
31+
32+
#else /* CONFIG_CFI_CLANG */
33+
34+
#define SYM_TYPED_START(name, linkage, align...) \
35+
SYM_START(name, linkage, align)
36+
37+
#endif /* CONFIG_CFI_CLANG */
38+
39+
#ifndef SYM_TYPED_FUNC_START
40+
#define SYM_TYPED_FUNC_START(name) \
41+
SYM_TYPED_START(name, SYM_L_GLOBAL, SYM_A_ALIGN)
42+
#endif
43+
44+
#endif /* __ASSEMBLY__ */
45+
#endif /* _LINUX_CFI_TYPES_H */

tools/perf/check-headers.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ FILES=(
2020
"include/uapi/linux/stat.h"
2121
"include/linux/bits.h"
2222
"include/vdso/bits.h"
23+
"include/linux/cfi_types.h"
2324
"include/linux/const.h"
2425
"include/vdso/const.h"
2526
"include/vdso/unaligned.h"

0 commit comments

Comments
 (0)