Move no-exec-stack sections outside of #ifs.

When building with |OPENSSL_NO_ASM|, the section that marks assembly
files as no-exec-stack will currently be omitted. That results in an
empty assembly file but that's still enough to trigger warnings:

warning: crypto_tests/trampoline-x86_64.o: missing .note.GNU-stack section implies executable stack

This change makes it so that the section marker will always be emitted,
even if the file is otherwise empty.

Change-Id: I2d08d34ed9dbe9e9592c88dcd42d3ba4fa3d7652
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/38084
Commit-Queue: David Benjamin <davidben@google.com>
Reviewed-by: David Benjamin <davidben@google.com>
diff --git a/crypto/curve25519/asm/x25519-asm-arm.S b/crypto/curve25519/asm/x25519-asm-arm.S
index 9a26add..41bc0c6 100644
--- a/crypto/curve25519/asm/x25519-asm-arm.S
+++ b/crypto/curve25519/asm/x25519-asm-arm.S
@@ -2129,8 +2129,8 @@
 vpop {q4,q5,q6,q7}
 bx lr
 
+#endif  /* !OPENSSL_NO_ASM && __arm__ && !__APPLE__ */
+
 #if defined(__ELF__)
 .section	.note.GNU-stack,"",%progbits
 #endif
-
-#endif  /* !OPENSSL_NO_ASM && __arm__ && !__APPLE__ */
diff --git a/crypto/hrss/asm/poly_rq_mul.S b/crypto/hrss/asm/poly_rq_mul.S
index 0b684c3..d384627 100644
--- a/crypto/hrss/asm/poly_rq_mul.S
+++ b/crypto/hrss/asm/poly_rq_mul.S
@@ -8460,8 +8460,8 @@
 .cfi_endproc
 .size poly_Rq_mul,.-poly_Rq_mul
 
-#if defined(__ELF__)
-.section	.note.GNU-stack,"",@progbits
 #endif
 
+#if defined(__ELF__)
+.section	.note.GNU-stack,"",@progbits
 #endif
diff --git a/crypto/perlasm/arm-xlate.pl b/crypto/perlasm/arm-xlate.pl
index adbd239..58904d0 100755
--- a/crypto/perlasm/arm-xlate.pl
+++ b/crypto/perlasm/arm-xlate.pl
@@ -228,10 +228,10 @@
     print "\n";
 }
 
-# See https://www.airs.com/blog/archives/518.
-print ".section\t.note.GNU-stack,\"\",\%progbits\n" if ($flavour =~ /linux/);
-
 print "#endif\n" if ($flavour eq "linux32" || $flavour eq "linux64");
 print "#endif  // !OPENSSL_NO_ASM\n";
 
+# See https://www.airs.com/blog/archives/518.
+print ".section\t.note.GNU-stack,\"\",\%progbits\n" if ($flavour =~ /linux/);
+
 close STDOUT;
diff --git a/crypto/perlasm/ppc-xlate.pl b/crypto/perlasm/ppc-xlate.pl
index f8e42a2..4f22c36 100644
--- a/crypto/perlasm/ppc-xlate.pl
+++ b/crypto/perlasm/ppc-xlate.pl
@@ -309,9 +309,9 @@
     print "\n";
 }
 
+print "#endif  // !OPENSSL_NO_ASM && __powerpc64__\n";
+
 # See https://www.airs.com/blog/archives/518.
 print ".section\t.note.GNU-stack,\"\",\@progbits\n" if ($flavour =~ /linux/);
 
-print "#endif  // !OPENSSL_NO_ASM && __powerpc64__\n";
-
 close STDOUT;
diff --git a/crypto/perlasm/x86_64-xlate.pl b/crypto/perlasm/x86_64-xlate.pl
index d2854cf..4a41a24 100755
--- a/crypto/perlasm/x86_64-xlate.pl
+++ b/crypto/perlasm/x86_64-xlate.pl
@@ -1260,10 +1260,9 @@
 
 print "\n$current_segment\tENDS\n"	if ($current_segment && $masm);
 print "END\n"				if ($masm);
+print "#endif\n"			if ($gas);
 # See https://www.airs.com/blog/archives/518.
 print ".section\t.note.GNU-stack,\"\",\@progbits\n" if ($elf);
-print "#endif\n"			if ($gas);
-
 
 close STDOUT;
 
diff --git a/crypto/perlasm/x86asm.pl b/crypto/perlasm/x86asm.pl
index b331cd4..2d19425 100644
--- a/crypto/perlasm/x86asm.pl
+++ b/crypto/perlasm/x86asm.pl
@@ -297,9 +297,9 @@
 ___
     }
     print @out;
+    print "#endif\n" unless ($win32 || $netware);
     # See https://www.airs.com/blog/archives/518.
     print ".section\t.note.GNU-stack,\"\",\@progbits\n" if ($elf);
-    print "#endif\n" unless ($win32 || $netware);
 }
 
 sub ::asm_init
diff --git a/crypto/poly1305/poly1305_arm_asm.S b/crypto/poly1305/poly1305_arm_asm.S
index 77b3c48..80a4b31 100644
--- a/crypto/poly1305/poly1305_arm_asm.S
+++ b/crypto/poly1305/poly1305_arm_asm.S
@@ -2022,8 +2022,8 @@
 add sp,sp,#0
 bx lr
 
+#endif  /* __arm__ && !OPENSSL_NO_ASM && !__APPLE__ */
+
 #if defined(__ELF__)
 .section	.note.GNU-stack,"",%progbits
 #endif
-
-#endif  /* __arm__ && !OPENSSL_NO_ASM && !__APPLE__ */