| 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 |