summaryrefslogtreecommitdiffstats
path: root/crypto/perlasm
diff options
context:
space:
mode:
authorEverton Constantino <everton.constantino@linaro.org>2022-10-27 15:07:48 -0300
committerHugo Landau <hlandau@openssl.org>2022-11-24 06:36:47 +0000
commitb863e1e4c69068e4166bdfbbf9f04bb07991dd40 (patch)
tree72b375d09bfa9816defe28c8468e9599c40f846a /crypto/perlasm
parentf2a6f83862be3e20260b708288a8f7d0928e9018 (diff)
Add two new build targets to enable the possibility of using clang-cl as
an assembler for Windows on Arm builds and also clang-cl as the compiler as well. Make appropriate changes to armcap source and peralsm scripts. Reviewed-by: Paul Dale <pauli@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.org> Reviewed-by: Hugo Landau <hlandau@openssl.org> (Merged from https://github.com/openssl/openssl/pull/19523)
Diffstat (limited to 'crypto/perlasm')
-rwxr-xr-xcrypto/perlasm/arm-xlate.pl11
1 files changed, 11 insertions, 0 deletions
diff --git a/crypto/perlasm/arm-xlate.pl b/crypto/perlasm/arm-xlate.pl
index a90885905c..df10ddc7fa 100755
--- a/crypto/perlasm/arm-xlate.pl
+++ b/crypto/perlasm/arm-xlate.pl
@@ -22,6 +22,7 @@ my $dotinlocallabels=($flavour=~/linux/)?1:0;
################################################################
my $arch = sub {
if ($flavour =~ /linux/) { ".arch\t".join(',',@_); }
+ elsif ($flavour =~ /win64/) { ".arch\t".join(',',@_); }
else { ""; }
};
my $fpu = sub {
@@ -37,6 +38,7 @@ my $rodata = sub {
};
my $hidden = sub {
if ($flavour =~ /ios/) { ".private_extern\t".join(',',@_); }
+ elsif ($flavour =~ /win64/) { ""; }
else { ".hidden\t".join(',',@_); }
};
my $comm = sub {
@@ -85,6 +87,15 @@ my $type = sub {
"#endif";
}
}
+ elsif ($flavour =~ /win64/) { if (join(',',@_) =~ /(\w+),%function/) {
+ # See https://sourceware.org/binutils/docs/as/Pseudo-Ops.html
+ # Per https://docs.microsoft.com/en-us/windows/win32/debug/pe-format#coff-symbol-table,
+ # the type for functions is 0x20, or 32.
+ ".def $1\n".
+ " .type 32\n".
+ ".endef";
+ }
+ }
else { ""; }
};
my $size = sub {