mirror of
https://github.com/chromium/crashpad.git
synced 2025-03-09 22:26:06 +00:00
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>
This commit is contained in:
parent
3e748e9c4e
commit
1bfd7d06ed
3
third_party/xnu/README.crashpad
vendored
3
third_party/xnu/README.crashpad
vendored
@ -19,4 +19,7 @@ Local Modifications:
|
|||||||
cpu_subtype_t, and vm_prot_t types.
|
cpu_subtype_t, and vm_prot_t types.
|
||||||
- osfmk/mach/exc.defs and osfmk/mach/mach_exc.defs are present, to fill in
|
- 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.
|
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.
|
- Anything not listed above is omitted.
|
||||||
|
652
third_party/xnu/osfmk/mach/mach_types.defs
vendored
Normal file
652
third_party/xnu/osfmk/mach/mach_types.defs
vendored
Normal file
@ -0,0 +1,652 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2000-2016 Apple Inc. All rights reserved.
|
||||||
|
*
|
||||||
|
* @APPLE_OSREFERENCE_LICENSE_HEADER_START@
|
||||||
|
*
|
||||||
|
* This file contains Original Code and/or Modifications of Original Code
|
||||||
|
* as defined in and that are subject to the Apple Public Source License
|
||||||
|
* Version 2.0 (the 'License'). You may not use this file except in
|
||||||
|
* compliance with the License. The rights granted to you under the License
|
||||||
|
* may not be used to create, or enable the creation or redistribution of,
|
||||||
|
* unlawful or unlicensed copies of an Apple operating system, or to
|
||||||
|
* circumvent, violate, or enable the circumvention or violation of, any
|
||||||
|
* terms of an Apple operating system software license agreement.
|
||||||
|
*
|
||||||
|
* Please obtain a copy of the License at
|
||||||
|
* http://www.opensource.apple.com/apsl/ and read it before using this file.
|
||||||
|
*
|
||||||
|
* The Original Code and all software distributed under the License are
|
||||||
|
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||||
|
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||||
|
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||||
|
* Please see the License for the specific language governing rights and
|
||||||
|
* limitations under the License.
|
||||||
|
*
|
||||||
|
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
* @OSF_COPYRIGHT@
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
* Mach Operating System
|
||||||
|
* Copyright (c) 1991,1990,1989,1988 Carnegie Mellon University
|
||||||
|
* All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify and distribute this software and its
|
||||||
|
* documentation is hereby granted, provided that both the copyright
|
||||||
|
* notice and this permission notice appear in all copies of the
|
||||||
|
* software, derivative works or modified versions, and any portions
|
||||||
|
* thereof, and that both notices appear in supporting documentation.
|
||||||
|
*
|
||||||
|
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
|
||||||
|
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
|
||||||
|
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||||
|
*
|
||||||
|
* Carnegie Mellon requests users of this software to return to
|
||||||
|
*
|
||||||
|
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
||||||
|
* School of Computer Science
|
||||||
|
* Carnegie Mellon University
|
||||||
|
* Pittsburgh PA 15213-3890
|
||||||
|
*
|
||||||
|
* any improvements or extensions that they make and grant Carnegie Mellon
|
||||||
|
* the rights to redistribute these changes.
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
* NOTICE: This file was modified by McAfee Research in 2004 to introduce
|
||||||
|
* support for mandatory and extensible security protections. This notice
|
||||||
|
* is included in support of clause 2.2 (b) of the Apple Public License,
|
||||||
|
* Version 2.0.
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
* Mach kernel interface type declarations
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _MACH_MACH_TYPES_DEFS_
|
||||||
|
#define _MACH_MACH_TYPES_DEFS_
|
||||||
|
|
||||||
|
|
||||||
|
#include <mach/std_types.defs>
|
||||||
|
|
||||||
|
type memory_object_offset_t = uint64_t;
|
||||||
|
type memory_object_size_t = uint64_t;
|
||||||
|
type memory_object_cluster_size_t = uint32_t;
|
||||||
|
type memory_object_fault_info_t = array[16] of integer_t;
|
||||||
|
|
||||||
|
#ifdef KERNEL_PRIVATE
|
||||||
|
|
||||||
|
/* Universal Page Lists - restricted to (in-kernel) pagers for now */
|
||||||
|
type upl_size_t = uint32_t;
|
||||||
|
type upl_offset_t = uint32_t;
|
||||||
|
type upl_page_info_t = struct[2] of integer_t;
|
||||||
|
type upl_page_info_array_t = array[*:256] of upl_page_info_t;
|
||||||
|
|
||||||
|
type upl_t = mach_port_t
|
||||||
|
intran: upl_t convert_port_to_upl(mach_port_t)
|
||||||
|
outtran: mach_port_t convert_upl_to_port(upl_t)
|
||||||
|
destructor: upl_deallocate(upl_t)
|
||||||
|
;
|
||||||
|
|
||||||
|
#endif /* KERNEL_PRIVATE */
|
||||||
|
|
||||||
|
type mach_port_status_t = struct[10] of integer_t; /* obsolete */
|
||||||
|
type mach_port_info_ext_t = struct[17] of integer_t;
|
||||||
|
|
||||||
|
/* mach_port_info_t: can hold either a
|
||||||
|
* mach_port_status_t (9 ints) or a
|
||||||
|
* mach_port_limits_t (1 int) or a
|
||||||
|
* mach_port_info_ext_t (17 ints). If new flavors of
|
||||||
|
* mach_port_{get,set}_attributes are added, the size of
|
||||||
|
* this array may have to be increased. (See mach/port.h)
|
||||||
|
*/
|
||||||
|
type mach_port_flavor_t = int;
|
||||||
|
type mach_port_info_t = array[*:17] of integer_t;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* mach_msg_max_trailer_t: can hold
|
||||||
|
* mach_msg_trailer_type_t (1 int)
|
||||||
|
* mach_msg_trailer_size_t (1 int)
|
||||||
|
* mach_port_seqno_t (1 int)
|
||||||
|
* security_token_t (2 ints)
|
||||||
|
* audit_token_t (8 ints)
|
||||||
|
* mach_port_context_t (2 ints)
|
||||||
|
* msgh_ad (1 int)
|
||||||
|
* msg_labels_t (1 int)
|
||||||
|
*/
|
||||||
|
type mach_msg_trailer_type_t = int;
|
||||||
|
type mach_msg_trailer_info_t = array[*:68] of char;
|
||||||
|
|
||||||
|
type task_t = mach_port_t
|
||||||
|
#if KERNEL_SERVER
|
||||||
|
intran: task_t convert_port_to_task(mach_port_t)
|
||||||
|
outtran: mach_port_t convert_task_to_port(task_t)
|
||||||
|
destructor: task_deallocate(task_t)
|
||||||
|
#endif /* KERNEL_SERVER */
|
||||||
|
;
|
||||||
|
|
||||||
|
type task_name_t = mach_port_t
|
||||||
|
#if KERNEL_SERVER
|
||||||
|
intran: task_name_t convert_port_to_task_name(mach_port_t)
|
||||||
|
outtran: mach_port_t convert_task_name_to_port(task_name_t)
|
||||||
|
destructor: task_name_deallocate(task_name_t)
|
||||||
|
#endif /* KERNEL_SERVER */
|
||||||
|
;
|
||||||
|
|
||||||
|
type task_inspect_t = mach_port_t
|
||||||
|
#if KERNEL_SERVER
|
||||||
|
intran: task_inspect_t convert_port_to_task_inspect(mach_port_t)
|
||||||
|
outtran: mach_port_t convert_task_inspect_to_port(task_inspect_t)
|
||||||
|
destructor: task_inspect_deallocate(task_inspect_t)
|
||||||
|
#endif /* KERNEL_SERVER */
|
||||||
|
;
|
||||||
|
|
||||||
|
type thread_t = mach_port_t
|
||||||
|
#if KERNEL_SERVER
|
||||||
|
intran: thread_t convert_port_to_thread(mach_port_t)
|
||||||
|
outtran: mach_port_t convert_thread_to_port(thread_t)
|
||||||
|
destructor: thread_deallocate(thread_t)
|
||||||
|
#endif /* KERNEL_SERVER */
|
||||||
|
;
|
||||||
|
|
||||||
|
type thread_inspect_t = mach_port_t
|
||||||
|
#if KERNEL_SERVER
|
||||||
|
intran: thread_inspect_t convert_port_to_thread_inspect(mach_port_t)
|
||||||
|
outtran: mach_port_t convert_thread_inspect_to_port(thread_inspect_t)
|
||||||
|
destructor: thread_inspect_deallocate(thread_inspect_t)
|
||||||
|
#endif /* KERNEL_SERVER */
|
||||||
|
;
|
||||||
|
|
||||||
|
type thread_act_t = mach_port_t
|
||||||
|
#if KERNEL_SERVER
|
||||||
|
intran: thread_act_t convert_port_to_thread(mach_port_t)
|
||||||
|
outtran: mach_port_t convert_thread_to_port(thread_act_t)
|
||||||
|
destructor: thread_deallocate(thread_act_t)
|
||||||
|
#endif /* KERNEL_SERVER */
|
||||||
|
;
|
||||||
|
|
||||||
|
type thread_act_consume_ref_t = mach_port_move_send_t
|
||||||
|
cusertype: thread_act_t
|
||||||
|
#if KERNEL_SERVER
|
||||||
|
intran: thread_act_t convert_port_to_thread(mach_port_t)
|
||||||
|
destructor: thread_deallocate(thread_act_t)
|
||||||
|
#endif /* KERNEL_SERVER */
|
||||||
|
;
|
||||||
|
|
||||||
|
/* thread_state_t: This inline array can hold
|
||||||
|
* a machine-dependent amount of data, defined in
|
||||||
|
* mach/machine/???? (currently THREAD_STATE_MAX,
|
||||||
|
* in mach/thread_state.h)
|
||||||
|
*/
|
||||||
|
#include <mach/machine/thread_state.h>
|
||||||
|
type thread_state_flavor_t = int;
|
||||||
|
type thread_state_t = array[*:THREAD_STATE_MAX] of natural_t;
|
||||||
|
|
||||||
|
type task_array_t = ^array[] of task_t;
|
||||||
|
type thread_array_t = ^array[] of thread_t;
|
||||||
|
type thread_act_array_t = ^array[] of thread_act_t;
|
||||||
|
type act_params_t = array[6] of int;
|
||||||
|
|
||||||
|
type vm_map_t = mach_port_t
|
||||||
|
#if KERNEL_SERVER
|
||||||
|
intran: vm_map_t convert_port_to_map(mach_port_t)
|
||||||
|
destructor: vm_map_deallocate(vm_map_t)
|
||||||
|
#endif /* KERNEL_SERVER */
|
||||||
|
;
|
||||||
|
|
||||||
|
type vm_task_entry_t = mach_port_t
|
||||||
|
cusertype: vm_map_t
|
||||||
|
#if KERNEL_SERVER
|
||||||
|
intran: vm_map_t convert_port_entry_to_map(mach_port_t)
|
||||||
|
destructor: vm_map_deallocate(vm_map_t)
|
||||||
|
#endif /* KERNEL_SERVER */
|
||||||
|
;
|
||||||
|
|
||||||
|
type ipc_space_t = mach_port_t
|
||||||
|
#if KERNEL_SERVER
|
||||||
|
intran: ipc_space_t convert_port_to_space(mach_port_t)
|
||||||
|
destructor: space_deallocate(ipc_space_t)
|
||||||
|
#endif /* KERNEL_SERVER */
|
||||||
|
;
|
||||||
|
|
||||||
|
type ipc_space_inspect_t = mach_port_t
|
||||||
|
#if KERNEL_SERVER
|
||||||
|
intran: ipc_space_inspect_t convert_port_to_space_inspect(mach_port_t)
|
||||||
|
destructor: space_inspect_deallocate(ipc_space_inspect_t)
|
||||||
|
#endif /* KERNEL_SERVER */
|
||||||
|
;
|
||||||
|
|
||||||
|
type arcade_register_t = mach_port_t
|
||||||
|
#if KERNEL_SERVER
|
||||||
|
intran: arcade_register_t convert_port_to_arcade_register(mach_port_t)
|
||||||
|
#endif /* KERNEL_SERVER */
|
||||||
|
;
|
||||||
|
|
||||||
|
type vm_prot_t = int;
|
||||||
|
type vm_inherit_t = int;
|
||||||
|
type vm_purgable_t = int;
|
||||||
|
type xxx_vm_statistics_data_t = struct[13] of integer_t;
|
||||||
|
type vm_behavior_t = int;
|
||||||
|
type vm_statistics_data_t = struct[15] of integer_t;
|
||||||
|
type vm_machine_attribute_t = int;
|
||||||
|
type vm_machine_attribute_val_t = int;
|
||||||
|
type vm_sync_t = int;
|
||||||
|
|
||||||
|
/* thread_info_t: this inline array can hold any of:
|
||||||
|
* thread_basic_info_t (10 ints)
|
||||||
|
* policy_timeshare_info_t (5 ints)
|
||||||
|
* policy_fifo_info_t (4 ints)
|
||||||
|
* policy_rr_info_t (5 ints)
|
||||||
|
* thread_extended_info (12 ints + 64 chars)
|
||||||
|
* if other thread_info flavors are added, this
|
||||||
|
* definition may need to be changed. (See
|
||||||
|
* mach/thread_info.h and mach/policy.h) */
|
||||||
|
type thread_flavor_t = int;
|
||||||
|
type thread_info_t = array[*:32] of integer_t;
|
||||||
|
|
||||||
|
type thread_policy_flavor_t = natural_t;
|
||||||
|
type thread_policy_t = array[*:16] of integer_t;
|
||||||
|
|
||||||
|
/* task_info_t: this inline array can hold any of:
|
||||||
|
* task_basic_info_32_t (8 ints)
|
||||||
|
* task_basic_info_64_t (10 ints)
|
||||||
|
* task_events_info_t (8 ints)
|
||||||
|
* task_thread_times_info_t (4 ints)
|
||||||
|
* policy_timeshare_info_t (5 ints)
|
||||||
|
* policy_fifo_info_t (4 ints)
|
||||||
|
* policy_rr_info_t (5 ints)
|
||||||
|
* task security token (2 ints)
|
||||||
|
* task audit token (8 ints)
|
||||||
|
* dyld info (2 64-bit ints and 1 int)
|
||||||
|
* task_extmod_info_t (8 64-bit ints)
|
||||||
|
* task_basic_info_64_2_t
|
||||||
|
* mach_task_basic_info_t (12 ints)
|
||||||
|
* task_power_info_t (18 ints)
|
||||||
|
* task_vm_info_t (87 ints)
|
||||||
|
* If other task_info flavors are added, this
|
||||||
|
* definition may need to be changed. (See
|
||||||
|
* mach/task_info.h and mach/policy.h) */
|
||||||
|
type task_flavor_t = int;
|
||||||
|
type task_info_t = array[*:87] of integer_t;
|
||||||
|
|
||||||
|
type task_purgable_info_t = struct[68] of integer_t;
|
||||||
|
|
||||||
|
type task_policy_flavor_t = natural_t;
|
||||||
|
type task_policy_t = array[*:16] of integer_t;
|
||||||
|
|
||||||
|
type task_inspect_flavor_t = natural_t;
|
||||||
|
type task_inspect_info_t = array[*:4] of integer_t;
|
||||||
|
|
||||||
|
type task_exc_guard_behavior_t = uint32_t;
|
||||||
|
|
||||||
|
type mem_entry_name_port_t = mach_port_t
|
||||||
|
#if KERNEL_SERVER
|
||||||
|
intran: mem_entry_name_port_t null_conversion(mach_port_t)
|
||||||
|
outtran: mach_port_t null_conversion(mem_entry_name_port_t)
|
||||||
|
#endif /* KERNEL_SERVER */
|
||||||
|
;
|
||||||
|
|
||||||
|
type mem_entry_name_port_move_send_t = mach_port_move_send_t
|
||||||
|
cusertype: mem_entry_name_port_t
|
||||||
|
#if KERNEL_SERVER
|
||||||
|
intran: mem_entry_name_port_t null_conversion(mach_port_t)
|
||||||
|
outtran: mach_port_t null_conversion(mem_entry_name_port_t)
|
||||||
|
#endif /* KERNEL_SERVER */
|
||||||
|
;
|
||||||
|
|
||||||
|
type memory_object_default_t = mach_port_t
|
||||||
|
#if KERNEL_PRIVATE
|
||||||
|
intran: memory_object_default_t null_conversion(mach_port_t)
|
||||||
|
outtran: mach_port_t null_conversion(memory_object_default_t)
|
||||||
|
#endif /* KERNEL_PRIVATE */
|
||||||
|
;
|
||||||
|
|
||||||
|
type memory_object_t = mach_port_t
|
||||||
|
#if KERNEL_PRIVATE
|
||||||
|
intran: memory_object_t convert_port_to_memory_object(mach_port_t)
|
||||||
|
outtran: mach_port_t convert_memory_object_to_port(memory_object_t)
|
||||||
|
#endif /* KERNEL_PRIVATE */
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
type memory_object_control_t = mach_port_t
|
||||||
|
#if KERNEL_PRIVATE
|
||||||
|
intran: memory_object_control_t convert_port_to_mo_control(mach_port_t)
|
||||||
|
outtran: mach_port_t convert_mo_control_to_port(memory_object_control_t)
|
||||||
|
destructor: memory_object_control_deallocate(memory_object_control_t)
|
||||||
|
#endif /* KERNEL_PRIVATE */
|
||||||
|
;
|
||||||
|
|
||||||
|
type memory_object_name_t = mach_port_t
|
||||||
|
ctype: mach_port_t
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
type memory_object_copy_strategy_t = int;
|
||||||
|
type memory_object_return_t = int;
|
||||||
|
|
||||||
|
type machine_info_data_t = struct[5] of integer_t;
|
||||||
|
type machine_slot_data_t = struct[8] of integer_t;
|
||||||
|
|
||||||
|
type host_t = mach_port_t
|
||||||
|
#if KERNEL_SERVER
|
||||||
|
intran: host_t convert_port_to_host(mach_port_t)
|
||||||
|
outtran: mach_port_t convert_host_to_port(host_t)
|
||||||
|
#endif /* KERNEL_SERVER */
|
||||||
|
;
|
||||||
|
|
||||||
|
type host_priv_t = mach_port_t
|
||||||
|
#if KERNEL_SERVER
|
||||||
|
intran: host_priv_t convert_port_to_host_priv(mach_port_t)
|
||||||
|
#endif /* KERNEL_SERVER */
|
||||||
|
;
|
||||||
|
|
||||||
|
type host_security_t = mach_port_t
|
||||||
|
#if KERNEL_SERVER
|
||||||
|
intran: host_security_t convert_port_to_host_security(mach_port_t)
|
||||||
|
#endif /* KERNEL_SERVER */
|
||||||
|
;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* host_info_t: variable-sized inline array that can contain:
|
||||||
|
*
|
||||||
|
* host_basic_info_old_t (5 ints)
|
||||||
|
* host_basic_info_t (12 ints)
|
||||||
|
* host_sched_info_t (2 ints)
|
||||||
|
* kernel_resource_sizes_t (5 ints)
|
||||||
|
* host_load_info_t (6 ints)
|
||||||
|
* vm_statistics32_t (15 ints)
|
||||||
|
* host_purgable_info_t (68 ints)
|
||||||
|
* host_expired_task_info uses a task_power_info (18 ints)
|
||||||
|
*
|
||||||
|
* If other host_info flavors are added, this definition may
|
||||||
|
* need to be changed. (See mach/{host_info,vm_statistics}.h)
|
||||||
|
*/
|
||||||
|
type host_flavor_t = int;
|
||||||
|
type host_info_t = array[*:68] of integer_t;
|
||||||
|
/*
|
||||||
|
* host_info64_t: variable-sized inline array that can contain:
|
||||||
|
*
|
||||||
|
* vm_statistics_t (6 ints and 9 longs)
|
||||||
|
* vm_extmod_statistics_t (6 64-bit ints)
|
||||||
|
*/
|
||||||
|
type host_info64_t = array[*:256] of integer_t;
|
||||||
|
|
||||||
|
type processor_t = mach_port_t
|
||||||
|
#if KERNEL_SERVER
|
||||||
|
intran: processor_t convert_port_to_processor(mach_port_t)
|
||||||
|
outtran: mach_port_t convert_processor_to_port(processor_t)
|
||||||
|
#endif /* KERNEL_SERVER */
|
||||||
|
;
|
||||||
|
|
||||||
|
type processor_array_t = ^array[] of processor_t;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* processor_info_t: variable-sized inline array that can
|
||||||
|
* contain:
|
||||||
|
*
|
||||||
|
* - processor_basic_info_t: (5 ints)
|
||||||
|
* - processor_cpu_load_info_t: (4 ints)
|
||||||
|
* - processor_machine_info_t: (12 ints)
|
||||||
|
* - processor_cpu_stat_t: (10 ints)
|
||||||
|
* - processor_cpu_stat64_t: (20 ints)
|
||||||
|
*
|
||||||
|
* If other processor_info flavors are added, this definition
|
||||||
|
* may need to be changed.
|
||||||
|
*
|
||||||
|
* See mach/processor_info.h and mach/arm/processor_info.h.
|
||||||
|
*/
|
||||||
|
|
||||||
|
type processor_flavor_t = int;
|
||||||
|
type processor_info_t = array[*:20] of integer_t;
|
||||||
|
type processor_info_array_t = ^array[] of integer_t;
|
||||||
|
|
||||||
|
type processor_set_t = mach_port_t
|
||||||
|
#if KERNEL_SERVER
|
||||||
|
intran: processor_set_t convert_port_to_pset(mach_port_t)
|
||||||
|
outtran: mach_port_t convert_pset_to_port(processor_set_t)
|
||||||
|
destructor: pset_deallocate(processor_set_t)
|
||||||
|
#endif /* KERNEL_SERVER */
|
||||||
|
;
|
||||||
|
|
||||||
|
type processor_set_array_t = ^array[] of processor_set_t;
|
||||||
|
|
||||||
|
type processor_set_name_t = mach_port_t
|
||||||
|
#if KERNEL_SERVER
|
||||||
|
intran: processor_set_name_t convert_port_to_pset_name(mach_port_t)
|
||||||
|
outtran: mach_port_t convert_pset_name_to_port(processor_set_name_t)
|
||||||
|
destructor: pset_deallocate(processor_set_name_t)
|
||||||
|
#endif /* KERNEL_SERVER */
|
||||||
|
;
|
||||||
|
|
||||||
|
type processor_set_name_array_t = ^array[] of processor_set_name_t;
|
||||||
|
|
||||||
|
/* processor_set_info_t: variable-size inline array
|
||||||
|
* that can hold:
|
||||||
|
* processor_set_basic_info (5 ints)
|
||||||
|
* processor_set_load_info (4 ints)
|
||||||
|
* policy_timeshare_base_t (1 int)
|
||||||
|
* policy_fifo_base_t (1 int)
|
||||||
|
* policy_rr_base_t (1 int)
|
||||||
|
* policy_timeshare_base_t (1 int)
|
||||||
|
* policy_fifo_base_t (1 int)
|
||||||
|
* policy_rr_base_t (1 int)
|
||||||
|
* policy_t (1 int)
|
||||||
|
* If other flavors are added, this definition may
|
||||||
|
* need to be changed. (see mach/processor.h) */
|
||||||
|
type processor_set_flavor_t = int;
|
||||||
|
type processor_set_info_t = array[*:5] of integer_t;
|
||||||
|
|
||||||
|
type bootstrap_t = mach_port_t;
|
||||||
|
|
||||||
|
type kernel_version_t = c_string[*:512];
|
||||||
|
type kernel_boot_info_t = c_string[*:4096];
|
||||||
|
|
||||||
|
type time_value_t = struct[2] of integer_t;
|
||||||
|
|
||||||
|
type mach_port_qos_t = struct[2] of integer_t;
|
||||||
|
|
||||||
|
type mach_port_options_t = struct[3] of uint64_t;
|
||||||
|
type mach_port_options_ptr_t = ^ mach_port_options_t;
|
||||||
|
|
||||||
|
type emulation_vector_t = ^array[] of vm_offset_t;
|
||||||
|
|
||||||
|
type inline_existence_map_t = array[*:512] of char;
|
||||||
|
|
||||||
|
type policy_t = int;
|
||||||
|
/* policy_info_t: variable-size inline array. Can hold:
|
||||||
|
* policy_timeshare_info_t (5 ints)
|
||||||
|
* policy_fifo_info_t (4 ints)
|
||||||
|
* policy_rr_info_t (5 ints) */
|
||||||
|
type policy_base_t = array[*:5] of integer_t;
|
||||||
|
type policy_info_t = array[*:2] of integer_t;
|
||||||
|
type policy_limit_t = array[*:1] of integer_t;
|
||||||
|
|
||||||
|
type ledger_t = mach_port_t
|
||||||
|
#if KERNEL_SERVER
|
||||||
|
intran: ledger_t convert_port_to_ledger(mach_port_t)
|
||||||
|
outtran: mach_port_t convert_ledger_to_port(ledger_t)
|
||||||
|
#endif /* KERNEL_SERVER */
|
||||||
|
;
|
||||||
|
|
||||||
|
type ledger_array_t = ^array[] of ledger_t;
|
||||||
|
type ledger_item_t = integer_t;
|
||||||
|
/* DEPRECATED */
|
||||||
|
|
||||||
|
type ledger_amount_t = int64_t;
|
||||||
|
|
||||||
|
type security_token_t = struct[2] of uint32_t;
|
||||||
|
type audit_token_t = struct[8] of uint32_t;
|
||||||
|
|
||||||
|
type msg_labels_t = mach_port_t;
|
||||||
|
|
||||||
|
/* memory_object_info_t: variable-size inline array:
|
||||||
|
* memory_object_attr_info_t (5 ints)
|
||||||
|
* XXX actually it's 6 ints temporarily (object_ready!)
|
||||||
|
* memory_object_behave_info_t (4 ints)
|
||||||
|
* memory_object_perf_info_t (2 ints)
|
||||||
|
* old_memory_object_attr_info_t (3 ints)
|
||||||
|
* If other flavors are added, this definition may
|
||||||
|
* need to be changed. (see mach/memory_object.h) */
|
||||||
|
type memory_object_flavor_t = int;
|
||||||
|
type memory_object_info_t = array[*:6] of int;
|
||||||
|
|
||||||
|
/* vm_region_info_t: variable-size inline array that can hold:
|
||||||
|
* vm_region_basic_info_t (8 ints)
|
||||||
|
* If other flavors are added, this definition may
|
||||||
|
* need to be changed. (see mach/vm_region.h) */
|
||||||
|
type vm_region_flavor_t = int;
|
||||||
|
type vm_region_info_t = array[*:10] of int;
|
||||||
|
type vm_region_recurse_info_t = array[*:19] of int;
|
||||||
|
|
||||||
|
type vm_page_info_flavor_t = int;
|
||||||
|
type vm_page_info_t = array[*:32] of int;
|
||||||
|
|
||||||
|
type mach_vm_read_entry_t = array[512] of mach_vm_offset_t;
|
||||||
|
type vm_read_entry_t = array[512] of vm_offset_t;
|
||||||
|
#ifdef VM32_SUPPORT
|
||||||
|
type vm32_read_entry_t = array[512] of vm32_offset_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
type exception_mask_t = int;
|
||||||
|
type exception_behavior_t = int;
|
||||||
|
|
||||||
|
type exception_handler_t = mach_port_t;
|
||||||
|
|
||||||
|
type exception_handler_array_t =
|
||||||
|
array[*:32] of exception_handler_t;
|
||||||
|
|
||||||
|
type exception_behavior_array_t =
|
||||||
|
array[*:32] of exception_behavior_t;
|
||||||
|
|
||||||
|
type exception_flavor_array_t =
|
||||||
|
array[*:32] of thread_state_flavor_t;
|
||||||
|
|
||||||
|
type exception_mask_array_t =
|
||||||
|
array[*:32] of exception_mask_t;
|
||||||
|
|
||||||
|
type semaphore_t = mach_port_t
|
||||||
|
#if KERNEL_SERVER
|
||||||
|
intran: semaphore_t convert_port_to_semaphore(mach_port_t)
|
||||||
|
outtran: mach_port_t convert_semaphore_to_port(semaphore_t)
|
||||||
|
destructor: semaphore_dereference(semaphore_t)
|
||||||
|
#endif /* KERNEL_SERVER */
|
||||||
|
;
|
||||||
|
|
||||||
|
type semaphore_consume_ref_t = mach_port_move_send_t
|
||||||
|
cusertype: semaphore_t
|
||||||
|
#if KERNEL_SERVER
|
||||||
|
intran: semaphore_t convert_port_to_semaphore(mach_port_t)
|
||||||
|
outtran: mach_port_t convert_semaphore_to_port(semaphore_t)
|
||||||
|
#endif /* KERNEL_SERVER */
|
||||||
|
;
|
||||||
|
|
||||||
|
type lock_set_t = mach_port_t
|
||||||
|
#if KERNEL_SERVER
|
||||||
|
intran: lock_set_t convert_port_to_lock_set(mach_port_t)
|
||||||
|
outtran: mach_port_t convert_lock_set_to_port(lock_set_t)
|
||||||
|
destructor: lock_set_dereference(lock_set_t)
|
||||||
|
#endif /* KERNEL_SERVER */
|
||||||
|
;
|
||||||
|
|
||||||
|
type task_suspension_token_t = mach_port_move_send_once_t
|
||||||
|
#if KERNEL_SERVER
|
||||||
|
intran: task_suspension_token_t convert_port_to_task_suspension_token(mach_port_t)
|
||||||
|
outtran: mach_port_t convert_task_suspension_token_to_port(task_suspension_token_t)
|
||||||
|
#endif /* KERNEL_SERVER */
|
||||||
|
;
|
||||||
|
|
||||||
|
type vfs_path_t = c_string[4096];
|
||||||
|
type nspace_path_t = c_string[1024]; /* 1024 == PATH_MAX */
|
||||||
|
|
||||||
|
/* public voucher types */
|
||||||
|
|
||||||
|
/* Mach voucher object */
|
||||||
|
type mach_voucher_t = mach_port_t;
|
||||||
|
type mach_voucher_name_t = mach_port_name_t;
|
||||||
|
|
||||||
|
type mach_voucher_attr_manager_t = mach_port_t;
|
||||||
|
type mach_voucher_attr_control_t = mach_port_t;
|
||||||
|
|
||||||
|
/* IPC voucher internal object */
|
||||||
|
type ipc_voucher_t = mach_port_t
|
||||||
|
#if KERNEL_SERVER
|
||||||
|
intran: ipc_voucher_t convert_port_to_voucher(mach_port_t)
|
||||||
|
outtran: mach_port_t convert_voucher_to_port(ipc_voucher_t)
|
||||||
|
destructor: ipc_voucher_release(ipc_voucher_t)
|
||||||
|
#endif /* KERNEL_SERVER */
|
||||||
|
;
|
||||||
|
|
||||||
|
/* IPC voucher attribute control internal object */
|
||||||
|
type ipc_voucher_attr_control_t = mach_port_t
|
||||||
|
#if KERNEL_SERVER
|
||||||
|
intran: ipc_voucher_attr_control_t convert_port_to_voucher_attr_control(mach_port_t)
|
||||||
|
outtran: mach_port_t convert_voucher_attr_control_to_port(ipc_voucher_attr_control_t)
|
||||||
|
destructor: ipc_voucher_attr_control_release(ipc_voucher_attr_control_t)
|
||||||
|
#endif /* KERNEL_SERVER */
|
||||||
|
;
|
||||||
|
|
||||||
|
type mach_voucher_attr_key_t = uint32_t;
|
||||||
|
|
||||||
|
type mach_voucher_attr_command_t = uint32_t;
|
||||||
|
type mach_voucher_attr_recipe_command_t = uint32_t;
|
||||||
|
|
||||||
|
type mach_voucher_attr_content_size_t = uint32_t;
|
||||||
|
type mach_voucher_attr_content_t = array[*:4096] of uint8_t;
|
||||||
|
type mach_voucher_attr_content_array_t = array[*:5120] of uint8_t;
|
||||||
|
|
||||||
|
type mach_voucher_attr_raw_recipe_size_t = uint32_t;
|
||||||
|
type mach_voucher_attr_raw_recipe_t = array[*:4096] of uint8_t;
|
||||||
|
type mach_voucher_attr_raw_recipe_array_t = array[*:5120] of uint8_t;
|
||||||
|
|
||||||
|
type mach_voucher_selector_t = uint32_t;
|
||||||
|
|
||||||
|
type mach_voucher_attr_value_handle_t = uint64_t;
|
||||||
|
type mach_voucher_attr_value_handle_array_t = array[*:4] of mach_voucher_attr_value_handle_t;
|
||||||
|
type mach_voucher_attr_value_reference_t = uint32_t;
|
||||||
|
|
||||||
|
/* kernel module loader */
|
||||||
|
type kmod_t = int;
|
||||||
|
type kmod_control_flavor_t = int;
|
||||||
|
|
||||||
|
type kmod_args_t = ^array[] of MACH_MSG_TYPE_BYTE
|
||||||
|
ctype: kmod_args_t;
|
||||||
|
|
||||||
|
type io_master_t = mach_port_t;
|
||||||
|
type UNDServerRef = mach_port_t;
|
||||||
|
|
||||||
|
/* These must be kept in sync with definitions in osfmk/mach/dyld_kernel.h */
|
||||||
|
type dyld_kernel_image_info_t = struct[40] of MACH_MSG_TYPE_BYTE;
|
||||||
|
type dyld_kernel_image_info_array_t = ^array[] of dyld_kernel_image_info_t;
|
||||||
|
type dyld_kernel_process_info_t = struct[64] of MACH_MSG_TYPE_BYTE;
|
||||||
|
|
||||||
|
#if KERNEL_SERVER
|
||||||
|
#ifdef MACH_KERNEL_PRIVATE
|
||||||
|
simport <ipc/ipc_voucher.h>; /* for voucher conversions */
|
||||||
|
simport <kern/ipc_kobject.h>; /* for null conversion */
|
||||||
|
simport <kern/ipc_tt.h>; /* for task/thread conversion */
|
||||||
|
simport <kern/ipc_host.h>; /* for host/processor/pset conversions */
|
||||||
|
simport <kern/ipc_sync.h>; /* for lock_set and semaphore conversions */
|
||||||
|
simport <kern/ledger.h>; /* for ledger conversions */
|
||||||
|
simport <kern/processor.h>; /* for processor conversions */
|
||||||
|
simport <kern/sync_lock.h>; /* for lock-set conversions */
|
||||||
|
simport <kern/sync_sema.h>; /* for semaphore conversions */
|
||||||
|
simport <vm/memory_object.h>; /* for memory object type conversions */
|
||||||
|
simport <vm/vm_map.h>; /* for vm_map conversions */
|
||||||
|
#if CONFIG_ARCADE
|
||||||
|
simport <kern/arcade.h>; /* for arcade_register conversions */
|
||||||
|
#endif
|
||||||
|
#endif /* MACH_KERNEL_PRIVATE */
|
||||||
|
|
||||||
|
simport <kern/ipc_mig.h>; /* pick up kernel-specific MIG things */
|
||||||
|
|
||||||
|
#endif /* KERNEL_SERVER */
|
||||||
|
|
||||||
|
import <mach/mig.h>;
|
||||||
|
import <mach/mach_types.h>;
|
||||||
|
|
||||||
|
#endif /* _MACH_MACH_TYPES_DEFS_ */
|
||||||
|
|
||||||
|
/* vim: set ft=c : */
|
130
third_party/xnu/osfmk/mach/machine/machine_types.defs
vendored
Normal file
130
third_party/xnu/osfmk/mach/machine/machine_types.defs
vendored
Normal file
@ -0,0 +1,130 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2000-2007 Apple Computer, Inc. All rights reserved.
|
||||||
|
*
|
||||||
|
* @APPLE_OSREFERENCE_LICENSE_HEADER_START@
|
||||||
|
*
|
||||||
|
* This file contains Original Code and/or Modifications of Original Code
|
||||||
|
* as defined in and that are subject to the Apple Public Source License
|
||||||
|
* Version 2.0 (the 'License'). You may not use this file except in
|
||||||
|
* compliance with the License. The rights granted to you under the License
|
||||||
|
* may not be used to create, or enable the creation or redistribution of,
|
||||||
|
* unlawful or unlicensed copies of an Apple operating system, or to
|
||||||
|
* circumvent, violate, or enable the circumvention or violation of, any
|
||||||
|
* terms of an Apple operating system software license agreement.
|
||||||
|
*
|
||||||
|
* Please obtain a copy of the License at
|
||||||
|
* http://www.opensource.apple.com/apsl/ and read it before using this file.
|
||||||
|
*
|
||||||
|
* The Original Code and all software distributed under the License are
|
||||||
|
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||||
|
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||||
|
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||||
|
* Please see the License for the specific language governing rights and
|
||||||
|
* limitations under the License.
|
||||||
|
*
|
||||||
|
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
* @OSF_COPYRIGHT@
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Header file for basic, machine-dependent data types. arm+i386 version.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _MACH_MACHINE_MACHNINE_TYPES_DEFS
|
||||||
|
#define _MACH_MACHINE_MACHNINE_TYPES_DEFS
|
||||||
|
|
||||||
|
type short = int16_t;
|
||||||
|
type int = int32_t;
|
||||||
|
type unsigned = uint32_t;
|
||||||
|
|
||||||
|
type float = MACH_MSG_TYPE_REAL_32;
|
||||||
|
type double = MACH_MSG_TYPE_REAL_64;
|
||||||
|
|
||||||
|
|
||||||
|
/* from ISO/IEC 988:1999 spec */
|
||||||
|
/* 7.18.1.4 Integer types capable of hgolding object pointers */
|
||||||
|
/*
|
||||||
|
* The [u]intptr_t types for the native
|
||||||
|
* integer type, e.g. 32 or 64 or.. whatever
|
||||||
|
* register size the machine has. They are
|
||||||
|
* used for entities that might be either
|
||||||
|
* [unsigned] integers or pointers, and for
|
||||||
|
* type-casting between the two.
|
||||||
|
*
|
||||||
|
* For instance, the IPC system represents
|
||||||
|
* a port in user space as an integer and
|
||||||
|
* in kernel space as a pointer.
|
||||||
|
*/
|
||||||
|
#if defined(__LP64__)
|
||||||
|
type uintptr_t = uint64_t;
|
||||||
|
type intptr_t = int64_t;
|
||||||
|
#else
|
||||||
|
type uintptr_t = uint32_t;
|
||||||
|
type intptr_t = int32_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* These are the legacy Mach types that are
|
||||||
|
* the [rough] equivalents of the standards above.
|
||||||
|
* They were defined in terms of int, not
|
||||||
|
* long int, so they remain separate.
|
||||||
|
*/
|
||||||
|
#if defined(__LP64__)
|
||||||
|
type register_t = int64_t;
|
||||||
|
#else
|
||||||
|
type register_t = int32_t;
|
||||||
|
#endif
|
||||||
|
type integer_t = int32_t;
|
||||||
|
type natural_t = uint32_t;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* These are the VM types that scale with the address
|
||||||
|
* space size of a given process.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if defined(__LP64__)
|
||||||
|
type vm_address_t = uint64_t;
|
||||||
|
type vm_offset_t = uint64_t;
|
||||||
|
type vm_size_t = uint64_t;
|
||||||
|
#else
|
||||||
|
type vm_address_t = natural_t;
|
||||||
|
type vm_offset_t = natural_t;
|
||||||
|
type vm_size_t = natural_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* This is a bit of a hack for arm. We implement the backend with a wide type, but present a native-sized type to callers */
|
||||||
|
type mach_port_context_t = uint64_t;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The mach_vm_xxx_t types are sized to hold the
|
||||||
|
* maximum pointer, offset, etc... supported on the
|
||||||
|
* platform.
|
||||||
|
*/
|
||||||
|
type mach_vm_address_t = uint64_t;
|
||||||
|
type mach_vm_offset_t = uint64_t;
|
||||||
|
type mach_vm_size_t = uint64_t;
|
||||||
|
|
||||||
|
#if MACH_IPC_COMPAT
|
||||||
|
/*
|
||||||
|
* For the old IPC interface
|
||||||
|
*/
|
||||||
|
#define MSG_TYPE_PORT_NAME natural_t
|
||||||
|
|
||||||
|
#endif /* MACH_IPC_COMPAT */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* These are types used internal to Mach to implement the
|
||||||
|
* legacy 32-bit VM APIs published by the kernel.
|
||||||
|
*/
|
||||||
|
#define VM32_SUPPORT 1
|
||||||
|
|
||||||
|
type vm32_address_t = uint32_t;
|
||||||
|
type vm32_offset_t = uint32_t;
|
||||||
|
type vm32_size_t = uint32_t;
|
||||||
|
|
||||||
|
#endif /* _MACH_MACHINE_MACHNINE_TYPES_DEFS */
|
||||||
|
|
||||||
|
/* vim: set ft=c : */
|
150
third_party/xnu/osfmk/mach/std_types.defs
vendored
Normal file
150
third_party/xnu/osfmk/mach/std_types.defs
vendored
Normal file
@ -0,0 +1,150 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2002,2000 Apple Computer, Inc. All rights reserved.
|
||||||
|
*
|
||||||
|
* @APPLE_OSREFERENCE_LICENSE_HEADER_START@
|
||||||
|
*
|
||||||
|
* This file contains Original Code and/or Modifications of Original Code
|
||||||
|
* as defined in and that are subject to the Apple Public Source License
|
||||||
|
* Version 2.0 (the 'License'). You may not use this file except in
|
||||||
|
* compliance with the License. The rights granted to you under the License
|
||||||
|
* may not be used to create, or enable the creation or redistribution of,
|
||||||
|
* unlawful or unlicensed copies of an Apple operating system, or to
|
||||||
|
* circumvent, violate, or enable the circumvention or violation of, any
|
||||||
|
* terms of an Apple operating system software license agreement.
|
||||||
|
*
|
||||||
|
* Please obtain a copy of the License at
|
||||||
|
* http://www.opensource.apple.com/apsl/ and read it before using this file.
|
||||||
|
*
|
||||||
|
* The Original Code and all software distributed under the License are
|
||||||
|
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||||
|
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
||||||
|
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
||||||
|
* Please see the License for the specific language governing rights and
|
||||||
|
* limitations under the License.
|
||||||
|
*
|
||||||
|
* @APPLE_OSREFERENCE_LICENSE_HEADER_END@
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
* @OSF_COPYRIGHT@
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
* Mach Operating System
|
||||||
|
* Copyright (c) 1991,1990,1989,1988 Carnegie Mellon University
|
||||||
|
* All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify and distribute this software and its
|
||||||
|
* documentation is hereby granted, provided that both the copyright
|
||||||
|
* notice and this permission notice appear in all copies of the
|
||||||
|
* software, derivative works or modified versions, and any portions
|
||||||
|
* thereof, and that both notices appear in supporting documentation.
|
||||||
|
*
|
||||||
|
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
|
||||||
|
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
|
||||||
|
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||||
|
*
|
||||||
|
* Carnegie Mellon requests users of this software to return to
|
||||||
|
*
|
||||||
|
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
||||||
|
* School of Computer Science
|
||||||
|
* Carnegie Mellon University
|
||||||
|
* Pittsburgh PA 15213-3890
|
||||||
|
*
|
||||||
|
* any improvements or extensions that they make and grant Carnegie Mellon
|
||||||
|
* the rights to redistribute these changes.
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
* Mach kernel standard interface type declarations
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _MACH_STD_TYPES_DEFS_
|
||||||
|
#define _MACH_STD_TYPES_DEFS_
|
||||||
|
|
||||||
|
/* from ISO/IEC 988:1999 spec */
|
||||||
|
/* 7.18.1.1 Exact-width integer types */
|
||||||
|
|
||||||
|
type int8_t = MACH_MSG_TYPE_INTEGER_8;
|
||||||
|
type uint8_t = MACH_MSG_TYPE_INTEGER_8;
|
||||||
|
type int16_t = MACH_MSG_TYPE_INTEGER_16;
|
||||||
|
type uint16_t = MACH_MSG_TYPE_INTEGER_16;
|
||||||
|
type int32_t = MACH_MSG_TYPE_INTEGER_32;
|
||||||
|
type uint32_t = MACH_MSG_TYPE_INTEGER_32;
|
||||||
|
type int64_t = MACH_MSG_TYPE_INTEGER_64;
|
||||||
|
type uint64_t = MACH_MSG_TYPE_INTEGER_64;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Legacy fixed-length Mach types which should
|
||||||
|
* be replaced with the Standard types from above.
|
||||||
|
*/
|
||||||
|
type int32 = int32_t;
|
||||||
|
type unsigned32 = uint32_t;
|
||||||
|
type int64 = int64_t;
|
||||||
|
type unsigned64 = uint64_t;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Other fixed length Mach types.
|
||||||
|
*/
|
||||||
|
type char = MACH_MSG_TYPE_CHAR;
|
||||||
|
type boolean_t = MACH_MSG_TYPE_BOOLEAN;
|
||||||
|
|
||||||
|
#include <mach/machine/machine_types.defs>
|
||||||
|
|
||||||
|
type kern_return_t = int;
|
||||||
|
|
||||||
|
type pointer_t = ^array[] of MACH_MSG_TYPE_BYTE
|
||||||
|
ctype: vm_offset_t;
|
||||||
|
|
||||||
|
|
||||||
|
type mach_port_t = MACH_MSG_TYPE_COPY_SEND;
|
||||||
|
type mach_port_array_t = array[] of mach_port_t;
|
||||||
|
|
||||||
|
type mach_port_name_t = MACH_MSG_TYPE_PORT_NAME;
|
||||||
|
type mach_port_name_array_t = array[] of mach_port_name_t;
|
||||||
|
|
||||||
|
type mach_port_right_t = natural_t;
|
||||||
|
|
||||||
|
type mach_port_type_t = natural_t;
|
||||||
|
type mach_port_type_array_t = array[] of mach_port_type_t;
|
||||||
|
|
||||||
|
type mach_port_urefs_t = natural_t;
|
||||||
|
type mach_port_delta_t = integer_t;
|
||||||
|
type mach_port_seqno_t = natural_t;
|
||||||
|
type mach_port_mscount_t = unsigned;
|
||||||
|
type mach_port_msgcount_t = unsigned;
|
||||||
|
type mach_port_rights_t = unsigned;
|
||||||
|
type mach_msg_id_t = integer_t;
|
||||||
|
type mach_msg_size_t = natural_t;
|
||||||
|
type mach_msg_type_name_t = unsigned;
|
||||||
|
type mach_msg_options_t = integer_t;
|
||||||
|
|
||||||
|
type mach_port_move_receive_t = MACH_MSG_TYPE_MOVE_RECEIVE
|
||||||
|
ctype: mach_port_t;
|
||||||
|
type mach_port_copy_send_t = MACH_MSG_TYPE_COPY_SEND
|
||||||
|
ctype: mach_port_t;
|
||||||
|
type mach_port_make_send_t = MACH_MSG_TYPE_MAKE_SEND
|
||||||
|
ctype: mach_port_t;
|
||||||
|
type mach_port_move_send_t = MACH_MSG_TYPE_MOVE_SEND
|
||||||
|
ctype: mach_port_t;
|
||||||
|
type mach_port_make_send_once_t = MACH_MSG_TYPE_MAKE_SEND_ONCE
|
||||||
|
ctype: mach_port_t;
|
||||||
|
type mach_port_move_send_once_t = MACH_MSG_TYPE_MOVE_SEND_ONCE
|
||||||
|
ctype: mach_port_t;
|
||||||
|
|
||||||
|
type mach_port_receive_t = MACH_MSG_TYPE_PORT_RECEIVE
|
||||||
|
ctype: mach_port_t;
|
||||||
|
type mach_port_send_t = MACH_MSG_TYPE_PORT_SEND
|
||||||
|
ctype: mach_port_t;
|
||||||
|
type mach_port_send_once_t = MACH_MSG_TYPE_PORT_SEND_ONCE
|
||||||
|
ctype: mach_port_t;
|
||||||
|
|
||||||
|
type mach_port_poly_t = polymorphic
|
||||||
|
ctype: mach_port_t;
|
||||||
|
|
||||||
|
import <mach/std_types.h>;
|
||||||
|
import <mach/mig.h>;
|
||||||
|
|
||||||
|
#endif /* _MACH_STD_TYPES_DEFS_ */
|
||||||
|
|
||||||
|
/* vim: set ft=c : */
|
@ -23,16 +23,18 @@ if (crashpad_is_in_chromium) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (crashpad_is_mac || crashpad_is_ios) {
|
if (crashpad_is_mac || crashpad_is_ios) {
|
||||||
if (crashpad_is_mac) {
|
if (crashpad_is_in_chromium || crashpad_is_in_fuchsia) {
|
||||||
if (crashpad_is_in_chromium || crashpad_is_in_fuchsia) {
|
import("//build/config/sysroot.gni")
|
||||||
import("//build/config/sysroot.gni")
|
} else {
|
||||||
} else {
|
import("//third_party/mini_chromium/mini_chromium/build/sysroot.gni")
|
||||||
import("//third_party/mini_chromium/mini_chromium/build/sysroot.gni")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
action_foreach("mig") {
|
action_foreach("mig") {
|
||||||
script = "mach/mig.py"
|
script = "mach/mig.py"
|
||||||
|
inputs = [
|
||||||
|
"mach/mig_fix.py",
|
||||||
|
"mach/mig_gen.py",
|
||||||
|
]
|
||||||
|
|
||||||
if (crashpad_is_mac) {
|
if (crashpad_is_mac) {
|
||||||
sources = [
|
sources = [
|
||||||
@ -43,6 +45,7 @@ if (crashpad_is_mac || crashpad_is_ios) {
|
|||||||
]
|
]
|
||||||
} else if (crashpad_is_ios) {
|
} else if (crashpad_is_ios) {
|
||||||
sources = [
|
sources = [
|
||||||
|
# The iOS SDK doesn’t have any .defs files. Get them directly from xnu.
|
||||||
"../third_party/xnu/osfmk/mach/exc.defs",
|
"../third_party/xnu/osfmk/mach/exc.defs",
|
||||||
"../third_party/xnu/osfmk/mach/mach_exc.defs",
|
"../third_party/xnu/osfmk/mach/mach_exc.defs",
|
||||||
]
|
]
|
||||||
@ -76,7 +79,7 @@ if (crashpad_is_mac || crashpad_is_ios) {
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!crashpad_is_ios && sysroot != "") {
|
if (sysroot != "") {
|
||||||
args += [
|
args += [
|
||||||
"--sdk",
|
"--sdk",
|
||||||
sysroot,
|
sysroot,
|
||||||
@ -86,6 +89,34 @@ if (crashpad_is_mac || crashpad_is_ios) {
|
|||||||
"--include",
|
"--include",
|
||||||
rebase_path("../compat/mac", root_build_dir),
|
rebase_path("../compat/mac", root_build_dir),
|
||||||
]
|
]
|
||||||
|
if (crashpad_is_ios) {
|
||||||
|
args += [
|
||||||
|
# The iOS SDK doesn’t have any .defs files. Get them directly from xnu.
|
||||||
|
"--include",
|
||||||
|
rebase_path("../third_party/xnu/osfmk", root_build_dir),
|
||||||
|
]
|
||||||
|
}
|
||||||
|
if (current_cpu == "x86") {
|
||||||
|
args += [
|
||||||
|
"--arch",
|
||||||
|
"i386",
|
||||||
|
]
|
||||||
|
} else if (current_cpu == "x64") {
|
||||||
|
args += [
|
||||||
|
"--arch",
|
||||||
|
"x86_64",
|
||||||
|
]
|
||||||
|
} else if (current_cpu == "arm") {
|
||||||
|
args += [
|
||||||
|
"--arch",
|
||||||
|
"armv7",
|
||||||
|
]
|
||||||
|
} else if (current_cpu == "arm64") {
|
||||||
|
args += [
|
||||||
|
"--arch",
|
||||||
|
"arm64",
|
||||||
|
]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
source_set("mig_output") {
|
source_set("mig_output") {
|
||||||
|
@ -27,7 +27,7 @@ def main(args):
|
|||||||
parsed.user_h, parsed.server_h)
|
parsed.user_h, parsed.server_h)
|
||||||
mig_gen.generate_interface(parsed.defs, interface, parsed.include,
|
mig_gen.generate_interface(parsed.defs, interface, parsed.include,
|
||||||
parsed.sdk, parsed.clang_path, parsed.mig_path,
|
parsed.sdk, parsed.clang_path, parsed.mig_path,
|
||||||
parsed.migcom_path)
|
parsed.migcom_path, parsed.arch)
|
||||||
mig_fix.fix_interface(interface)
|
mig_fix.fix_interface(interface)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
@ -25,7 +25,7 @@ MigInterface = collections.namedtuple('MigInterface', ['user_c', 'server_c',
|
|||||||
'user_h', 'server_h'])
|
'user_h', 'server_h'])
|
||||||
|
|
||||||
def generate_interface(defs, interface, includes=[], sdk=None, clang_path=None,
|
def generate_interface(defs, interface, includes=[], sdk=None, clang_path=None,
|
||||||
mig_path=None, migcom_path=None):
|
mig_path=None, migcom_path=None, arch=None):
|
||||||
if mig_path is None:
|
if mig_path is None:
|
||||||
mig_path = 'mig'
|
mig_path = 'mig'
|
||||||
command = [mig_path,
|
command = [mig_path,
|
||||||
@ -39,6 +39,8 @@ def generate_interface(defs, interface, includes=[], sdk=None, clang_path=None,
|
|||||||
os.environ['MIGCC'] = clang_path
|
os.environ['MIGCC'] = clang_path
|
||||||
if migcom_path is not None:
|
if migcom_path is not None:
|
||||||
os.environ['MIGCOM'] = migcom_path
|
os.environ['MIGCOM'] = migcom_path
|
||||||
|
if arch is not None:
|
||||||
|
command.extend(['-arch', arch])
|
||||||
if sdk is not None:
|
if sdk is not None:
|
||||||
command.extend(['-isysroot', sdk])
|
command.extend(['-isysroot', sdk])
|
||||||
for include in includes:
|
for include in includes:
|
||||||
@ -51,6 +53,7 @@ def parse_args(args):
|
|||||||
parser.add_argument('--clang-path', help='Path to Clang')
|
parser.add_argument('--clang-path', help='Path to Clang')
|
||||||
parser.add_argument('--mig-path', help='Path to mig')
|
parser.add_argument('--mig-path', help='Path to mig')
|
||||||
parser.add_argument('--migcom-path', help='Path to migcom')
|
parser.add_argument('--migcom-path', help='Path to migcom')
|
||||||
|
parser.add_argument('--arch', help='Target architecture')
|
||||||
parser.add_argument('--sdk', help='Path to SDK')
|
parser.add_argument('--sdk', help='Path to SDK')
|
||||||
parser.add_argument('--include',
|
parser.add_argument('--include',
|
||||||
default=[],
|
default=[],
|
||||||
@ -69,7 +72,7 @@ def main(args):
|
|||||||
parsed.user_h, parsed.server_h)
|
parsed.user_h, parsed.server_h)
|
||||||
generate_interface(parsed.defs, interface, parsed.include,
|
generate_interface(parsed.defs, interface, parsed.include,
|
||||||
parsed.sdk, parsed.clang_path, parsed.mig_path,
|
parsed.sdk, parsed.clang_path, parsed.mig_path,
|
||||||
parsed.migcom_path)
|
parsed.migcom_path, parsed.arch)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
sys.exit(main(sys.argv[1:]))
|
sys.exit(main(sys.argv[1:]))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user