From 5fe02c89a7dc1d0ba78f69717d78de304b4a2021 Mon Sep 17 00:00:00 2001 From: Siddhesh Poyarekar Date: Tue, 18 Jul 2023 11:56:18 -0400 Subject: [PATCH] Build correctly with IBT and Shadow Stack (#1289) Add .gnu.property notes to indicate support for IBT and shadow stacks when libsodium is built with it. There's no stack switching code in here, so this should not need any other codegen changes. --- .../curve25519/sandy2x/sandy2x.S | 18 ++++++++++++++++++ .../salsa20/xmm6/salsa20_xmm6-asm.S | 18 ++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/src/libsodium/crypto_scalarmult/curve25519/sandy2x/sandy2x.S b/src/libsodium/crypto_scalarmult/curve25519/sandy2x/sandy2x.S index 585804fb..eb4fe671 100644 --- a/src/libsodium/crypto_scalarmult/curve25519/sandy2x/sandy2x.S +++ b/src/libsodium/crypto_scalarmult/curve25519/sandy2x/sandy2x.S @@ -10,6 +10,24 @@ #include "ladder.S" #if defined(__linux__) && defined(__ELF__) +#if defined(__CET__) +.section .note.gnu.property,"a" +.p2align 3 +.long 1f - 0f +.long 4f - 1f +.long 5 +0: +.string "GNU" +1: +.p2align 3 +.long 0xc0000002 +.long 3f - 2f +2: +.long __CET__ +3: +.p2align 3 +4: +#endif .section .note.GNU-stack,"",%progbits #endif diff --git a/src/libsodium/crypto_stream/salsa20/xmm6/salsa20_xmm6-asm.S b/src/libsodium/crypto_stream/salsa20/xmm6/salsa20_xmm6-asm.S index 6d9f354e..b53a4f4a 100644 --- a/src/libsodium/crypto_stream/salsa20/xmm6/salsa20_xmm6-asm.S +++ b/src/libsodium/crypto_stream/salsa20/xmm6/salsa20_xmm6-asm.S @@ -956,5 +956,23 @@ jmp ._bytesbetween1and255 #endif #if defined(__linux__) && defined(__ELF__) +#if defined(__CET__) +.section .note.gnu.property,"a" +.p2align 3 +.long 1f - 0f +.long 4f - 1f +.long 5 +0: +.string "GNU" +1: +.p2align 3 +.long 0xc0000002 +.long 3f - 2f +2: +.long __CET__ +3: +.p2align 3 +4: +#endif .section .note.GNU-stack,"",%progbits #endif