You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.9 KiB
56 lines
1.9 KiB
From d313b632ede3c47945e42289672c08013bc6a56f Mon Sep 17 00:00:00 2001
|
|
From: Austin Hu <austin.hu@intel.com>
|
|
Date: Thu, 19 Sep 2019 06:28:28 +0800
|
|
Subject: [PATCH] Don't compile the binaries as executable stack.
|
|
|
|
Signed-off-by: Austin Hu <austin.hu@intel.com>
|
|
---
|
|
Source/Lib/ASM_SSE2/x64Macro.asm | 14 ++++++++++++++
|
|
Source/Lib/ASM_SSE2/x64inc.asm | 14 ++++++++++++++
|
|
2 files changed, 28 insertions(+)
|
|
|
|
diff --git a/Source/Lib/ASM_SSE2/x64Macro.asm b/Source/Lib/ASM_SSE2/x64Macro.asm
|
|
index eaeeac61..7dcb9038 100644
|
|
--- a/Source/Lib/ASM_SSE2/x64Macro.asm
|
|
+++ b/Source/Lib/ASM_SSE2/x64Macro.asm
|
|
@@ -28,3 +28,17 @@
|
|
punpckl%1 xmm%8, xmm%9 ; 67 66 65 64 63 62 61 60 73 63 72 62 71 61 70 60 75 65 55 45 74 64 54 44 76 66 56 46 36 26 16 06
|
|
punpckh%1 xmm%13, xmm%9 ; 77 76 75 74 73 72 71 70 77 67 76 66 75 65 74 64 77 67 57 47 76 66 56 46 77 67 57 47 37 27 17 07
|
|
%endmacro
|
|
+
|
|
+%define FORMAT_ELF 0
|
|
+%ifidn __OUTPUT_FORMAT__,elf
|
|
+ %define FORMAT_ELF 1
|
|
+%elifidn __OUTPUT_FORMAT__,elf32
|
|
+ %define FORMAT_ELF 1
|
|
+%elifidn __OUTPUT_FORMAT__,elf64
|
|
+ %define FORMAT_ELF 1
|
|
+%endif
|
|
+
|
|
+; This is needed for ELF, otherwise the GNU linker assumes the stack is executable by default.
|
|
+%if FORMAT_ELF
|
|
+ [SECTION .note.GNU-stack noalloc noexec nowrite progbits]
|
|
+%endif
|
|
diff --git a/Source/Lib/ASM_SSE2/x64inc.asm b/Source/Lib/ASM_SSE2/x64inc.asm
|
|
index 4440b060..a884545b 100644
|
|
--- a/Source/Lib/ASM_SSE2/x64inc.asm
|
|
+++ b/Source/Lib/ASM_SSE2/x64inc.asm
|
|
@@ -323,3 +323,17 @@ bits 64
|
|
%endif
|
|
%endmacro
|
|
%define NEED_EMMS 1
|
|
+
|
|
+%define FORMAT_ELF 0
|
|
+%ifidn __OUTPUT_FORMAT__,elf
|
|
+ %define FORMAT_ELF 1
|
|
+%elifidn __OUTPUT_FORMAT__,elf32
|
|
+ %define FORMAT_ELF 1
|
|
+%elifidn __OUTPUT_FORMAT__,elf64
|
|
+ %define FORMAT_ELF 1
|
|
+%endif
|
|
+
|
|
+; This is needed for ELF, otherwise the GNU linker assumes the stack is executable by default.
|
|
+%if FORMAT_ELF
|
|
+ [SECTION .note.GNU-stack noalloc noexec nowrite progbits]
|
|
+%endif
|