|
|
2d39e2 |
From: H.J. Lu <hjl.tools@gmail.com>
|
|
|
2d39e2 |
Date: Wed, 23 Dec 2020 15:49:04 +0100 (06:49 -0800)
|
|
|
2d39e2 |
Subject: [PATCH] liblzma: Enable Intel CET in x86 CRC assembly codes
|
|
|
2d39e2 |
|
|
|
2d39e2 |
When Intel CET is enabled, we need to include <cet.h> in assembly codes
|
|
|
2d39e2 |
to mark Intel CET support and add _CET_ENDBR to indirect jump targets.
|
|
|
2d39e2 |
|
|
|
2d39e2 |
Tested on Intel Tiger Lake under CET enabled Linux.
|
|
|
2d39e2 |
---
|
|
|
2d39e2 |
src/liblzma/check/crc32_x86.S | 9 +++++++++
|
|
|
2d39e2 |
src/liblzma/check/crc64_x86.S | 9 +++++++++
|
|
|
2d39e2 |
2 files changed, 18 insertions(+)
|
|
|
2d39e2 |
|
|
|
2d39e2 |
diff --git a/src/liblzma/check/crc32_x86.S b/src/liblzma/check/crc32_x86.S
|
|
|
2d39e2 |
index 67f68a4..e3745e6 100644
|
|
|
2d39e2 |
--- a/src/liblzma/check/crc32_x86.S
|
|
|
2d39e2 |
+++ b/src/liblzma/check/crc32_x86.S
|
|
|
2d39e2 |
@@ -51,6 +51,14 @@ init_table(void)
|
|
|
2d39e2 |
* extern uint32_t lzma_crc32(const uint8_t *buf, size_t size, uint32_t crc);
|
|
|
2d39e2 |
*/
|
|
|
2d39e2 |
|
|
|
2d39e2 |
+/* When Intel CET is enabled, include <cet.h> in assembly code to mark
|
|
|
2d39e2 |
+ Intel CET support. */
|
|
|
2d39e2 |
+#ifdef __CET__
|
|
|
2d39e2 |
+# include <cet.h>
|
|
|
2d39e2 |
+#else
|
|
|
2d39e2 |
+# define _CET_ENDBR
|
|
|
2d39e2 |
+#endif
|
|
|
2d39e2 |
+
|
|
|
2d39e2 |
/*
|
|
|
2d39e2 |
* On some systems, the functions need to be prefixed. The prefix is
|
|
|
2d39e2 |
* usually an underscore.
|
|
|
2d39e2 |
@@ -83,6 +91,7 @@ init_table(void)
|
|
|
2d39e2 |
|
|
|
2d39e2 |
ALIGN(4, 16)
|
|
|
2d39e2 |
LZMA_CRC32:
|
|
|
2d39e2 |
+ _CET_ENDBR
|
|
|
2d39e2 |
/*
|
|
|
2d39e2 |
* Register usage:
|
|
|
2d39e2 |
* %eax crc
|
|
|
2d39e2 |
diff --git a/src/liblzma/check/crc64_x86.S b/src/liblzma/check/crc64_x86.S
|
|
|
2d39e2 |
index f5bb84b..7ee08f6 100644
|
|
|
2d39e2 |
--- a/src/liblzma/check/crc64_x86.S
|
|
|
2d39e2 |
+++ b/src/liblzma/check/crc64_x86.S
|
|
|
2d39e2 |
@@ -41,6 +41,14 @@ init_table(void)
|
|
|
2d39e2 |
* extern uint64_t lzma_crc64(const uint8_t *buf, size_t size, uint64_t crc);
|
|
|
2d39e2 |
*/
|
|
|
2d39e2 |
|
|
|
2d39e2 |
+/* When Intel CET is enabled, include <cet.h> in assembly code to mark
|
|
|
2d39e2 |
+ Intel CET support. */
|
|
|
2d39e2 |
+#ifdef __CET__
|
|
|
2d39e2 |
+# include <cet.h>
|
|
|
2d39e2 |
+#else
|
|
|
2d39e2 |
+# define _CET_ENDBR
|
|
|
2d39e2 |
+#endif
|
|
|
2d39e2 |
+
|
|
|
2d39e2 |
/*
|
|
|
2d39e2 |
* On some systems, the functions need to be prefixed. The prefix is
|
|
|
2d39e2 |
* usually an underscore.
|
|
|
2d39e2 |
@@ -73,6 +81,7 @@ init_table(void)
|
|
|
2d39e2 |
|
|
|
2d39e2 |
ALIGN(4, 16)
|
|
|
2d39e2 |
LZMA_CRC64:
|
|
|
2d39e2 |
+ _CET_ENDBR
|
|
|
2d39e2 |
/*
|
|
|
2d39e2 |
* Register usage:
|
|
|
2d39e2 |
* %eax crc LSB
|
|
|
2d39e2 |
--
|
|
|
2d39e2 |
2.26.0
|
|
|
2d39e2 |
|