From 31292e1a3428feffb46e5a853699b1c587bb04e7 Mon Sep 17 00:00:00 2001 From: David Tenty Date: Wed, 27 Aug 2025 18:28:26 -0400 Subject: [PATCH] [libc++][AIX] Fixup problems with ABI list checking (#155643) There are some problems with our ABI list checking exposed by recent compiler/cmake upgrades. - For symcheck, there are typos in how XCOFF magic are defined, we intended the second two digits to be a hex value, but our syntax doesn't say that. Thus this will never match a valid XCOFF file. - AIX triples can have version numbers. Those need to be discarded when looking for an libc++ ABI list, like we do for other targets. (cherry picked from commit b8456e2a9698aa927d7b3f9c38213f3219aa0498) --- libcxx/lib/abi/CMakeLists.txt | 3 +++ libcxx/utils/libcxx/sym_check/util.py | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/libcxx/lib/abi/CMakeLists.txt b/libcxx/lib/abi/CMakeLists.txt index 7c08bd06c50b2..8f277aad2dcd5 100644 --- a/libcxx/lib/abi/CMakeLists.txt +++ b/libcxx/lib/abi/CMakeLists.txt @@ -16,6 +16,9 @@ function(cxx_abi_list_identifier result triple abi_library abi_version unstable elseif("${triple}" MATCHES "freebsd") # Ignore the major and minor versions of freebsd targets. string(REGEX REPLACE "freebsd[0-9]+\\.[0-9]+" "freebsd" triple "${triple}") + elseif("${triple}" MATCHES "aix") + # Ignore the V.R.M.F version string of aix targets. + string(REGEX REPLACE "aix[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+" "aix" triple "${triple}") endif() list(APPEND abi_properties "${triple}") list(APPEND abi_properties "${abi_library}") diff --git a/libcxx/utils/libcxx/sym_check/util.py b/libcxx/utils/libcxx/sym_check/util.py index fc7ba4244ab5a..dbc886f29ddea 100644 --- a/libcxx/utils/libcxx/sym_check/util.py +++ b/libcxx/utils/libcxx/sym_check/util.py @@ -95,7 +95,7 @@ def is_xcoff_or_big_ar(filename): with open(filename, "rb") as f: magic_bytes = f.read(7) return ( - magic_bytes[:4] in [b"\x01DF", b"\x01F7"] # XCOFF32 # XCOFF64 + magic_bytes[:2] in [b"\x01\xDF", b"\x01\xF7"] # XCOFF32 # XCOFF64 or magic_bytes == b"" )