Fix building crashpad for macOS. Update instructions.
Some tests were disabled by a crashpad patch because the changes to make them work with new SDK are relatively big and no need to backport them. Fixes #4353.
This commit is contained in:
		
							parent
							
								
									9f4e5e4603
								
							
						
					
					
						commit
						7814ee0f7a
					
				
					 3 changed files with 216 additions and 1 deletions
				
			
		
							
								
								
									
										107
									
								
								Telegram/Patches/crashpad.diff
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										107
									
								
								Telegram/Patches/crashpad.diff
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,107 @@
 | 
				
			||||||
 | 
					diff --git a/client/capture_context_mac_test.cc b/client/capture_context_mac_test.cc
 | 
				
			||||||
 | 
					index 436ac5ad..8e14fb9c 100644
 | 
				
			||||||
 | 
					--- a/client/capture_context_mac_test.cc
 | 
				
			||||||
 | 
					+++ b/client/capture_context_mac_test.cc
 | 
				
			||||||
 | 
					@@ -34,11 +34,11 @@ namespace {
 | 
				
			||||||
 | 
					 // gtest assertions.
 | 
				
			||||||
 | 
					 void SanityCheckContext(const NativeCPUContext& context) {
 | 
				
			||||||
 | 
					 #if defined(ARCH_CPU_X86)
 | 
				
			||||||
 | 
					-  ASSERT_EQ(x86_THREAD_STATE32, context.tsh.flavor);
 | 
				
			||||||
 | 
					-  ASSERT_EQ(implicit_cast<int>(x86_THREAD_STATE32_COUNT), context.tsh.count);
 | 
				
			||||||
 | 
					+  ASSERT_EQ(implicit_cast<thread_state_flavor_t>(x86_THREAD_STATE32), implicit_cast<thread_state_flavor_t>(context.tsh.flavor));
 | 
				
			||||||
 | 
					+  ASSERT_EQ(implicit_cast<uint32_t>(x86_THREAD_STATE32_COUNT), implicit_cast<uint32_t>(context.tsh.count));
 | 
				
			||||||
 | 
					 #elif defined(ARCH_CPU_X86_64)
 | 
				
			||||||
 | 
					-  ASSERT_EQ(x86_THREAD_STATE64, context.tsh.flavor);
 | 
				
			||||||
 | 
					-  ASSERT_EQ(implicit_cast<int>(x86_THREAD_STATE64_COUNT), context.tsh.count);
 | 
				
			||||||
 | 
					+  ASSERT_EQ(implicit_cast<thread_state_flavor_t>(x86_THREAD_STATE64), implicit_cast<thread_state_flavor_t>(context.tsh.flavor));
 | 
				
			||||||
 | 
					+  ASSERT_EQ(implicit_cast<uint32_t>(x86_THREAD_STATE64_COUNT), implicit_cast<uint32_t>(context.tsh.count));
 | 
				
			||||||
 | 
					 #endif
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 #if defined(ARCH_CPU_X86_FAMILY)
 | 
				
			||||||
 | 
					diff --git a/client/simulate_crash_mac.cc b/client/simulate_crash_mac.cc
 | 
				
			||||||
 | 
					index 7e279015..27864388 100644
 | 
				
			||||||
 | 
					--- a/client/simulate_crash_mac.cc
 | 
				
			||||||
 | 
					+++ b/client/simulate_crash_mac.cc
 | 
				
			||||||
 | 
					@@ -177,12 +177,12 @@ bool DeliverException(thread_t thread,
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 void SimulateCrash(const NativeCPUContext& cpu_context) {
 | 
				
			||||||
 | 
					 #if defined(ARCH_CPU_X86)
 | 
				
			||||||
 | 
					-  DCHECK_EQ(cpu_context.tsh.flavor,
 | 
				
			||||||
 | 
					+  DCHECK_EQ(implicit_cast<thread_state_flavor_t>(cpu_context.tsh.flavor),
 | 
				
			||||||
 | 
					             implicit_cast<thread_state_flavor_t>(x86_THREAD_STATE32));
 | 
				
			||||||
 | 
					   DCHECK_EQ(implicit_cast<mach_msg_type_number_t>(cpu_context.tsh.count),
 | 
				
			||||||
 | 
					             x86_THREAD_STATE32_COUNT);
 | 
				
			||||||
 | 
					 #elif defined(ARCH_CPU_X86_64)
 | 
				
			||||||
 | 
					-  DCHECK_EQ(cpu_context.tsh.flavor,
 | 
				
			||||||
 | 
					+  DCHECK_EQ(implicit_cast<thread_state_flavor_t>(cpu_context.tsh.flavor),
 | 
				
			||||||
 | 
					             implicit_cast<thread_state_flavor_t>(x86_THREAD_STATE64));
 | 
				
			||||||
 | 
					   DCHECK_EQ(implicit_cast<mach_msg_type_number_t>(cpu_context.tsh.count),
 | 
				
			||||||
 | 
					             x86_THREAD_STATE64_COUNT);
 | 
				
			||||||
 | 
					diff --git a/client/simulate_crash_mac_test.cc b/client/simulate_crash_mac_test.cc
 | 
				
			||||||
 | 
					index 87c5f845..ca813e4c 100644
 | 
				
			||||||
 | 
					--- a/client/simulate_crash_mac_test.cc
 | 
				
			||||||
 | 
					+++ b/client/simulate_crash_mac_test.cc
 | 
				
			||||||
 | 
					@@ -130,12 +130,12 @@ class TestSimulateCrashMac final : public MachMultiprocess,
 | 
				
			||||||
 | 
					               reinterpret_cast<const x86_thread_state*>(old_state);
 | 
				
			||||||
 | 
					           switch (state->tsh.flavor) {
 | 
				
			||||||
 | 
					             case x86_THREAD_STATE32:
 | 
				
			||||||
 | 
					-              EXPECT_EQ(implicit_cast<int>(x86_THREAD_STATE32_COUNT),
 | 
				
			||||||
 | 
					-                        state->tsh.count);
 | 
				
			||||||
 | 
					+              EXPECT_EQ(implicit_cast<uint32_t>(x86_THREAD_STATE32_COUNT),
 | 
				
			||||||
 | 
					+                        implicit_cast<uint32_t>(state->tsh.count));
 | 
				
			||||||
 | 
					               break;
 | 
				
			||||||
 | 
					             case x86_THREAD_STATE64:
 | 
				
			||||||
 | 
					-              EXPECT_EQ(implicit_cast<int>(x86_THREAD_STATE64_COUNT),
 | 
				
			||||||
 | 
					-                        state->tsh.count);
 | 
				
			||||||
 | 
					+              EXPECT_EQ(implicit_cast<uint32_t>(x86_THREAD_STATE64_COUNT),
 | 
				
			||||||
 | 
					+                        implicit_cast<uint32_t>(state->tsh.count));
 | 
				
			||||||
 | 
					               break;
 | 
				
			||||||
 | 
					             default:
 | 
				
			||||||
 | 
					               ADD_FAILURE() << "unexpected tsh.flavor " << state->tsh.flavor;
 | 
				
			||||||
 | 
					@@ -149,12 +149,12 @@ class TestSimulateCrashMac final : public MachMultiprocess,
 | 
				
			||||||
 | 
					               reinterpret_cast<const x86_float_state*>(old_state);
 | 
				
			||||||
 | 
					           switch (state->fsh.flavor) {
 | 
				
			||||||
 | 
					             case x86_FLOAT_STATE32:
 | 
				
			||||||
 | 
					-              EXPECT_EQ(implicit_cast<int>(x86_FLOAT_STATE32_COUNT),
 | 
				
			||||||
 | 
					-                        state->fsh.count);
 | 
				
			||||||
 | 
					+              EXPECT_EQ(implicit_cast<uint32_t>(x86_FLOAT_STATE32_COUNT),
 | 
				
			||||||
 | 
					+                        implicit_cast<uint32_t>(state->fsh.count));
 | 
				
			||||||
 | 
					               break;
 | 
				
			||||||
 | 
					             case x86_FLOAT_STATE64:
 | 
				
			||||||
 | 
					-              EXPECT_EQ(implicit_cast<int>(x86_FLOAT_STATE64_COUNT),
 | 
				
			||||||
 | 
					-                        state->fsh.count);
 | 
				
			||||||
 | 
					+              EXPECT_EQ(implicit_cast<uint32_t>(x86_FLOAT_STATE64_COUNT),
 | 
				
			||||||
 | 
					+                        implicit_cast<uint32_t>(state->fsh.count));
 | 
				
			||||||
 | 
					               break;
 | 
				
			||||||
 | 
					             default:
 | 
				
			||||||
 | 
					               ADD_FAILURE() << "unexpected fsh.flavor " << state->fsh.flavor;
 | 
				
			||||||
 | 
					@@ -168,12 +168,12 @@ class TestSimulateCrashMac final : public MachMultiprocess,
 | 
				
			||||||
 | 
					               reinterpret_cast<const x86_debug_state*>(old_state);
 | 
				
			||||||
 | 
					           switch (state->dsh.flavor) {
 | 
				
			||||||
 | 
					             case x86_DEBUG_STATE32:
 | 
				
			||||||
 | 
					-              EXPECT_EQ(implicit_cast<int>(x86_DEBUG_STATE32_COUNT),
 | 
				
			||||||
 | 
					-                        state->dsh.count);
 | 
				
			||||||
 | 
					+              EXPECT_EQ(implicit_cast<uint32_t>(x86_DEBUG_STATE32_COUNT),
 | 
				
			||||||
 | 
					+                        implicit_cast<uint32_t>(state->dsh.count));
 | 
				
			||||||
 | 
					               break;
 | 
				
			||||||
 | 
					             case x86_DEBUG_STATE64:
 | 
				
			||||||
 | 
					-              EXPECT_EQ(implicit_cast<int>(x86_DEBUG_STATE64_COUNT),
 | 
				
			||||||
 | 
					-                        state->dsh.count);
 | 
				
			||||||
 | 
					+              EXPECT_EQ(implicit_cast<uint32_t>(x86_DEBUG_STATE64_COUNT),
 | 
				
			||||||
 | 
					+                        implicit_cast<uint32_t>(state->dsh.count));
 | 
				
			||||||
 | 
					               break;
 | 
				
			||||||
 | 
					             default:
 | 
				
			||||||
 | 
					               ADD_FAILURE() << "unexpected dsh.flavor " << state->dsh.flavor;
 | 
				
			||||||
 | 
					diff --git a/crashpad.gyp b/crashpad.gyp
 | 
				
			||||||
 | 
					index 42fe0a26..d8af1bf1 100644
 | 
				
			||||||
 | 
					--- a/crashpad.gyp
 | 
				
			||||||
 | 
					+++ b/crashpad.gyp
 | 
				
			||||||
 | 
					@@ -25,7 +25,7 @@
 | 
				
			||||||
 | 
					         'minidump/minidump.gyp:*',
 | 
				
			||||||
 | 
					         'minidump/minidump_test.gyp:*',
 | 
				
			||||||
 | 
					         'snapshot/snapshot.gyp:*',
 | 
				
			||||||
 | 
					-        'snapshot/snapshot_test.gyp:*',
 | 
				
			||||||
 | 
					+#        'snapshot/snapshot_test.gyp:*',
 | 
				
			||||||
 | 
					         'test/test.gyp:*',
 | 
				
			||||||
 | 
					         'test/test_test.gyp:*',
 | 
				
			||||||
 | 
					         'tools/tools.gyp:*',
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
diff --git a/build/crashpad.gypi b/build/crashpad.gypi
 | 
					diff --git a/build/crashpad.gypi b/build/crashpad.gypi
 | 
				
			||||||
index 027c7b6..4bfdfb5 100644
 | 
					index 027c7b68..4bfdfb5a 100644
 | 
				
			||||||
--- a/build/crashpad.gypi
 | 
					--- a/build/crashpad.gypi
 | 
				
			||||||
+++ b/build/crashpad.gypi
 | 
					+++ b/build/crashpad.gypi
 | 
				
			||||||
@@ -25,5 +25,15 @@
 | 
					@@ -25,5 +25,15 @@
 | 
				
			||||||
| 
						 | 
					@ -18,3 +18,110 @@ index 027c7b6..4bfdfb5 100644
 | 
				
			||||||
+    ],
 | 
					+    ],
 | 
				
			||||||
   },
 | 
					   },
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 | 
					diff --git a/client/capture_context_mac_test.cc b/client/capture_context_mac_test.cc
 | 
				
			||||||
 | 
					index 436ac5ad..8e14fb9c 100644
 | 
				
			||||||
 | 
					--- a/client/capture_context_mac_test.cc
 | 
				
			||||||
 | 
					+++ b/client/capture_context_mac_test.cc
 | 
				
			||||||
 | 
					@@ -34,11 +34,11 @@ namespace {
 | 
				
			||||||
 | 
					 // gtest assertions.
 | 
				
			||||||
 | 
					 void SanityCheckContext(const NativeCPUContext& context) {
 | 
				
			||||||
 | 
					 #if defined(ARCH_CPU_X86)
 | 
				
			||||||
 | 
					-  ASSERT_EQ(x86_THREAD_STATE32, context.tsh.flavor);
 | 
				
			||||||
 | 
					-  ASSERT_EQ(implicit_cast<int>(x86_THREAD_STATE32_COUNT), context.tsh.count);
 | 
				
			||||||
 | 
					+  ASSERT_EQ(implicit_cast<thread_state_flavor_t>(x86_THREAD_STATE32), implicit_cast<thread_state_flavor_t>(context.tsh.flavor));
 | 
				
			||||||
 | 
					+  ASSERT_EQ(implicit_cast<uint32_t>(x86_THREAD_STATE32_COUNT), implicit_cast<uint32_t>(context.tsh.count));
 | 
				
			||||||
 | 
					 #elif defined(ARCH_CPU_X86_64)
 | 
				
			||||||
 | 
					-  ASSERT_EQ(x86_THREAD_STATE64, context.tsh.flavor);
 | 
				
			||||||
 | 
					-  ASSERT_EQ(implicit_cast<int>(x86_THREAD_STATE64_COUNT), context.tsh.count);
 | 
				
			||||||
 | 
					+  ASSERT_EQ(implicit_cast<thread_state_flavor_t>(x86_THREAD_STATE64), implicit_cast<thread_state_flavor_t>(context.tsh.flavor));
 | 
				
			||||||
 | 
					+  ASSERT_EQ(implicit_cast<uint32_t>(x86_THREAD_STATE64_COUNT), implicit_cast<uint32_t>(context.tsh.count));
 | 
				
			||||||
 | 
					 #endif
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 #if defined(ARCH_CPU_X86_FAMILY)
 | 
				
			||||||
 | 
					diff --git a/client/simulate_crash_mac.cc b/client/simulate_crash_mac.cc
 | 
				
			||||||
 | 
					index 7e279015..27864388 100644
 | 
				
			||||||
 | 
					--- a/client/simulate_crash_mac.cc
 | 
				
			||||||
 | 
					+++ b/client/simulate_crash_mac.cc
 | 
				
			||||||
 | 
					@@ -177,12 +177,12 @@ bool DeliverException(thread_t thread,
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 void SimulateCrash(const NativeCPUContext& cpu_context) {
 | 
				
			||||||
 | 
					 #if defined(ARCH_CPU_X86)
 | 
				
			||||||
 | 
					-  DCHECK_EQ(cpu_context.tsh.flavor,
 | 
				
			||||||
 | 
					+  DCHECK_EQ(implicit_cast<thread_state_flavor_t>(cpu_context.tsh.flavor),
 | 
				
			||||||
 | 
					             implicit_cast<thread_state_flavor_t>(x86_THREAD_STATE32));
 | 
				
			||||||
 | 
					   DCHECK_EQ(implicit_cast<mach_msg_type_number_t>(cpu_context.tsh.count),
 | 
				
			||||||
 | 
					             x86_THREAD_STATE32_COUNT);
 | 
				
			||||||
 | 
					 #elif defined(ARCH_CPU_X86_64)
 | 
				
			||||||
 | 
					-  DCHECK_EQ(cpu_context.tsh.flavor,
 | 
				
			||||||
 | 
					+  DCHECK_EQ(implicit_cast<thread_state_flavor_t>(cpu_context.tsh.flavor),
 | 
				
			||||||
 | 
					             implicit_cast<thread_state_flavor_t>(x86_THREAD_STATE64));
 | 
				
			||||||
 | 
					   DCHECK_EQ(implicit_cast<mach_msg_type_number_t>(cpu_context.tsh.count),
 | 
				
			||||||
 | 
					             x86_THREAD_STATE64_COUNT);
 | 
				
			||||||
 | 
					diff --git a/client/simulate_crash_mac_test.cc b/client/simulate_crash_mac_test.cc
 | 
				
			||||||
 | 
					index 87c5f845..ca813e4c 100644
 | 
				
			||||||
 | 
					--- a/client/simulate_crash_mac_test.cc
 | 
				
			||||||
 | 
					+++ b/client/simulate_crash_mac_test.cc
 | 
				
			||||||
 | 
					@@ -130,12 +130,12 @@ class TestSimulateCrashMac final : public MachMultiprocess,
 | 
				
			||||||
 | 
					               reinterpret_cast<const x86_thread_state*>(old_state);
 | 
				
			||||||
 | 
					           switch (state->tsh.flavor) {
 | 
				
			||||||
 | 
					             case x86_THREAD_STATE32:
 | 
				
			||||||
 | 
					-              EXPECT_EQ(implicit_cast<int>(x86_THREAD_STATE32_COUNT),
 | 
				
			||||||
 | 
					-                        state->tsh.count);
 | 
				
			||||||
 | 
					+              EXPECT_EQ(implicit_cast<uint32_t>(x86_THREAD_STATE32_COUNT),
 | 
				
			||||||
 | 
					+                        implicit_cast<uint32_t>(state->tsh.count));
 | 
				
			||||||
 | 
					               break;
 | 
				
			||||||
 | 
					             case x86_THREAD_STATE64:
 | 
				
			||||||
 | 
					-              EXPECT_EQ(implicit_cast<int>(x86_THREAD_STATE64_COUNT),
 | 
				
			||||||
 | 
					-                        state->tsh.count);
 | 
				
			||||||
 | 
					+              EXPECT_EQ(implicit_cast<uint32_t>(x86_THREAD_STATE64_COUNT),
 | 
				
			||||||
 | 
					+                        implicit_cast<uint32_t>(state->tsh.count));
 | 
				
			||||||
 | 
					               break;
 | 
				
			||||||
 | 
					             default:
 | 
				
			||||||
 | 
					               ADD_FAILURE() << "unexpected tsh.flavor " << state->tsh.flavor;
 | 
				
			||||||
 | 
					@@ -149,12 +149,12 @@ class TestSimulateCrashMac final : public MachMultiprocess,
 | 
				
			||||||
 | 
					               reinterpret_cast<const x86_float_state*>(old_state);
 | 
				
			||||||
 | 
					           switch (state->fsh.flavor) {
 | 
				
			||||||
 | 
					             case x86_FLOAT_STATE32:
 | 
				
			||||||
 | 
					-              EXPECT_EQ(implicit_cast<int>(x86_FLOAT_STATE32_COUNT),
 | 
				
			||||||
 | 
					-                        state->fsh.count);
 | 
				
			||||||
 | 
					+              EXPECT_EQ(implicit_cast<uint32_t>(x86_FLOAT_STATE32_COUNT),
 | 
				
			||||||
 | 
					+                        implicit_cast<uint32_t>(state->fsh.count));
 | 
				
			||||||
 | 
					               break;
 | 
				
			||||||
 | 
					             case x86_FLOAT_STATE64:
 | 
				
			||||||
 | 
					-              EXPECT_EQ(implicit_cast<int>(x86_FLOAT_STATE64_COUNT),
 | 
				
			||||||
 | 
					-                        state->fsh.count);
 | 
				
			||||||
 | 
					+              EXPECT_EQ(implicit_cast<uint32_t>(x86_FLOAT_STATE64_COUNT),
 | 
				
			||||||
 | 
					+                        implicit_cast<uint32_t>(state->fsh.count));
 | 
				
			||||||
 | 
					               break;
 | 
				
			||||||
 | 
					             default:
 | 
				
			||||||
 | 
					               ADD_FAILURE() << "unexpected fsh.flavor " << state->fsh.flavor;
 | 
				
			||||||
 | 
					@@ -168,12 +168,12 @@ class TestSimulateCrashMac final : public MachMultiprocess,
 | 
				
			||||||
 | 
					               reinterpret_cast<const x86_debug_state*>(old_state);
 | 
				
			||||||
 | 
					           switch (state->dsh.flavor) {
 | 
				
			||||||
 | 
					             case x86_DEBUG_STATE32:
 | 
				
			||||||
 | 
					-              EXPECT_EQ(implicit_cast<int>(x86_DEBUG_STATE32_COUNT),
 | 
				
			||||||
 | 
					-                        state->dsh.count);
 | 
				
			||||||
 | 
					+              EXPECT_EQ(implicit_cast<uint32_t>(x86_DEBUG_STATE32_COUNT),
 | 
				
			||||||
 | 
					+                        implicit_cast<uint32_t>(state->dsh.count));
 | 
				
			||||||
 | 
					               break;
 | 
				
			||||||
 | 
					             case x86_DEBUG_STATE64:
 | 
				
			||||||
 | 
					-              EXPECT_EQ(implicit_cast<int>(x86_DEBUG_STATE64_COUNT),
 | 
				
			||||||
 | 
					-                        state->dsh.count);
 | 
				
			||||||
 | 
					+              EXPECT_EQ(implicit_cast<uint32_t>(x86_DEBUG_STATE64_COUNT),
 | 
				
			||||||
 | 
					+                        implicit_cast<uint32_t>(state->dsh.count));
 | 
				
			||||||
 | 
					               break;
 | 
				
			||||||
 | 
					             default:
 | 
				
			||||||
 | 
					               ADD_FAILURE() << "unexpected dsh.flavor " << state->dsh.flavor;
 | 
				
			||||||
 | 
					diff --git a/crashpad.gyp b/crashpad.gyp
 | 
				
			||||||
 | 
					index 42fe0a26..d8af1bf1 100644
 | 
				
			||||||
 | 
					--- a/crashpad.gyp
 | 
				
			||||||
 | 
					+++ b/crashpad.gyp
 | 
				
			||||||
 | 
					@@ -25,7 +25,7 @@
 | 
				
			||||||
 | 
					         'minidump/minidump.gyp:*',
 | 
				
			||||||
 | 
					         'minidump/minidump_test.gyp:*',
 | 
				
			||||||
 | 
					         'snapshot/snapshot.gyp:*',
 | 
				
			||||||
 | 
					-        'snapshot/snapshot_test.gyp:*',
 | 
				
			||||||
 | 
					+#        'snapshot/snapshot_test.gyp:*',
 | 
				
			||||||
 | 
					         'test/test.gyp:*',
 | 
				
			||||||
 | 
					         'test/test_test.gyp:*',
 | 
				
			||||||
 | 
					         'tools/tools.gyp:*',
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -102,6 +102,7 @@ Go to ***BuildPath*** and run
 | 
				
			||||||
    git clone https://chromium.googlesource.com/crashpad/crashpad.git
 | 
					    git clone https://chromium.googlesource.com/crashpad/crashpad.git
 | 
				
			||||||
    cd crashpad
 | 
					    cd crashpad
 | 
				
			||||||
    git checkout feb3aa3923
 | 
					    git checkout feb3aa3923
 | 
				
			||||||
 | 
					    git apply ../../../tdesktop/Telegram/Patches/crashpad.diff
 | 
				
			||||||
    cd third_party/mini_chromium
 | 
					    cd third_party/mini_chromium
 | 
				
			||||||
    git clone https://chromium.googlesource.com/chromium/mini_chromium
 | 
					    git clone https://chromium.googlesource.com/chromium/mini_chromium
 | 
				
			||||||
    cd mini_chromium
 | 
					    cd mini_chromium
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue