Revert section changes for ASM.

This change reverts the following commits:
  72d9cba7cb78ddc9c8ec3f27a9367c407f7d0915
  5b61b9ebc5ad0e25475f2aa633d3a6592dd65ba1
  3f85e04f40c12282021241b393d94901e5c1027b
  2ab24a2d40fd193a25d7c94072596a1180cbb460

Change-Id: I669b83f2269cf96aa71a649a346147b9407a811e
Reviewed-on: https://boringssl-review.googlesource.com/6056
Reviewed-by: David Benjamin <davidben@chromium.org>
Reviewed-by: Adam Langley <agl@google.com>
diff --git a/crypto/aes/asm/aes-armv4.pl b/crypto/aes/asm/aes-armv4.pl
index 16ff990..882017a 100644
--- a/crypto/aes/asm/aes-armv4.pl
+++ b/crypto/aes/asm/aes-armv4.pl
@@ -82,7 +82,6 @@
 # endif
 #endif
 
-.pushsection .text.asm_AES_encrypt,"ax",%progbits
 .type	AES_Te,%object
 .align	5
 AES_Te:
@@ -188,7 +187,6 @@
 .word	0x10000000, 0x20000000, 0x40000000, 0x80000000
 .word	0x1B000000, 0x36000000, 0, 0, 0, 0, 0, 0
 .size	AES_Te,.-AES_Te
