File: deps_log_test_support_big_endian_architectures.patch

package info (click to toggle)
ninja-build 1.13.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,816 kB
  • sloc: cpp: 21,347; python: 2,459; ansic: 790; sh: 118; makefile: 20
file content (88 lines) | stat: -rw-r--r-- 3,905 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
From 9421d5c9f6a3190f68675796d88677fc1ebaae50 Mon Sep 17 00:00:00 2001
From: Ben Boeckel <ben.boeckel@kitware.com>
Date: Tue, 15 Jul 2025 00:09:28 -0400
Subject: [PATCH] deps_log_test: support big endian architectures

---
 src/deps_log_test.cc | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/src/deps_log_test.cc b/src/deps_log_test.cc
index 6476843f7f..62192b099e 100644
--- a/src/deps_log_test.cc
+++ b/src/deps_log_test.cc
@@ -566,15 +566,30 @@ TEST_F(DepsLogTest, MalformedDepsLog) {
 
   const size_t version_offset = 12;
   ASSERT_EQ("# ninjadeps\n", original_contents.substr(0, version_offset));
+#if defined(_WIN32) || (defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
   ASSERT_EQ('\x04', original_contents[version_offset + 0]);
   ASSERT_EQ('\x00', original_contents[version_offset + 1]);
   ASSERT_EQ('\x00', original_contents[version_offset + 2]);
   ASSERT_EQ('\x00', original_contents[version_offset + 3]);
+#elif defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
+  ASSERT_EQ('\x00', original_contents[version_offset + 0]);
+  ASSERT_EQ('\x00', original_contents[version_offset + 1]);
+  ASSERT_EQ('\x00', original_contents[version_offset + 2]);
+  ASSERT_EQ('\x04', original_contents[version_offset + 3]);
+#else
+#  error "Unknown endianness."
+#endif
 
   // clang-format off
   static const uint8_t kFirstRecord[] = {
     // size field == 0x0000000c
+#if defined(_WIN32) || (defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
     0x0c, 0x00, 0x00, 0x00,
+#elif defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
+    0x00, 0x00, 0x00, 0x0c,
+#else
+#  error "Unknown endianness."
+#endif
     // name field = 'out.o' + 3 bytes of padding.
     'o', 'u', 't', '.', 'o', 0x00, 0x00, 0x00,
     // checksum = ~0
@@ -593,11 +608,23 @@ TEST_F(DepsLogTest, MalformedDepsLog) {
   // clang-format off
   static const uint8_t kSecondRecord[] = {
     // size field == 0x0000000c
+#if defined(_WIN32) || (defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
     0x0c, 0x00, 0x00, 0x00,
+#elif defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
+    0x00, 0x00, 0x00, 0x0c,
+#else
+#  error "Unknown endianness."
+#endif
     // name field = 'foo.hh' + 2 bytes of padding.
     'f', 'o', 'o', '.', 'h', 'h', 0x00, 0x00,
     // checksum = ~1
+#if defined(_WIN32) || (defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
     0xfe, 0xff, 0xff, 0xff,
+#elif defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
+    0xff, 0xff, 0xff, 0xfe,
+#else
+#  error "Unknown endianness."
+#endif
   };
   // clang-format on
   const size_t kSecondRecordLen = sizeof(kSecondRecord);
@@ -650,10 +677,19 @@ TEST_F(DepsLogTest, MalformedDepsLog) {
 
   // Corrupt first record |size| value.
   bad_contents = original_contents;
+#if defined(_WIN32) || (defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
   bad_contents[first_offset + 0] = '\x55';
   bad_contents[first_offset + 1] = '\xaa';
   bad_contents[first_offset + 2] = '\xff';
   bad_contents[first_offset + 3] = '\xff';
+#elif defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
+  bad_contents[first_offset + 0] = '\xff';
+  bad_contents[first_offset + 1] = '\xff';
+  bad_contents[first_offset + 2] = '\xaa';
+  bad_contents[first_offset + 3] = '\x55';
+#else
+#  error "Unknown endianness."
+#endif
   ASSERT_TRUE(write_bad_log_file(bad_contents)) << strerror(errno);
   {
     State state;