Mark Mentovai 8dbbaff2e1 ios: Provide a copy of exc.defs and run mig on it to generate exc stubs
The iOS SDK doesn’t include a copy of <mach/exc.defs>. It only provides
<mach/exc.h>, which is just the user-side header. To obtain declarations
and implementations of the server-side stubs, a current copy of
<mach/exc.defs> is added to third_party, and the mig action in util is
updated to use it on iOS.

The three other mig subsystems that Crashpad uses are not brought to
iOS:
 - mach_exc is identical to exc except it always uses 64-bit quantities
   for addresses in place of exc’s use of quantiies sized for native
   pointers. Because all iOS work is limited to a single process, there
   is no need to consider cross-process operation with variable bitness,
   so mach_exc is unnecessary. We’re also only targeting 64-bit for iOS,
   so exc will always suffice. This follows the spirit of other
   mach_-prefixed routines on iOS, where Apple forbids mach_vm_read to
   user applications but permits vm_read.
 - notify is primarily used on macOS in the Crashpad handler process to
   receive a no-senders notification, which is used to trigger handler
   shutdown when it has no more clients. This is not believed to be
   useful to Crashpad on iOS, which is restricted to single-process
   operation.
 - child_port is a Crashpad-specific subsystem used to pass Mach rights
   between processes, but is similarly useless when restricted to
   single-process operation as on iOS.

Bug: crashpad:31
Change-Id: Id4cb3cdd529814438d378c20702c82c1e89dd2be
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/2154530
Commit-Queue: Mark Mentovai <mark@chromium.org>
Reviewed-by: Justin Cohen <justincohen@chromium.org>
2020-04-17 21:11:57 +00:00
..
2020-01-23 13:59:00 +00:00

Name: XNU
Short Name: xnu
URL: https://opensource.apple.com/source/xnu/
URL: https://opensource.apple.com/tarballs/xnu/
Version: 6153.11.26 (from macOS 10.15.0)
License: APSL 2.0
License File: APPLE_LICENSE
Security Critical: no

Description:
XNU is the operating system kernel used on macOS and other Apple systems.

Local Modifications:
 - EXTERNAL_HEADERS/mach-o/loader.h is present. Its #includes of
   <mach/machine/thread_status.h> and <architecture/byte_order.h> have been
   commented out as unnecessary. Note that its #includes of <mach/machine.h> and
   <mach/vm_prot.h> have been retained but these headers have not been provided.
   External headers must be made available to provide the cpu_type_t,
   cpu_subtype_t, and vm_prot_t types.
 - osfmk/mach/exc.defs is present, to fill in for <mach/exc.defs> on iOS, where
   it is missing.
 - Anything not listed above is omitted.