From 24eb9777610219e63ec887558181e00195e988c7 Mon Sep 17 00:00:00 2001 From: Daco Harkes Date: Thu, 1 Feb 2024 15:30:08 +0000 Subject: [PATCH] [vm] Fix Mac Arm64 AOT The magic number has the opposite endianness on the arm64 macs. TEST=locally verified + SDK build Closes: https://github.com/dart-lang/sdk/issues/54796 Change-Id: I4a66f44e0a32fbc3530bda6ffca177ba14d9dca7 Cq-Include-Trybots: luci.dart.try:vm-aot-mac-release-arm64-try,vm-mac-debug-arm64-try,dart-sdk-mac-arm64-try,pkg-mac-release-arm64-try Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/349661 Reviewed-by: Martin Kustermann --- runtime/bin/dartutils.cc | 6 ++++++ runtime/bin/dartutils.h | 1 + 2 files changed, 7 insertions(+) diff --git a/runtime/bin/dartutils.cc b/runtime/bin/dartutils.cc index 9d9b40ae37d..733ecae8613 100644 --- a/runtime/bin/dartutils.cc +++ b/runtime/bin/dartutils.cc @@ -40,6 +40,7 @@ MagicNumberData appjit_magic_number = {8, {0xdc, 0xdc, 0xf6, 0xf6, 0, 0, 0, 0}}; MagicNumberData aotelf_magic_number = {4, {0x7F, 0x45, 0x4C, 0x46, 0x0}}; MagicNumberData aotmacho32_magic_number = {4, {0xFE, 0xED, 0xFA, 0xCE}}; MagicNumberData aotmacho64_magic_number = {4, {0xFE, 0xED, 0xFA, 0xCF}}; +MagicNumberData aotmacho64_arm64_magic_number = {4, {0xCF, 0xFA, 0xED, 0xFE}}; MagicNumberData aotcoff_arm32_magic_number = {2, {0x01, 0xC0}}; MagicNumberData aotcoff_arm64_magic_number = {2, {0xAA, 0x64}}; MagicNumberData aotcoff_riscv32_magic_number = {2, {0x50, 0x32}}; @@ -409,6 +410,7 @@ DartUtils::MagicNumber DartUtils::SniffForMagicNumber(const char* filename) { ASSERT(aotelf_magic_number.length <= appjit_magic_number.length); ASSERT(aotmacho32_magic_number.length <= appjit_magic_number.length); ASSERT(aotmacho64_magic_number.length <= appjit_magic_number.length); + ASSERT(aotmacho64_arm64_magic_number.length <= appjit_magic_number.length); ASSERT(aotcoff_arm32_magic_number.length <= appjit_magic_number.length); ASSERT(aotcoff_arm64_magic_number.length <= appjit_magic_number.length); ASSERT(aotcoff_riscv32_magic_number.length <= appjit_magic_number.length); @@ -463,6 +465,10 @@ DartUtils::MagicNumber DartUtils::SniffForMagicNumber(const uint8_t* buffer, return kAotMachO64MagicNumber; } + if (CheckMagicNumber(buffer, buffer_length, aotmacho64_arm64_magic_number)) { + return kAotMachO64Arm64MagicNumber; + } + if (CheckMagicNumber(buffer, buffer_length, aotcoff_arm32_magic_number)) { return kAotCoffARM32MagicNumber; } diff --git a/runtime/bin/dartutils.h b/runtime/bin/dartutils.h index 5a144955539..101707808be 100644 --- a/runtime/bin/dartutils.h +++ b/runtime/bin/dartutils.h @@ -248,6 +248,7 @@ class DartUtils { kAotELFMagicNumber, kAotMachO32MagicNumber, kAotMachO64MagicNumber, + kAotMachO64Arm64MagicNumber, kAotCoffARM32MagicNumber, kAotCoffARM64MagicNumber, kAotCoffRISCV32MagicNumber,