Non-executable stack in asm.
authorBen Laurie <ben@openssl.org>
Wed, 5 May 2010 15:50:13 +0000 (15:50 +0000)
committerBen Laurie <ben@openssl.org>
Wed, 5 May 2010 15:50:13 +0000 (15:50 +0000)
CHANGES
crypto/aes/asm/aes-x86_64.pl
crypto/bn/asm/x86_64-mont.pl
crypto/md5/asm/md5-x86_64.pl
crypto/rc4/asm/rc4-x86_64.pl
crypto/sha/asm/sha1-x86_64.pl
crypto/sha/asm/sha512-x86_64.pl
crypto/x86_64cpuid.pl

diff --git a/CHANGES b/CHANGES
index 6f713d9..c9f2226 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -4,6 +4,9 @@
 
  Changes between 1.0.0 and 1.1.0  [xx XXX xxxx]
 
+  *) Make generated asm have non-executable stack.
+     [Contributed by Google <agl@google.com>]
+
   *) New function OPENSSL_gmtime_diff to find the difference in days
      and seconds between two tm structures. This will be used to provide
      additional functionality for ASN1_TIME.
index a545e89..a757b47 100755 (executable)
@@ -42,7 +42,8 @@ $verticalspin=1;      # unlike 32-bit version $verticalspin performs
                        # ~15% better on both AMD and Intel cores
 $speed_limit=512;      # see aes-586.pl for details
 
-$code=".text\n";
+$code=".section .note.GNU-stack,\"\",\@progbits\n";
+$code.=".text\n";
 
 $s0="%eax";
 $s1="%ebx";
index 3b7a6f2..b62373f 100755 (executable)
@@ -45,6 +45,7 @@ $m0="%rbx";
 $m1="%rbp";
 
 $code=<<___;
+.section .note.GNU-stack,"",\@progbits
 .text
 
 .globl bn_mul_mont
index 8678854..b75cf3b 100755 (executable)
@@ -123,6 +123,7 @@ no warnings qw(uninitialized);
 open STDOUT,"| $^X $xlate $flavour $output";
 
 $code .= <<EOF;
+.section .note.GNU-stack,"",\@progbits
 .text
 .align 16
 
index 677be5f..a134127 100755 (executable)
@@ -82,6 +82,7 @@ $YY="%r12";
 $TY="%r13";
 
 $code=<<___;
+.section .note.GNU-stack,"",\@progbits
 .text
 
 .globl RC4
index 35ab0e7..a00f7c6 100755 (executable)
@@ -178,6 +178,7 @@ unshift(@xi,pop(@xi));
 }
 
 $code.=<<___;
+.section .note.GNU-stack,"",\@progbits
 .text
 
 .globl sha1_block_data_order
index e6643f8..aaf9c57 100755 (executable)
@@ -178,6 +178,8 @@ ___
 }
 
 $code=<<___;
+.section .note.GNU-stack,"",\@progbits
+
 .text
 
 .globl $func
index c96821a..72010c9 100644 (file)
@@ -16,6 +16,13 @@ print<<___;
 .section       .init
        call    OPENSSL_cpuid_setup
 
+___
+
+if ($flavour =~ /elf/) {
+  print ".section .note.GNU-stack,\"\",\@progbits\n"
+}
+
+print<<___;
 .text
 
 .globl OPENSSL_atomic_add