Fix cross-compile of Android on Windows. When running the ARM perlasm files on Windows, close STDOUT fails. There appears to be some weird quirk on Windows when one replaces STDOUT with a pipe. The x86_64.pl files all avoid this by opening OUT and then setting *STDOUT=*OUT. Align all the ARM files with that pattern. See https://ci.appveyor.com/project/conscrypt/conscrypt Change-Id: Ibee9427a05d806f7f23a6d9817394cfabf2f534a Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/37324 Reviewed-by: Kenny Root <kroot@google.com> Reviewed-by: Adam Langley <agl@google.com> Commit-Queue: Adam Langley <agl@google.com>
diff --git a/crypto/chacha/asm/chacha-armv4.pl b/crypto/chacha/asm/chacha-armv4.pl index 06be3a6..ad26ed9 100755 --- a/crypto/chacha/asm/chacha-armv4.pl +++ b/crypto/chacha/asm/chacha-armv4.pl
@@ -44,9 +44,11 @@ ( $xlate="${dir}../../perlasm/arm-xlate.pl" and -f $xlate) or die "can't locate arm-xlate.pl"; - open STDOUT,"| \"$^X\" $xlate $flavour $output"; + open OUT,"| \"$^X\" $xlate $flavour $output"; + *STDOUT=*OUT; } else { - open STDOUT,">$output"; + open OUT,">$output"; + *STDOUT=*OUT; } sub AUTOLOAD() # thunk [simplified] x86-style perlasm
diff --git a/crypto/fipsmodule/aes/asm/aes-armv4.pl b/crypto/fipsmodule/aes/asm/aes-armv4.pl index 9eebb22..fbb1995 100644 --- a/crypto/fipsmodule/aes/asm/aes-armv4.pl +++ b/crypto/fipsmodule/aes/asm/aes-armv4.pl
@@ -49,9 +49,11 @@ ( $xlate="${dir}../../../perlasm/arm-xlate.pl" and -f $xlate) or die "can't locate arm-xlate.pl"; - open STDOUT,"| \"$^X\" $xlate $flavour $output"; + open OUT,"| \"$^X\" $xlate $flavour $output"; + *STDOUT=*OUT; } else { - open STDOUT,">$output"; + open OUT,">$output"; + *STDOUT=*OUT; } $s0="r0";
diff --git a/crypto/fipsmodule/aes/asm/bsaes-armv7.pl b/crypto/fipsmodule/aes/asm/bsaes-armv7.pl index 932b3b6..34aecbe 100644 --- a/crypto/fipsmodule/aes/asm/bsaes-armv7.pl +++ b/crypto/fipsmodule/aes/asm/bsaes-armv7.pl
@@ -60,9 +60,11 @@ ( $xlate="${dir}../../../perlasm/arm-xlate.pl" and -f $xlate) or die "can't locate arm-xlate.pl"; - open STDOUT,"| \"$^X\" $xlate $flavour $output"; + open OUT,"| \"$^X\" $xlate $flavour $output"; + *STDOUT=*OUT; } else { - open STDOUT,">$output"; + open OUT,">$output"; + *STDOUT=*OUT; } my ($inp,$out,$len,$key)=("r0","r1","r2","r3");
diff --git a/crypto/fipsmodule/bn/asm/armv4-mont.pl b/crypto/fipsmodule/bn/asm/armv4-mont.pl index f3aa4be..a8e89f6 100644 --- a/crypto/fipsmodule/bn/asm/armv4-mont.pl +++ b/crypto/fipsmodule/bn/asm/armv4-mont.pl
@@ -64,9 +64,11 @@ ( $xlate="${dir}../../../perlasm/arm-xlate.pl" and -f $xlate) or die "can't locate arm-xlate.pl"; - open STDOUT,"| \"$^X\" $xlate $flavour $output"; + open OUT,"| \"$^X\" $xlate $flavour $output"; + *STDOUT=*OUT; } else { - open STDOUT,">$output"; + open OUT,">$output"; + *STDOUT=*OUT; } $num="r0"; # starts as num argument, but holds &tp[num-1]
diff --git a/crypto/fipsmodule/modes/asm/ghash-armv4.pl b/crypto/fipsmodule/modes/asm/ghash-armv4.pl index 54c80f7..cdb6fb4 100644 --- a/crypto/fipsmodule/modes/asm/ghash-armv4.pl +++ b/crypto/fipsmodule/modes/asm/ghash-armv4.pl
@@ -88,9 +88,11 @@ ( $xlate="${dir}../../../perlasm/arm-xlate.pl" and -f $xlate) or die "can't locate arm-xlate.pl"; - open STDOUT,"| \"$^X\" $xlate $flavour $output"; + open OUT,"| \"$^X\" $xlate $flavour $output"; + *STDOUT=*OUT; } else { - open STDOUT,">$output"; + open OUT,">$output"; + *STDOUT=*OUT; } $Xi="r0"; # argument block
diff --git a/crypto/fipsmodule/modes/asm/ghash-neon-armv8.pl b/crypto/fipsmodule/modes/asm/ghash-neon-armv8.pl index f57017d..e72d0dc 100644 --- a/crypto/fipsmodule/modes/asm/ghash-neon-armv8.pl +++ b/crypto/fipsmodule/modes/asm/ghash-neon-armv8.pl
@@ -62,9 +62,11 @@ ( $xlate="${dir}../../../perlasm/arm-xlate.pl" and -f $xlate) or die "can't locate arm-xlate.pl"; - open STDOUT,"| \"$^X\" $xlate $flavour $output"; + open OUT,"| \"$^X\" $xlate $flavour $output"; + *STDOUT=*OUT; } else { - open STDOUT,">$output"; + open OUT,">$output"; + *STDOUT=*OUT; } my ($Xi, $Htbl, $inp, $len) = map("x$_", (0..3)); # argument block
diff --git a/crypto/fipsmodule/sha/asm/sha1-armv4-large.pl b/crypto/fipsmodule/sha/asm/sha1-armv4-large.pl index ca82514..2cda386 100644 --- a/crypto/fipsmodule/sha/asm/sha1-armv4-large.pl +++ b/crypto/fipsmodule/sha/asm/sha1-armv4-large.pl
@@ -85,9 +85,11 @@ ( $xlate="${dir}../../../perlasm/arm-xlate.pl" and -f $xlate) or die "can't locate arm-xlate.pl"; - open STDOUT,"| \"$^X\" $xlate $flavour $output"; + open OUT,"| \"$^X\" $xlate $flavour $output"; + *STDOUT=*OUT; } else { - open STDOUT,">$output"; + open OUT,">$output"; + *STDOUT=*OUT; } $ctx="r0";
diff --git a/crypto/fipsmodule/sha/asm/sha256-armv4.pl b/crypto/fipsmodule/sha/asm/sha256-armv4.pl index 15d78de..0c8adbb 100644 --- a/crypto/fipsmodule/sha/asm/sha256-armv4.pl +++ b/crypto/fipsmodule/sha/asm/sha256-armv4.pl
@@ -54,9 +54,11 @@ ( $xlate="${dir}../../../perlasm/arm-xlate.pl" and -f $xlate) or die "can't locate arm-xlate.pl"; - open STDOUT,"| \"$^X\" $xlate $flavour $output"; + open OUT,"| \"$^X\" $xlate $flavour $output"; + *STDOUT=*OUT; } else { - open STDOUT,">$output"; + open OUT,">$output"; + *STDOUT=*OUT; } $ctx="r0"; $t0="r0";
diff --git a/crypto/fipsmodule/sha/asm/sha512-armv4.pl b/crypto/fipsmodule/sha/asm/sha512-armv4.pl index c8c715e..d559e81 100644 --- a/crypto/fipsmodule/sha/asm/sha512-armv4.pl +++ b/crypto/fipsmodule/sha/asm/sha512-armv4.pl
@@ -67,9 +67,11 @@ ( $xlate="${dir}../../../perlasm/arm-xlate.pl" and -f $xlate) or die "can't locate arm-xlate.pl"; - open STDOUT,"| \"$^X\" $xlate $flavour $output"; + open OUT,"| \"$^X\" $xlate $flavour $output"; + *STDOUT=*OUT; } else { - open STDOUT,">$output"; + open OUT,">$output"; + *STDOUT=*OUT; } $ctx="r0"; # parameter block
diff --git a/crypto/fipsmodule/sha/asm/sha512-armv8.pl b/crypto/fipsmodule/sha/asm/sha512-armv8.pl index 205b06d..1afaf58 100644 --- a/crypto/fipsmodule/sha/asm/sha512-armv8.pl +++ b/crypto/fipsmodule/sha/asm/sha512-armv8.pl
@@ -50,7 +50,8 @@ open OUT,"| \"$^X\" $xlate $flavour $output"; *STDOUT=*OUT; } else { - open STDOUT,">$output"; + open OUT,">$output"; + *STDOUT=*OUT; } if ($output =~ /512/) {