From ec5be28202d1cc318ca1d4bf28b016110ec4c23e Mon Sep 17 00:00:00 2001
From: "Ryan C. Gordon" <icculus@icculus.org>
Date: Mon, 12 Dec 2005 09:13:12 +0000
Subject: [PATCH] From: Mike Frysinger <vapier@gentoo.org> To: sdl@libsdl.org
 Date: Sun, 11 Dec 2005 22:57:37 -0500 Subject: [SDL] exec stack in libsdl
 update

i posted back in September a patch to remove executable stacks:
http://www.devolution.com/pipermail/sdl/2005-September/070626.html

later in November, a similar patch was merged it seems:
http://www.libsdl.org/cgi/cvsweb.cgi/SDL12/src/hermes/mmx_main.asm

however, this lacks the additional output format checks that i posted in my
patch ... this isnt a problem if the hermes asm code is only ever used to
produce ELF objects, but if this is not true, then the additional checks in
my original patch will need to be merged
-mike

--HG--
extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%401202
---
 src/hermes/mmx_main.asm | 7 +++----
 src/hermes/mmxp2_32.asm | 6 +++---
 src/hermes/x86_main.asm | 5 ++++-
 src/hermes/x86p_16.asm  | 6 +++---
 src/hermes/x86p_32.asm  | 6 ++++--
 5 files changed, 17 insertions(+), 13 deletions(-)

diff --git a/src/hermes/mmx_main.asm b/src/hermes/mmx_main.asm
index edf9385d..a2e35d85 100644
--- a/src/hermes/mmx_main.asm
+++ b/src/hermes/mmx_main.asm
@@ -12,8 +12,6 @@ BITS 32
 GLOBAL _ConvertMMX
 GLOBAL _mmxreturn
 
-
-SECTION .note.GNU-stack noalloc progbits noexec nowrite
 SECTION .text
 		
 ;; _ConvertMMX:	 
@@ -71,5 +69,6 @@ endconvert:
 	
 	ret		
 
-
-
+%ifidn __OUTPUT_FORMAT__,elf
+section .note.GNU-stack noalloc noexec nowrite progbits
+%endif
diff --git a/src/hermes/mmxp2_32.asm b/src/hermes/mmxp2_32.asm
index 8999bae8..d016ce43 100644
--- a/src/hermes/mmxp2_32.asm
+++ b/src/hermes/mmxp2_32.asm
@@ -29,7 +29,6 @@ GLOBAL _ConvertMMXpII32_16BGR555
 
 EXTERN _mmxreturn
  
-SECTION .note.GNU-stack noalloc progbits noexec nowrite
 SECTION .data
 	
 ALIGN 8
@@ -383,5 +382,6 @@ _convert_bgr555_cheat:
 .L4:		
 	jmp _mmxreturn
 
-
-
+%ifidn __OUTPUT_FORMAT__,elf
+section .note.GNU-stack noalloc noexec nowrite progbits
+%endif
diff --git a/src/hermes/x86_main.asm b/src/hermes/x86_main.asm
index e152c6a6..afe02b58 100644
--- a/src/hermes/x86_main.asm
+++ b/src/hermes/x86_main.asm
@@ -16,7 +16,6 @@ GLOBAL _x86return
 	
 GLOBAL _Hermes_X86_CPU
 
-SECTION .note.GNU-stack noalloc progbits noexec nowrite
 SECTION .data
 	
 cpu_flags dd 0
@@ -123,3 +122,7 @@ _Hermes_X86_CPU:
 
 .L1:	
 	ret
+
+%ifidn __OUTPUT_FORMAT__,elf
+section .note.GNU-stack noalloc noexec nowrite progbits
+%endif
diff --git a/src/hermes/x86p_16.asm b/src/hermes/x86p_16.asm
index d7ee7400..5498c1ec 100644
--- a/src/hermes/x86p_16.asm
+++ b/src/hermes/x86p_16.asm
@@ -27,11 +27,8 @@ GLOBAL _ConvertX86p16_8RGB332
 EXTERN _ConvertX86
 EXTERN _x86return
 
-SECTION .note.GNU-stack noalloc progbits noexec nowrite
 SECTION .text
 
-
-
 _ConvertX86p16_16BGR565:
 
     ; check short
@@ -494,3 +491,6 @@ _ConvertX86p16_8RGB332:
 .L7 pop ebp
     jmp _x86return
 
+%ifidn __OUTPUT_FORMAT__,elf
+section .note.GNU-stack noalloc noexec nowrite progbits
+%endif
diff --git a/src/hermes/x86p_32.asm b/src/hermes/x86p_32.asm
index 4be2d623..276225ad 100644
--- a/src/hermes/x86p_32.asm
+++ b/src/hermes/x86p_32.asm
@@ -25,10 +25,8 @@ GLOBAL _ConvertX86p32_8RGB332
 
 EXTERN _x86return
 	
-SECTION .note.GNU-stack noalloc progbits noexec nowrite
 SECTION .text
 
-
 ;; _Convert_*
 ;; Paramters:	
 ;;   ESI = source 
@@ -1042,3 +1040,7 @@ _ConvertX86p32_8RGB332:
 	
 .L4:	
 	jmp _x86return
+
+%ifidn __OUTPUT_FORMAT__,elf
+section .note.GNU-stack noalloc noexec nowrite progbits
+%endif
-- 
2.18.1