Commit 10b5f9f897 for openssl.org

commit 10b5f9f8978cb4721b195bda93d0acbcb525e053
Author: Bob Beck <beck@openssl.org>
Date:   Thu Jun 18 14:58:39 2026 -0600

    Drop Windows-on-Itanium (VC-WIN64I) support.

    Similar to Windows CE, Windows Itanium has not had a
    toolchain to work on it since VS 2010, and Windows
    server 2008 was the last thing that ran on it.

    This does *not* change the other (linux, HPUX) targets
    which have modern toolchain support, and likely even still
    run these days.

    While never letting go seems noble when you won't share
    the door you're floating on, the time has come.

    Reviewed-by: Milan Broz <mbroz@openssl.org>
    Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
    Reviewed-by: Neil Horman <nhorman@openssl.org>
    MergeDate: Fri Jul 10 17:39:39 2026
    (Merged from https://github.com/openssl/openssl/pull/31913)

diff --git a/CHANGES.md b/CHANGES.md
index 70ed350c79..6d4af0b857 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -102,6 +102,12 @@ OpenSSL Releases

    *Jakub Zelenka*

+ * Windows-on-Itanium (VC-WIN64I) support was dropped - the Itanium
+   architecture has been discontinued and the platform is no longer
+   supported or tested.
+
+   *Bob Beck*
+
  * Windows CE support was dropped - Windows CE has been unsupported since
    2018 and does not have a modern C99 toolchain.

diff --git a/Configurations/10-main.conf b/Configurations/10-main.conf
index 390aac5011..9c7261c3f2 100644
--- a/Configurations/10-main.conf
+++ b/Configurations/10-main.conf
@@ -1434,7 +1434,7 @@ my %targets = (

 #### Visual C targets
 #
-# Win64 targets, WIN64I denotes IA-64/Itanium and WIN64A - AMD64
+# Win64 target, WIN64A denotes AMD64
 #
 # Note about /wd4090, disable warning C4090. This warning returns false
 # positives in some situations. Disabling it altogether masks both
@@ -1542,17 +1542,6 @@ my %targets = (
         }),
         bn_ops           => add("SIXTY_FOUR_BIT"),
     },
