Mark Mentovai 1bfd7d06ed ios: Run mig with the correct SDK and architecture
mig was being invoked without any -arch argument, causing it to assume
the build system’s native architecture, which would be x86_64. This is
not correct for iOS device builds, which use arm64. The -arch argument
must be plumbed to mig for correct behavior.

When building for iOS, mig was being invoked without any -isysroot
argument, causing it to use the root for the build system, which runs
macOS and not iOS. The macOS SDK doesn’t include the ARM definitions
needed for iOS device builds.

<mach/exc.defs> and <mach/mach_exc.defs> depend on a small number of
other .defs files to provide definitions of standard types. All .defs
files are absent from the iOS SDK. These .defs files are borrowed from
xnu and placed in third_party/xnu. An additional --include argument is
added to allow mig to locate these files.

Bug: crashpad:31
Change-Id: I27154310352939ebe2fb6329bbbfda701c369289
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/2159291
Reviewed-by: Justin Cohen <justincohen@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
2020-04-21 19:24:44 +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 and osfmk/mach/mach_exc.defs are present, to fill in
   for <mach/exc.defs> and <mach/mach_exc.defs> on iOS, where they are missing.
   The .defs files they depend on, <mach/mach_types.defs>,
   <mach/machine/machine_types.defs>, and <mach/std_types.defs> are also
   included.
 - Anything not listed above is omitted.