/* * dmazar: UEFI wrapper for Mach-O definitions * xnu/EXTERNAL_HEADERS/mach-o/loader.h * */ #ifndef _UEFI_MACHO_LOADER_H_ #define _UEFI_MACHO_LOADER_H_ // // Base UEFI types // #include // // From xnu/EXTERNAL_HEADERS/stdint.h: // typedef u_int8_t uint8_t; /* u_int8_t is defined in */ // typedef u_int16_t uint16_t; /* u_int16_t is defined in */ // typedef u_int32_t uint32_t; /* u_int32_t is defined in */ // typedef u_int64_t uint64_t; /* u_int64_t is defined in */ // typedef UINT8 uint8_t; typedef UINT16 uint16_t; typedef UINT32 uint32_t; typedef UINT64 uint64_t; // // From xnu/osfmk/mach/machine.h: // typedef integer_t cpu_type_t; // typedef integer_t cpu_subtype_t; // // From xnu/osfmk/mach/i386/vm_types.h: // typedef int integer_t; // typedef INT32 cpu_type_t; typedef INT32 cpu_subtype_t; // // From xnu/osfmk/mach/vm_prot.h: // typedef int vm_prot_t; typedef INT32 vm_prot_t; // // And finally the xnu/EXTERNAL_HEADERS/mach-o/loader.h // #include "loader.h" // // Additionally, only needed thread state definitions for LC_UNIXTHREAD // are included here to avoid more header files. // // // From xnu/bsd/i386/types.h: // typedef unsigned long long __uint64_t; // typedef UINT64 __uint64_t; // // From xnu/osfmk/mach/i386/_structs.h: // #define _STRUCT_X86_THREAD_STATE32 struct __darwin_i386_thread_state _STRUCT_X86_THREAD_STATE32 { // all fields are unsigned int in xnu rources UINT32 eax; UINT32 ebx; UINT32 ecx; UINT32 edx; UINT32 edi; UINT32 esi; UINT32 ebp; UINT32 esp; UINT32 ss; UINT32 eflags; UINT32 eip; UINT32 cs; UINT32 ds; UINT32 es; UINT32 fs; UINT32 gs; }; #define _STRUCT_X86_THREAD_STATE64 struct __darwin_x86_thread_state64 _STRUCT_X86_THREAD_STATE64 { __uint64_t rax; __uint64_t rbx; __uint64_t rcx; __uint64_t rdx; __uint64_t rdi; __uint64_t rsi; __uint64_t rbp; __uint64_t rsp; __uint64_t r8; __uint64_t r9; __uint64_t r10; __uint64_t r11; __uint64_t r12; __uint64_t r13; __uint64_t r14; __uint64_t r15; __uint64_t rip; __uint64_t rflags; __uint64_t cs; __uint64_t fs; __uint64_t gs; }; // // From xnu/osfmk/mach/i386/thread_status.h: // typedef _STRUCT_X86_THREAD_STATE32 i386_thread_state_t; typedef _STRUCT_X86_THREAD_STATE64 x86_thread_state64_t; #endif /* _UEFI_MACHO_LOADER_H_ */