-    "VC-WIN64I" => {
-        inherit_from     => [ "VC-WIN64-common" ],
-        AS               => "ias",
-        ASFLAGS          => "-d debug",
-        asoutflag        => "-o ",
-        sys_id           => "WIN64I",
-        uplink_arch      => 'ia64',
-        asm_arch         => 'ia64',
-        perlasm_scheme   => "ias",
-        multilib         => "-ia64",
-    },
     "VC-WIN64A" => {
         inherit_from     => [ "VC-WIN64-common" ],
         AS               => sub { vc_win64a_info()->{AS} },
diff --git a/INSTALL.md b/INSTALL.md
index 20535f2c27..51f74e70dd 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -173,8 +173,7 @@ of the Configure targets in the first command.

 Most likely you will be using the `VC-WIN64A`/`VC-WIN64A-HYBRIDCRT` target for
 64bit Windows binaries (AMD64) or `VC-WIN32`/`VC-WIN32-HYBRIDCRT` for 32bit
-Windows binaries (X86).  `VC-WIN64I` (Intel IA64, Itanium) is also available
-but rather uncommon nowadays.
+Windows binaries (X86).

 Installing OpenSSL
 ------------------
@@ -1953,9 +1952,8 @@ on Cygwin, shared libraries are named `cygcrypto-1.1.dll` and `cygssl-1.1.dll`
 with import libraries `libcrypto.dll.a` and `libssl.dll.a`.

 On Windows build with MSVC or using MingW, shared libraries are named
-`libcrypto-1_1.dll` and `libssl-1_1.dll` for 32-bit Windows,
-`libcrypto-1_1-x64.dll` and `libssl-1_1-x64.dll` for 64-bit x86_64 Windows,
-and `libcrypto-1_1-ia64.dll` and `libssl-1_1-ia64.dll` for IA64 Windows.
+`libcrypto-1_1.dll` and `libssl-1_1.dll` for 32-bit Windows, and
+`libcrypto-1_1-x64.dll` and `libssl-1_1-x64.dll` for 64-bit x86_64 Windows.
 With MSVC, the import libraries are named `libcrypto.lib` and `libssl.lib`,
 while with MingW, they are named `libcrypto.dll.a` and `libssl.dll.a`.

diff --git a/crypto/build.info b/crypto/build.info
index 8e4a885dde..4e9068407c 100644
--- a/crypto/build.info
+++ b/crypto/build.info
@@ -16,7 +16,6 @@ IF[{- !$disabled{uplink} -}]
   $UPLINKSRC_common=../ms/uplink.c
   $UPLINKSRC_x86=$UPLINKSRC_common uplink-x86.S
   $UPLINKSRC_x86_64=$UPLINKSRC_common uplink-x86_64.s
-  $UPLINKSRC_ia64=$UPLINKSRC_common uplink-ia64.s

   IF[$UPLINKSRC_{- $target{uplink_arch} -}]
     $UPLINKSRC=$UPLINKSRC_{- $target{uplink_arch} -}
@@ -118,7 +117,6 @@ GENERATE[buildinf.h]=../util/mkbuildinf.pl "$(CC) $(LIB_CFLAGS) $(CPPFLAGS_Q)" "

 GENERATE[uplink-x86.S]=../ms/uplink-x86.pl
 GENERATE[uplink-x86_64.s]=../ms/uplink-x86_64.pl
-GENERATE[uplink-ia64.s]=../ms/uplink-ia64.pl

 GENERATE[x86cpuid.S]=x86cpuid.pl
 DEPEND[x86cpuid.s]=perlasm/x86asm.pl
diff --git a/ms/uplink-ia64.pl b/ms/uplink-ia64.pl
deleted file mode 100755
index 757e77d29f..0000000000
--- a/ms/uplink-ia64.pl
+++ /dev/null
@@ -1,60 +0,0 @@
-#! /usr/bin/env perl
-# Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved.
-#
-# Licensed under the Apache License 2.0 (the "License").  You may not use
-# this file except in compliance with the License.  You can obtain a copy
-# in the file LICENSE in the source distribution or at
-# https://www.openssl.org/source/license.html
-
-$output = pop and open STDOUT,">$output";
-
-$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
-push(@INC,"${dir}.");
-
-require "uplink-common.pl";
-
-local $V=8;	# max number of args uplink functions may accept...
-my $loc0 = "r".(32+$V);
-print <<___;
-.text
-.global	OPENSSL_Uplink#
-.type	OPENSSL_Uplink#,\@function
-
-___
-for ($i=1;$i<=$N;$i++) {
-print <<___;
-.proc	lazy$i#
-lazy$i:
-	.prologue
-{ .mii;	.save	ar.pfs,$loc0
-	alloc	loc0=ar.pfs,$V,3,2,0
-	.save	b0,loc1
-	mov	loc1=b0
-	addl	loc2=\@ltoff(OPENSSL_UplinkTable#),gp	};;
-	.body
-{ .mmi;	ld8	out0=[loc2]
-	mov	out1=$i					};;
-{ .mib;	add	loc2=8*$i,out0
-	br.call.sptk.many	b0=OPENSSL_Uplink#	};;
-{ .mmi;	ld8	r31=[loc2];;
-	ld8	r30=[r31],8				};;
-{ .mii;	ld8	gp=[r31]
-	mov	b6=r30
-	mov	b0=loc1					};;
-{ .mib;	mov	ar.pfs=loc0
-	br.many	b6					};;
-.endp	lazy$i#
-
-___
-}
-print <<___;
-.data
-.global OPENSSL_UplinkTable#
-OPENSSL_UplinkTable:    data8   $N      // amount of following entries
-___
-for ($i=1;$i<=$N;$i++) {   print "      data8   \@fptr(lazy$i#)\n";   }
-print <<___;
-.size   OPENSSL_UplinkTable,.-OPENSSL_UplinkTable#
-___
-
-close STDOUT;
diff --git a/util/perl/OpenSSL/config.pm b/util/perl/OpenSSL/config.pm
index f781068bf5..e9dc9d3243 100755
--- a/util/perl/OpenSSL/config.pm
+++ b/util/perl/OpenSSL/config.pm
@@ -411,7 +411,7 @@ sub determine_compiler_settings {
                 $CCVER = 0;

                 my $v = `cl 2>&1`;
-                if ( $v =~ /Microsoft .* Version ([0-9\.]+) for (x86|x64|ARM|ia64)/ ) {
+                if ( $v =~ /Microsoft .* Version ([0-9\.]+) for (x86|x64|ARM)/ ) {
                     $CCVER = $1;
                     $CL_ARCH = $2;
                 }
@@ -898,7 +898,7 @@ EOF
       ],

       # Windows values found by looking at Perl 5's win32/win32.c
-      [ '(amd64|ia64|x86|ARM)-.*?-Windows NT',
+      [ '(amd64|x86|ARM)-.*?-Windows NT',
         sub {
             # If we determined the arch by asking cl, take that value,
             # otherwise the SYSTEM we got from from POSIX::uname().
@@ -907,7 +907,6 @@ EOF

             if ($arch) {
                 $config = { 'amd64' => { target => 'VC-WIN64A'    },
-                            'ia64'  => { target => 'VC-WIN64I'    },
                             'x86'   => { target => 'VC-WIN32'     },
                             'x64'   => { target => 'VC-WIN64A'    },
                             'ARM'   => { target => 'VC-WIN64-ARM' },