OLD | NEW |
1 // Copyright 2014 The Crashpad Authors. All rights reserved. | 1 // Copyright 2014 The Crashpad Authors. All rights reserved. |
2 // | 2 // |
3 // Licensed under the Apache License, Version 2.0 (the "License"); | 3 // Licensed under the Apache License, Version 2.0 (the "License"); |
4 // you may not use this file except in compliance with the License. | 4 // you may not use this file except in compliance with the License. |
5 // You may obtain a copy of the License at | 5 // You may obtain a copy of the License at |
6 // | 6 // |
7 // http://www.apache.org/licenses/LICENSE-2.0 | 7 // http://www.apache.org/licenses/LICENSE-2.0 |
8 // | 8 // |
9 // Unless required by applicable law or agreed to in writing, software | 9 // Unless required by applicable law or agreed to in writing, software |
10 // distributed under the License is distributed on an "AS IS" BASIS, | 10 // distributed under the License is distributed on an "AS IS" BASIS, |
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
145 }; | 145 }; |
146 | 146 |
147 // The MIG-generated __MIG_check__Request__*() functions are not declared as | 147 // The MIG-generated __MIG_check__Request__*() functions are not declared as |
148 // accepting const data, but they could have been because they in fact do not | 148 // accepting const data, but they could have been because they in fact do not |
149 // modify the data. These wrapper functions are provided to bridge the const gap | 149 // modify the data. These wrapper functions are provided to bridge the const gap |
150 // between the code in this file, which is const-correct and treats request | 150 // between the code in this file, which is const-correct and treats request |
151 // message data as const, and those generated functions. | 151 // message data as const, and those generated functions. |
152 | 152 |
153 kern_return_t MIGCheckRequestExceptionRaise( | 153 kern_return_t MIGCheckRequestExceptionRaise( |
154 const __Request__exception_raise_t* in_request) { | 154 const __Request__exception_raise_t* in_request) { |
155 typedef __Request__exception_raise_t Request; | 155 using Request = __Request__exception_raise_t; |
156 return __MIG_check__Request__exception_raise_t( | 156 return __MIG_check__Request__exception_raise_t( |
157 const_cast<Request*>(in_request)); | 157 const_cast<Request*>(in_request)); |
158 } | 158 } |
159 | 159 |
160 kern_return_t MIGCheckRequestExceptionRaiseState( | 160 kern_return_t MIGCheckRequestExceptionRaiseState( |
161 const __Request__exception_raise_state_t* in_request, | 161 const __Request__exception_raise_state_t* in_request, |
162 const __Request__exception_raise_state_t** in_request_1) { | 162 const __Request__exception_raise_state_t** in_request_1) { |
163 typedef __Request__exception_raise_state_t Request; | 163 using Request = __Request__exception_raise_state_t; |
164 return __MIG_check__Request__exception_raise_state_t( | 164 return __MIG_check__Request__exception_raise_state_t( |
165 const_cast<Request*>(in_request), const_cast<Request**>(in_request_1)); | 165 const_cast<Request*>(in_request), const_cast<Request**>(in_request_1)); |
166 } | 166 } |
167 | 167 |
168 kern_return_t MIGCheckRequestExceptionRaiseStateIdentity( | 168 kern_return_t MIGCheckRequestExceptionRaiseStateIdentity( |
169 const __Request__exception_raise_state_identity_t* in_request, | 169 const __Request__exception_raise_state_identity_t* in_request, |
170 const __Request__exception_raise_state_identity_t** in_request_1) { | 170 const __Request__exception_raise_state_identity_t** in_request_1) { |
171 typedef __Request__exception_raise_state_identity_t Request; | 171 using Request = __Request__exception_raise_state_identity_t; |
172 return __MIG_check__Request__exception_raise_state_identity_t( | 172 return __MIG_check__Request__exception_raise_state_identity_t( |
173 const_cast<Request*>(in_request), const_cast<Request**>(in_request_1)); | 173 const_cast<Request*>(in_request), const_cast<Request**>(in_request_1)); |
174 } | 174 } |
175 | 175 |
176 kern_return_t MIGCheckRequestMachExceptionRaise( | 176 kern_return_t MIGCheckRequestMachExceptionRaise( |
177 const __Request__mach_exception_raise_t* in_request) { | 177 const __Request__mach_exception_raise_t* in_request) { |
178 typedef __Request__mach_exception_raise_t Request; | 178 using Request = __Request__mach_exception_raise_t; |
179 return __MIG_check__Request__mach_exception_raise_t( | 179 return __MIG_check__Request__mach_exception_raise_t( |
180 const_cast<Request*>(in_request)); | 180 const_cast<Request*>(in_request)); |
181 } | 181 } |
182 | 182 |
183 kern_return_t MIGCheckRequestMachExceptionRaiseState( | 183 kern_return_t MIGCheckRequestMachExceptionRaiseState( |
184 const __Request__mach_exception_raise_state_t* in_request, | 184 const __Request__mach_exception_raise_state_t* in_request, |
185 const __Request__mach_exception_raise_state_t** in_request_1) { | 185 const __Request__mach_exception_raise_state_t** in_request_1) { |
186 typedef __Request__mach_exception_raise_state_t Request; | 186 using Request = __Request__mach_exception_raise_state_t; |
187 return __MIG_check__Request__mach_exception_raise_state_t( | 187 return __MIG_check__Request__mach_exception_raise_state_t( |
188 const_cast<Request*>(in_request), const_cast<Request**>(in_request_1)); | 188 const_cast<Request*>(in_request), const_cast<Request**>(in_request_1)); |
189 } | 189 } |
190 | 190 |
191 kern_return_t MIGCheckRequestMachExceptionRaiseStateIdentity( | 191 kern_return_t MIGCheckRequestMachExceptionRaiseStateIdentity( |
192 const __Request__mach_exception_raise_state_identity_t* in_request, | 192 const __Request__mach_exception_raise_state_identity_t* in_request, |
193 const __Request__mach_exception_raise_state_identity_t** in_request_1) { | 193 const __Request__mach_exception_raise_state_identity_t** in_request_1) { |
194 typedef __Request__mach_exception_raise_state_identity_t Request; | 194 using Request = __Request__mach_exception_raise_state_identity_t; |
195 return __MIG_check__Request__mach_exception_raise_state_identity_t( | 195 return __MIG_check__Request__mach_exception_raise_state_identity_t( |
196 const_cast<Request*>(in_request), const_cast<Request**>(in_request_1)); | 196 const_cast<Request*>(in_request), const_cast<Request**>(in_request_1)); |
197 } | 197 } |
198 | 198 |
199 } // namespace | 199 } // namespace |
200 | 200 |
201 namespace crashpad { | 201 namespace crashpad { |
202 namespace internal { | 202 namespace internal { |
203 | 203 |
204 ExcServer::ExcServer(ExcServer::Interface* interface) | 204 ExcServer::ExcServer(ExcServer::Interface* interface) |
205 : MachMessageServer::Interface(), | 205 : MachMessageServer::Interface(), |
206 interface_(interface) { | 206 interface_(interface) { |
207 } | 207 } |
208 | 208 |
209 bool ExcServer::MachMessageServerFunction(const mach_msg_header_t* in_header, | 209 bool ExcServer::MachMessageServerFunction(const mach_msg_header_t* in_header, |
210 mach_msg_header_t* out_header, | 210 mach_msg_header_t* out_header, |
211 bool* destroy_complex_request) { | 211 bool* destroy_complex_request) { |
212 PrepareReplyFromRequest(in_header, out_header); | 212 PrepareReplyFromRequest(in_header, out_header); |
213 | 213 |
214 switch (in_header->msgh_id) { | 214 switch (in_header->msgh_id) { |
215 case kMachMessageIDExceptionRaise: { | 215 case kMachMessageIDExceptionRaise: { |
216 // exception_raise(), catch_exception_raise(). | 216 // exception_raise(), catch_exception_raise(). |
217 typedef __Request__exception_raise_t Request; | 217 using Request = __Request__exception_raise_t; |
218 const Request* in_request = reinterpret_cast<const Request*>(in_header); | 218 const Request* in_request = reinterpret_cast<const Request*>(in_header); |
219 kern_return_t kr = MIGCheckRequestExceptionRaise(in_request); | 219 kern_return_t kr = MIGCheckRequestExceptionRaise(in_request); |
220 if (kr != MACH_MSG_SUCCESS) { | 220 if (kr != MACH_MSG_SUCCESS) { |
221 SetReplyError(out_header, kr); | 221 SetReplyError(out_header, kr); |
222 return true; | 222 return true; |
223 } | 223 } |
224 | 224 |
225 typedef __Reply__exception_raise_t Reply; | 225 using Reply = __Reply__exception_raise_t; |
226 Reply* out_reply = reinterpret_cast<Reply*>(out_header); | 226 Reply* out_reply = reinterpret_cast<Reply*>(out_header); |
227 out_reply->RetCode = | 227 out_reply->RetCode = |
228 interface_->CatchExceptionRaise(in_header->msgh_local_port, | 228 interface_->CatchExceptionRaise(in_header->msgh_local_port, |
229 in_request->thread.name, | 229 in_request->thread.name, |
230 in_request->task.name, | 230 in_request->task.name, |
231 in_request->exception, | 231 in_request->exception, |
232 in_request->code, | 232 in_request->code, |
233 in_request->codeCnt, | 233 in_request->codeCnt, |
234 destroy_complex_request); | 234 destroy_complex_request); |
235 if (out_reply->RetCode != KERN_SUCCESS) { | 235 if (out_reply->RetCode != KERN_SUCCESS) { |
236 return true; | 236 return true; |
237 } | 237 } |
238 | 238 |
239 out_header->msgh_size = sizeof(*out_reply); | 239 out_header->msgh_size = sizeof(*out_reply); |
240 return true; | 240 return true; |
241 } | 241 } |
242 | 242 |
243 case kMachMessageIDExceptionRaiseState: { | 243 case kMachMessageIDExceptionRaiseState: { |
244 // exception_raise_state(), catch_exception_raise_state(). | 244 // exception_raise_state(), catch_exception_raise_state(). |
245 typedef __Request__exception_raise_state_t Request; | 245 using Request = __Request__exception_raise_state_t; |
246 const Request* in_request = reinterpret_cast<const Request*>(in_header); | 246 const Request* in_request = reinterpret_cast<const Request*>(in_header); |
247 | 247 |
248 // in_request_1 is used for the portion of the request after the codes, | 248 // in_request_1 is used for the portion of the request after the codes, |
249 // which in theory can be variable-length. The check function will set it. | 249 // which in theory can be variable-length. The check function will set it. |
250 const Request* in_request_1; | 250 const Request* in_request_1; |
251 kern_return_t kr = | 251 kern_return_t kr = |
252 MIGCheckRequestExceptionRaiseState(in_request, &in_request_1); | 252 MIGCheckRequestExceptionRaiseState(in_request, &in_request_1); |
253 if (kr != MACH_MSG_SUCCESS) { | 253 if (kr != MACH_MSG_SUCCESS) { |
254 SetReplyError(out_header, kr); | 254 SetReplyError(out_header, kr); |
255 return true; | 255 return true; |
256 } | 256 } |
257 | 257 |
258 typedef __Reply__exception_raise_state_t Reply; | 258 using Reply = __Reply__exception_raise_state_t; |
259 Reply* out_reply = reinterpret_cast<Reply*>(out_header); | 259 Reply* out_reply = reinterpret_cast<Reply*>(out_header); |
260 out_reply->flavor = in_request_1->flavor; | 260 out_reply->flavor = in_request_1->flavor; |
261 out_reply->new_stateCnt = arraysize(out_reply->new_state); | 261 out_reply->new_stateCnt = arraysize(out_reply->new_state); |
262 out_reply->RetCode = | 262 out_reply->RetCode = |
263 interface_->CatchExceptionRaiseState(in_header->msgh_local_port, | 263 interface_->CatchExceptionRaiseState(in_header->msgh_local_port, |
264 in_request->exception, | 264 in_request->exception, |
265 in_request->code, | 265 in_request->code, |
266 in_request->codeCnt, | 266 in_request->codeCnt, |
267 &out_reply->flavor, | 267 &out_reply->flavor, |
268 in_request_1->old_state, | 268 in_request_1->old_state, |
269 in_request_1->old_stateCnt, | 269 in_request_1->old_stateCnt, |
270 out_reply->new_state, | 270 out_reply->new_state, |
271 &out_reply->new_stateCnt); | 271 &out_reply->new_stateCnt); |
272 if (out_reply->RetCode != KERN_SUCCESS) { | 272 if (out_reply->RetCode != KERN_SUCCESS) { |
273 return true; | 273 return true; |
274 } | 274 } |
275 | 275 |
276 out_header->msgh_size = | 276 out_header->msgh_size = |
277 sizeof(*out_reply) - sizeof(out_reply->new_state) + | 277 sizeof(*out_reply) - sizeof(out_reply->new_state) + |
278 sizeof(out_reply->new_state[0]) * out_reply->new_stateCnt; | 278 sizeof(out_reply->new_state[0]) * out_reply->new_stateCnt; |
279 return true; | 279 return true; |
280 } | 280 } |
281 | 281 |
282 case kMachMessageIDExceptionRaiseStateIdentity: { | 282 case kMachMessageIDExceptionRaiseStateIdentity: { |
283 // exception_raise_state_identity(), | 283 // exception_raise_state_identity(), |
284 // catch_exception_raise_state_identity(). | 284 // catch_exception_raise_state_identity(). |
285 typedef __Request__exception_raise_state_identity_t Request; | 285 using Request = __Request__exception_raise_state_identity_t; |
286 const Request* in_request = reinterpret_cast<const Request*>(in_header); | 286 const Request* in_request = reinterpret_cast<const Request*>(in_header); |
287 | 287 |
288 // in_request_1 is used for the portion of the request after the codes, | 288 // in_request_1 is used for the portion of the request after the codes, |
289 // which in theory can be variable-length. The check function will set it. | 289 // which in theory can be variable-length. The check function will set it. |
290 const Request* in_request_1; | 290 const Request* in_request_1; |
291 kern_return_t kr = | 291 kern_return_t kr = |
292 MIGCheckRequestExceptionRaiseStateIdentity(in_request, &in_request_1); | 292 MIGCheckRequestExceptionRaiseStateIdentity(in_request, &in_request_1); |
293 if (kr != MACH_MSG_SUCCESS) { | 293 if (kr != MACH_MSG_SUCCESS) { |
294 SetReplyError(out_header, kr); | 294 SetReplyError(out_header, kr); |
295 return true; | 295 return true; |
296 } | 296 } |
297 | 297 |
298 typedef __Reply__exception_raise_state_identity_t Reply; | 298 using Reply = __Reply__exception_raise_state_identity_t; |
299 Reply* out_reply = reinterpret_cast<Reply*>(out_header); | 299 Reply* out_reply = reinterpret_cast<Reply*>(out_header); |
300 out_reply->flavor = in_request_1->flavor; | 300 out_reply->flavor = in_request_1->flavor; |
301 out_reply->new_stateCnt = arraysize(out_reply->new_state); | 301 out_reply->new_stateCnt = arraysize(out_reply->new_state); |
302 out_reply->RetCode = interface_->CatchExceptionRaiseStateIdentity( | 302 out_reply->RetCode = interface_->CatchExceptionRaiseStateIdentity( |
303 in_header->msgh_local_port, | 303 in_header->msgh_local_port, |
304 in_request->thread.name, | 304 in_request->thread.name, |
305 in_request->task.name, | 305 in_request->task.name, |
306 in_request->exception, | 306 in_request->exception, |
307 in_request->code, | 307 in_request->code, |
308 in_request->codeCnt, | 308 in_request->codeCnt, |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
342 | 342 |
343 bool MachExcServer::MachMessageServerFunction( | 343 bool MachExcServer::MachMessageServerFunction( |
344 const mach_msg_header_t* in_header, | 344 const mach_msg_header_t* in_header, |
345 mach_msg_header_t* out_header, | 345 mach_msg_header_t* out_header, |
346 bool* destroy_complex_request) { | 346 bool* destroy_complex_request) { |
347 PrepareReplyFromRequest(in_header, out_header); | 347 PrepareReplyFromRequest(in_header, out_header); |
348 | 348 |
349 switch (in_header->msgh_id) { | 349 switch (in_header->msgh_id) { |
350 case kMachMessageIDMachExceptionRaise: { | 350 case kMachMessageIDMachExceptionRaise: { |
351 // mach_exception_raise(), catch_mach_exception_raise(). | 351 // mach_exception_raise(), catch_mach_exception_raise(). |
352 typedef __Request__mach_exception_raise_t Request; | 352 using Request = __Request__mach_exception_raise_t; |
353 const Request* in_request = reinterpret_cast<const Request*>(in_header); | 353 const Request* in_request = reinterpret_cast<const Request*>(in_header); |
354 kern_return_t kr = MIGCheckRequestMachExceptionRaise(in_request); | 354 kern_return_t kr = MIGCheckRequestMachExceptionRaise(in_request); |
355 if (kr != MACH_MSG_SUCCESS) { | 355 if (kr != MACH_MSG_SUCCESS) { |
356 SetReplyError(out_header, kr); | 356 SetReplyError(out_header, kr); |
357 return true; | 357 return true; |
358 } | 358 } |
359 | 359 |
360 typedef __Reply__mach_exception_raise_t Reply; | 360 using Reply = __Reply__mach_exception_raise_t; |
361 Reply* out_reply = reinterpret_cast<Reply*>(out_header); | 361 Reply* out_reply = reinterpret_cast<Reply*>(out_header); |
362 out_reply->RetCode = | 362 out_reply->RetCode = |
363 interface_->CatchMachExceptionRaise(in_header->msgh_local_port, | 363 interface_->CatchMachExceptionRaise(in_header->msgh_local_port, |
364 in_request->thread.name, | 364 in_request->thread.name, |
365 in_request->task.name, | 365 in_request->task.name, |
366 in_request->exception, | 366 in_request->exception, |
367 in_request->code, | 367 in_request->code, |
368 in_request->codeCnt, | 368 in_request->codeCnt, |
369 destroy_complex_request); | 369 destroy_complex_request); |
370 if (out_reply->RetCode != KERN_SUCCESS) { | 370 if (out_reply->RetCode != KERN_SUCCESS) { |
371 return true; | 371 return true; |
372 } | 372 } |
373 | 373 |
374 out_header->msgh_size = sizeof(*out_reply); | 374 out_header->msgh_size = sizeof(*out_reply); |
375 return true; | 375 return true; |
376 } | 376 } |
377 | 377 |
378 case kMachMessageIDMachExceptionRaiseState: { | 378 case kMachMessageIDMachExceptionRaiseState: { |
379 // mach_exception_raise_state(), catch_mach_exception_raise_state(). | 379 // mach_exception_raise_state(), catch_mach_exception_raise_state(). |
380 typedef __Request__mach_exception_raise_state_t Request; | 380 using Request = __Request__mach_exception_raise_state_t; |
381 const Request* in_request = reinterpret_cast<const Request*>(in_header); | 381 const Request* in_request = reinterpret_cast<const Request*>(in_header); |
382 | 382 |
383 // in_request_1 is used for the portion of the request after the codes, | 383 // in_request_1 is used for the portion of the request after the codes, |
384 // which in theory can be variable-length. The check function will set it. | 384 // which in theory can be variable-length. The check function will set it. |
385 const Request* in_request_1; | 385 const Request* in_request_1; |
386 kern_return_t kr = | 386 kern_return_t kr = |
387 MIGCheckRequestMachExceptionRaiseState(in_request, &in_request_1); | 387 MIGCheckRequestMachExceptionRaiseState(in_request, &in_request_1); |
388 if (kr != MACH_MSG_SUCCESS) { | 388 if (kr != MACH_MSG_SUCCESS) { |
389 SetReplyError(out_header, kr); | 389 SetReplyError(out_header, kr); |
390 return true; | 390 return true; |
391 } | 391 } |
392 | 392 |
393 typedef __Reply__mach_exception_raise_state_t Reply; | 393 using Reply = __Reply__mach_exception_raise_state_t; |
394 Reply* out_reply = reinterpret_cast<Reply*>(out_header); | 394 Reply* out_reply = reinterpret_cast<Reply*>(out_header); |
395 out_reply->flavor = in_request_1->flavor; | 395 out_reply->flavor = in_request_1->flavor; |
396 out_reply->new_stateCnt = arraysize(out_reply->new_state); | 396 out_reply->new_stateCnt = arraysize(out_reply->new_state); |
397 out_reply->RetCode = | 397 out_reply->RetCode = |
398 interface_->CatchMachExceptionRaiseState(in_header->msgh_local_port, | 398 interface_->CatchMachExceptionRaiseState(in_header->msgh_local_port, |
399 in_request->exception, | 399 in_request->exception, |
400 in_request->code, | 400 in_request->code, |
401 in_request->codeCnt, | 401 in_request->codeCnt, |
402 &out_reply->flavor, | 402 &out_reply->flavor, |
403 in_request_1->old_state, | 403 in_request_1->old_state, |
404 in_request_1->old_stateCnt, | 404 in_request_1->old_stateCnt, |
405 out_reply->new_state, | 405 out_reply->new_state, |
406 &out_reply->new_stateCnt); | 406 &out_reply->new_stateCnt); |
407 if (out_reply->RetCode != KERN_SUCCESS) { | 407 if (out_reply->RetCode != KERN_SUCCESS) { |
408 return true; | 408 return true; |
409 } | 409 } |
410 | 410 |
411 out_header->msgh_size = | 411 out_header->msgh_size = |
412 sizeof(*out_reply) - sizeof(out_reply->new_state) + | 412 sizeof(*out_reply) - sizeof(out_reply->new_state) + |
413 sizeof(out_reply->new_state[0]) * out_reply->new_stateCnt; | 413 sizeof(out_reply->new_state[0]) * out_reply->new_stateCnt; |
414 return true; | 414 return true; |
415 } | 415 } |
416 | 416 |
417 case kMachMessageIDMachExceptionRaiseStateIdentity: { | 417 case kMachMessageIDMachExceptionRaiseStateIdentity: { |
418 // mach_exception_raise_state_identity(), | 418 // mach_exception_raise_state_identity(), |
419 // catch_mach_exception_raise_state_identity(). | 419 // catch_mach_exception_raise_state_identity(). |
420 typedef __Request__mach_exception_raise_state_identity_t Request; | 420 using Request = __Request__mach_exception_raise_state_identity_t; |
421 const Request* in_request = reinterpret_cast<const Request*>(in_header); | 421 const Request* in_request = reinterpret_cast<const Request*>(in_header); |
422 | 422 |
423 // in_request_1 is used for the portion of the request after the codes, | 423 // in_request_1 is used for the portion of the request after the codes, |
424 // which in theory can be variable-length. The check function will set it. | 424 // which in theory can be variable-length. The check function will set it. |
425 const Request* in_request_1; | 425 const Request* in_request_1; |
426 kern_return_t kr = MIGCheckRequestMachExceptionRaiseStateIdentity( | 426 kern_return_t kr = MIGCheckRequestMachExceptionRaiseStateIdentity( |
427 in_request, &in_request_1); | 427 in_request, &in_request_1); |
428 if (kr != MACH_MSG_SUCCESS) { | 428 if (kr != MACH_MSG_SUCCESS) { |
429 SetReplyError(out_header, kr); | 429 SetReplyError(out_header, kr); |
430 return true; | 430 return true; |
431 } | 431 } |
432 | 432 |
433 typedef __Reply__mach_exception_raise_state_identity_t Reply; | 433 using Reply = __Reply__mach_exception_raise_state_identity_t; |
434 Reply* out_reply = reinterpret_cast<Reply*>(out_header); | 434 Reply* out_reply = reinterpret_cast<Reply*>(out_header); |
435 out_reply->flavor = in_request_1->flavor; | 435 out_reply->flavor = in_request_1->flavor; |
436 out_reply->new_stateCnt = arraysize(out_reply->new_state); | 436 out_reply->new_stateCnt = arraysize(out_reply->new_state); |
437 out_reply->RetCode = interface_->CatchMachExceptionRaiseStateIdentity( | 437 out_reply->RetCode = interface_->CatchMachExceptionRaiseStateIdentity( |
438 in_header->msgh_local_port, | 438 in_header->msgh_local_port, |
439 in_request->thread.name, | 439 in_request->thread.name, |
440 in_request->task.name, | 440 in_request->task.name, |
441 in_request->exception, | 441 in_request->exception, |
442 in_request->code, | 442 in_request->code, |
443 in_request->codeCnt, | 443 in_request->codeCnt, |
(...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
753 kern_return_t ExcServerSuccessfulReturnValue(exception_behavior_t behavior, | 753 kern_return_t ExcServerSuccessfulReturnValue(exception_behavior_t behavior, |
754 bool set_thread_state) { | 754 bool set_thread_state) { |
755 if (!set_thread_state && ExceptionBehaviorHasState(behavior)) { | 755 if (!set_thread_state && ExceptionBehaviorHasState(behavior)) { |
756 return MACH_RCV_PORT_DIED; | 756 return MACH_RCV_PORT_DIED; |
757 } | 757 } |
758 | 758 |
759 return KERN_SUCCESS; | 759 return KERN_SUCCESS; |
760 } | 760 } |
761 | 761 |
762 } // namespace crashpad | 762 } // namespace crashpad |
OLD | NEW |