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' },