e4396ca0da
Resolves: RHEL-74346
52 lines
1.4 KiB
Diff
52 lines
1.4 KiB
Diff
From 90a05f32166c4a45224a5eedbec9c5c7e21d2dbf Mon Sep 17 00:00:00 2001
|
|
From: Nikita Popov <npopov@redhat.com>
|
|
Date: Fri, 17 Jan 2025 09:26:49 +0100
|
|
Subject: [PATCH] [openmp] Support CET in z_Linux_asm.S (#123213)
|
|
|
|
When libomp is built with -cf-protection, add endbr instructions to the
|
|
start of functions for Intel CET support.
|
|
---
|
|
openmp/runtime/src/z_Linux_asm.S | 12 ++++++++++++
|
|
1 file changed, 12 insertions(+)
|
|
|
|
diff --git a/openmp/runtime/src/z_Linux_asm.S b/openmp/runtime/src/z_Linux_asm.S
|
|
index cc5344cdd124..0bf9f07a13f1 100644
|
|
--- a/openmp/runtime/src/z_Linux_asm.S
|
|
+++ b/openmp/runtime/src/z_Linux_asm.S
|
|
@@ -19,6 +19,16 @@
|
|
|
|
#if KMP_ARCH_X86 || KMP_ARCH_X86_64
|
|
|
|
+# if defined(__ELF__) && defined(__CET__) && defined(__has_include)
|
|
+# if __has_include(<cet.h>)
|
|
+# include <cet.h>
|
|
+# endif
|
|
+# endif
|
|
+
|
|
+# if !defined(_CET_ENDBR)
|
|
+# define _CET_ENDBR
|
|
+# endif
|
|
+
|
|
# if KMP_MIC
|
|
// the 'delay r16/r32/r64' should be used instead of the 'pause'.
|
|
// The delay operation has the effect of removing the current thread from
|
|
@@ -66,6 +76,7 @@
|
|
ALIGN 4
|
|
.globl KMP_PREFIX_UNDERSCORE($0)
|
|
KMP_PREFIX_UNDERSCORE($0):
|
|
+ _CET_ENDBR
|
|
.endmacro
|
|
# else // KMP_OS_DARWIN
|
|
# define KMP_PREFIX_UNDERSCORE(x) x //no extra underscore for Linux* OS symbols
|
|
@@ -92,6 +103,7 @@ KMP_PREFIX_UNDERSCORE($0):
|
|
.globl KMP_PREFIX_UNDERSCORE(\proc)
|
|
KMP_PREFIX_UNDERSCORE(\proc):
|
|
.cfi_startproc
|
|
+ _CET_ENDBR
|
|
.endm
|
|
.macro KMP_CFI_DEF_OFFSET sz
|
|
.cfi_def_cfa_offset \sz
|
|
--
|
|
2.47.1
|
|
|