-.popsection
 
 @ void asm_AES_encrypt(const unsigned char *in, unsigned char *out,
 @ 		       const AES_KEY *key) {
@@ -442,7 +440,7 @@
 	ldr	pc,[sp],#4		@ pop and return
 .size	_armv4_AES_encrypt,.-_armv4_AES_encrypt
 
-.global_with_section asm_AES_set_encrypt_key, asm_AES_encrypt
+.global asm_AES_set_encrypt_key
 .hidden asm_AES_set_encrypt_key
 .type   asm_AES_set_encrypt_key,%function
 .align	5
@@ -868,7 +866,6 @@
 #endif
 .size	AES_set_enc2dec_key,.-AES_set_enc2dec_key
 
-.pushsection .text.asm_AES_decrypt,"ax",%progbits
 .type	AES_Td,%object
 .align	5
 AES_Td:
@@ -970,7 +967,6 @@
 .byte	0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26
 .byte	0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d
 .size	AES_Td,.-AES_Td
-.popsection
 
 @ void asm_AES_decrypt(const unsigned char *in, unsigned char *out,
 @ 		       const AES_KEY *key) {
diff --git a/crypto/aes/asm/aesv8-armx.pl b/crypto/aes/asm/aesv8-armx.pl
index 4aa699e..121154a 100644
--- a/crypto/aes/asm/aesv8-armx.pl
+++ b/crypto/aes/asm/aesv8-armx.pl
@@ -71,13 +71,11 @@
 
 
 $code.=<<___;
-.pushsection .text.${prefix}_set_encrypt_key,"ax",%progbits
 .align	5
 .Lrcon:
 .long	0x01,0x01,0x01,0x01
 .long	0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d	// rotate-n-splat
 .long	0x1b,0x1b,0x1b,0x1b
-.popsection
 
 .globl	${prefix}_set_encrypt_key
 .type	${prefix}_set_encrypt_key,%function
diff --git a/crypto/aes/asm/bsaes-armv7.pl b/crypto/aes/asm/bsaes-armv7.pl
index 5fa3005..2617fef 100644
--- a/crypto/aes/asm/bsaes-armv7.pl
+++ b/crypto/aes/asm/bsaes-armv7.pl
@@ -2049,7 +2049,7 @@
 
 .size	bsaes_xts_encrypt,.-bsaes_xts_encrypt
 
-.global_with_section	bsaes_xts_decrypt, bsaes_xts_encrypt
+.globl	bsaes_xts_decrypt
 .hidden	bsaes_xts_decrypt
 .type	bsaes_xts_decrypt,%function
 .align	4
diff --git a/crypto/bn/asm/armv4-mont.pl b/crypto/bn/asm/armv4-mont.pl
index d9487c7..4206fd8 100644
--- a/crypto/bn/asm/armv4-mont.pl
+++ b/crypto/bn/asm/armv4-mont.pl
@@ -85,11 +85,9 @@
 .code	32
 
 #if __ARM_MAX_ARCH__>=7
-.pushsection .text.bn_mul_mont,"ax",%progbits
 .align	5
 .LOPENSSL_armcap:
 .word	OPENSSL_armcap_P-.Lbn_mul_mont
-.popsection
 #endif
 
 .global	bn_mul_mont
diff --git a/crypto/chacha/chacha_vec_arm.S b/crypto/chacha/chacha_vec_arm.S
index e1ec46e..0f82627 100644
--- a/crypto/chacha/chacha_vec_arm.S
+++ b/crypto/chacha/chacha_vec_arm.S
@@ -20,7 +20,7 @@
 # This file was generated by chacha_vec_arm_generate.go using the following
 # compiler command:
 #
-#     /opt/gcc-linaro-4.9-2014.11-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc -O3 -mcpu=cortex-a8 -mfpu=neon -fpic -ffunction-sections -DASM_GEN -I ../../include -S chacha_vec.c -o -
+#     /opt/gcc-linaro-4.9-2014.11-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc -O3 -mcpu=cortex-a8 -mfpu=neon -fpic -DASM_GEN -I ../../include -S chacha_vec.c -o -
 
 #if !defined(OPENSSL_NO_ASM)
 #if defined(__arm__) || defined(__aarch64__)
@@ -52,7 +52,7 @@
 	.eabi_attribute 18, 4
 	.thumb
 	.file	"chacha_vec.c"
-	.section	.text.CRYPTO_chacha_20_neon,"ax",%progbits
+	.text
 	.align	2
 	.global	CRYPTO_chacha_20_neon
 	.hidden	CRYPTO_chacha_20_neon
diff --git a/crypto/chacha/chacha_vec_arm_generate.go b/crypto/chacha/chacha_vec_arm_generate.go
index 1e185e5..6d167b9 100644
--- a/crypto/chacha/chacha_vec_arm_generate.go
+++ b/crypto/chacha/chacha_vec_arm_generate.go
@@ -36,7 +36,6 @@
 		"-mcpu=cortex-a8",
 		"-mfpu=neon",
 		"-fpic",
-		"-ffunction-sections",
 		"-DASM_GEN",
 		"-I", "../../include",
 		"-S", "chacha_vec.c",
diff --git a/crypto/perlasm/arm-xlate.pl b/crypto/perlasm/arm-xlate.pl
index 32eeb25..706fa70 100755
--- a/crypto/perlasm/arm-xlate.pl
+++ b/crypto/perlasm/arm-xlate.pl
@@ -18,14 +18,6 @@
     if ($flavour =~ /linux/)	{ ".arch\t".join(',',@_); }
     else			{ ""; }
 };
-my $pushsection = sub {
-    if ($flavour !~ /ios/)	{ ".pushsection\t".join(',',@_); }
-    else			{ ""; }
-};
-my $popsection = sub {
-    if ($flavour !~ /ios/)	{ ".popsection"; }
-    else			{ ""; }
-};
 my $fpu = sub {
     if ($flavour =~ /linux/)	{ ".fpu\t".join(',',@_); }
     else			{ ""; }
@@ -52,8 +44,7 @@
     $$global = $name;
     $ret;
 };
-my $in_section = 0;
-my $raw_globl = sub {
+my $globl = sub {
     my $name = shift;
     my $global = \$GLOBALS{$name};
     my $ret;
@@ -68,39 +59,7 @@
     $$global = $name;
     $ret;
 };
-my $globl = sub {
-    my $name = shift;
-
-    if ($flavour !~ /ios/) {
-	if ($in_section == 1) {
-	  printf ".popsection\n";
-	}
-	$in_section = 1;
-
-	printf ".pushsection .text.$name,\"ax\",%%progbits\n";
-    }
-    return $raw_globl->($name);
-
-};
 my $global = $globl;
-my $global_with_section = sub {
-    my $arg = shift;
-
-    if ($arg =~ m/^([^,]*), *(.*)/) {
-	if ($flavour !~ /ios/) {
-	    if ($in_section == 1) {
-	      printf ".popsection\n";
-	    }
-	    $in_section = 1;
-
-	    printf ".pushsection .text.$2,\"ax\",%%progbits\n";
-	}
-	return $raw_globl->($1);
-    } else {
-	printf STDERR "Expected two arguments to global_with_section\n";
-	exit(1);
-    }
-};
 my $extern = sub {
     &$globl(@_);
     return;	# return nothing
diff --git a/crypto/poly1305/poly1305_arm_asm.S b/crypto/poly1305/poly1305_arm_asm.S
index bbd9791..e16f83b 100644
--- a/crypto/poly1305/poly1305_arm_asm.S
+++ b/crypto/poly1305/poly1305_arm_asm.S
@@ -153,7 +153,6 @@
 
 # qhasm: qpushenter crypto_onetimeauth_poly1305_neon2_blocks
 .align 4
-.pushsection .text.openssl_poly1305_neon2_blocks,"ax",%progbits
 .global openssl_poly1305_neon2_blocks
 .hidden openssl_poly1305_neon2_blocks
 .type openssl_poly1305_neon2_blocks STT_FUNC
@@ -1520,7 +1519,6 @@
 mov sp,r12
 vpop {q4,q5,q6,q7}
 bx lr
-.popsection
 
 # qhasm: int32 input_0
 
@@ -1614,7 +1612,6 @@
 
 # qhasm: enter crypto_onetimeauth_poly1305_neon2_addmulmod
 .align 2
-.pushsection .text.openssl_poly1305_neon2_addmulmod,"ax",%progbits
 .global openssl_poly1305_neon2_addmulmod
 .hidden openssl_poly1305_neon2_addmulmod
 .type openssl_poly1305_neon2_addmulmod STT_FUNC
@@ -2014,6 +2011,5 @@
 # qhasm: return
 add sp,sp,#0
 bx lr
-.popsection
 
 #endif  /* __arm__ && !OPENSSL_NO_ASM */
diff --git a/crypto/sha/asm/sha256-armv4.pl b/crypto/sha/asm/sha256-armv4.pl
index 490c74f..7e07147 100644
--- a/crypto/sha/asm/sha256-armv4.pl
+++ b/crypto/sha/asm/sha256-armv4.pl
@@ -187,7 +187,6 @@
 # endif
 #endif
 
-.pushsection .text.sha256_block_data_order,"ax",%progbits
 .type	K256,%object
 .align	5
 K256:
@@ -213,11 +212,10 @@
 .LOPENSSL_armcap:
 .word	OPENSSL_armcap_P-.Lsha256_block_data_order
 #endif
-.popsection
+.align	5
 
 .global	sha256_block_data_order
 .type	sha256_block_data_order,%function
-.align	5
 sha256_block_data_order:
 .Lsha256_block_data_order:
 #if __ARM_ARCH__<7
@@ -473,7 +471,7 @@
 .arch	armv7-a
 .fpu	neon
 
-.global_with_section	sha256_block_data_order_neon, sha256_block_data_order
+.global	sha256_block_data_order_neon
 .type	sha256_block_data_order_neon,%function
 .align	4
 sha256_block_data_order_neon:
diff --git a/crypto/sha/asm/sha512-armv4.pl b/crypto/sha/asm/sha512-armv4.pl
index 4c1cbae..cd3662a 100644
--- a/crypto/sha/asm/sha512-armv4.pl
+++ b/crypto/sha/asm/sha512-armv4.pl
@@ -224,7 +224,6 @@
 # endif
 #endif
 
-.pushsection .text.sha512_block_data_order,"ax",%progbits
 .type	K512,%object
 .align	5
 K512:
@@ -276,7 +275,6 @@
 #else
 .skip	32
 #endif
-.popsection
 
 .global	sha512_block_data_order
 .type	sha512_block_data_order,%function
@@ -604,7 +602,7 @@
 .arch	armv7-a
 .fpu	neon
 
-.global_with_section	sha512_block_data_order_neon, sha512_block_data_order
+.global	sha512_block_data_order_neon
 .type	sha512_block_data_order_neon,%function
 .align	4
 sha512_block_data_order_neon: