Add two new build targets to enable the possibility of using clang-cl as
[openssl.git] / crypto / perlasm / arm-xlate.pl
index a90885905c0fdbf7c4f1b830d644181883720c99..df10ddc7fabb87cdbe157ee4ab5c3f39c5373d54 100755 (executable)
@@ -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 {