From 00bd7ff339d123078f093cc54bfd64889fee7633 Mon Sep 17 00:00:00 2001 From: Tess Strickland Date: Wed, 17 Aug 2022 16:18:35 +0000 Subject: [PATCH] [vm/test] Remove checked-in binaries from MachO test. Instead of using checked-in binaries in snapshot_utils_test.cc, write out the binaries manually and check the written binaries. TEST=vm/cc/CanDetectMachOFiles Issue: https://github.com/dart-lang/.allstar/issues/159 Change-Id: I024ecac2084cfaef6bf8fe2a7cecceb9ae5d8de9 Cq-Include-Trybots: luci.dart.try:vm-kernel-mac-release-arm64-try,vm-kernel-mac-release-x64-try Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/255460 Reviewed-by: Alexander Thomas Reviewed-by: Daco Harkes Commit-Queue: Tess Strickland --- runtime/bin/snapshot_utils_test.cc | 67 ++++++++++++++---- runtime/tests/vm/data/macho_32bit_big_endian | Bin 32 -> 0 bytes .../tests/vm/data/macho_32bit_little_endian | Bin 32 -> 0 bytes runtime/tests/vm/data/macho_64bit_big_endian | Bin 32 -> 0 bytes .../tests/vm/data/macho_64bit_little_endian | Bin 32 -> 0 bytes 5 files changed, 52 insertions(+), 15 deletions(-) delete mode 100644 runtime/tests/vm/data/macho_32bit_big_endian delete mode 100644 runtime/tests/vm/data/macho_32bit_little_endian delete mode 100644 runtime/tests/vm/data/macho_64bit_big_endian delete mode 100644 runtime/tests/vm/data/macho_64bit_little_endian diff --git a/runtime/bin/snapshot_utils_test.cc b/runtime/bin/snapshot_utils_test.cc index 7b726fd8408..93317badfcd 100644 --- a/runtime/bin/snapshot_utils_test.cc +++ b/runtime/bin/snapshot_utils_test.cc @@ -3,6 +3,7 @@ // BSD-style license that can be found in the LICENSE file. #include "bin/snapshot_utils.h" +#include "bin/dartutils.h" #include "bin/file.h" #include "bin/test_utils.h" #include "platform/assert.h" @@ -12,22 +13,58 @@ namespace dart { #if defined(DART_TARGET_OS_MACOS) -TEST_CASE(CanDetectMachOFiles) { - const char* kMachO32BitLittleEndianFilename = - bin::test::GetFileName("runtime/tests/vm/data/macho_32bit_little_endian"); - const char* kMachO64BitLittleEndianFilename = - bin::test::GetFileName("runtime/tests/vm/data/macho_64bit_little_endian"); - const char* kMachO32BitBigEndianFilename = - bin::test::GetFileName("runtime/tests/vm/data/macho_32bit_big_endian"); - const char* kMachO64BitBigEndianFilename = - bin::test::GetFileName("runtime/tests/vm/data/macho_64bit_big_endian"); - EXPECT( - bin::Snapshot::IsMachOFormattedBinary(kMachO32BitLittleEndianFilename)); - EXPECT( - bin::Snapshot::IsMachOFormattedBinary(kMachO64BitLittleEndianFilename)); - EXPECT(bin::Snapshot::IsMachOFormattedBinary(kMachO32BitBigEndianFilename)); - EXPECT(bin::Snapshot::IsMachOFormattedBinary(kMachO64BitBigEndianFilename)); +static const unsigned char kMachO32BitLittleEndianHeader[] = { + 0xce, 0xfa, 0xed, 0xfe, 0x07, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +static const unsigned char kMachO32BitBigEndianHeader[] = { + 0xfe, 0xed, 0xfa, 0xce, 0x01, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +static const unsigned char kMachO64BitLittleEndianHeader[] = { + 0xcf, 0xfa, 0xed, 0xfe, 0x07, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +static const unsigned char kMachO64BitBigEndianHeader[] = { + 0xfe, 0xed, 0xfa, 0xcf, 0x01, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +static const struct { + const char* filename; + const unsigned char* contents; + size_t contents_size; +} kTestcases[] = { + {"macho_32bit_little_endian", kMachO32BitLittleEndianHeader, + ARRAY_SIZE(kMachO32BitLittleEndianHeader)}, + {"macho_32bit_big_endian", kMachO32BitBigEndianHeader, + ARRAY_SIZE(kMachO32BitBigEndianHeader)}, + {"macho_64bit_little_endian", kMachO64BitLittleEndianHeader, + ARRAY_SIZE(kMachO64BitLittleEndianHeader)}, + {"macho_64bit_big_endian", kMachO64BitBigEndianHeader, + ARRAY_SIZE(kMachO64BitBigEndianHeader)}, +}; + +TEST_CASE(CanDetectMachOFiles) { + for (uintptr_t i = 0; i < ARRAY_SIZE(kTestcases); i++) { + const auto& testcase = kTestcases[i]; + auto* const file = + bin::DartUtils::OpenFile(testcase.filename, /*write=*/true); + bin::DartUtils::WriteFile(testcase.contents, testcase.contents_size, file); + bin::DartUtils::CloseFile(file); + + EXPECT(bin::Snapshot::IsMachOFormattedBinary(testcase.filename)); + + EXPECT(bin::File::Delete(nullptr, testcase.filename)); + } const char* kFilename = bin::test::GetFileName("runtime/bin/snapshot_utils_test.cc"); diff --git a/runtime/tests/vm/data/macho_32bit_big_endian b/runtime/tests/vm/data/macho_32bit_big_endian deleted file mode 100644 index c2715895eddb125027354dd8f8984de9edd7d098..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32 ZcmezO_SZQ^1_pKp1_ovzW&&aq0044f1Hk|Q diff --git a/runtime/tests/vm/data/macho_32bit_little_endian b/runtime/tests/vm/data/macho_32bit_little_endian deleted file mode 100644 index 7c7003f3ca2f47a6b6cd7da39444f748873e6953..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32 XcmX^2>+L^w1_nlE1_lNuAVvoOasLCs diff --git a/runtime/tests/vm/data/macho_64bit_big_endian b/runtime/tests/vm/data/macho_64bit_big_endian deleted file mode 100644 index 95b3475be3a000d20c4fa879792cc6ce56bcaced..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32 ZcmezO_Sbnv1_pKp1_ovzW&&aq0044+1Hu3R diff --git a/runtime/tests/vm/data/macho_64bit_little_endian b/runtime/tests/vm/data/macho_64bit_little_endian deleted file mode 100644 index fcd8a04c1714ec59abfdffc51a7d614ee532cfd4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32 XcmX^A>+L^w1_nlE1_lNuAVvoOavuZ2