| // Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| #ifndef RUNTIME_PLATFORM_MACH_O_H_ |
| #define RUNTIME_PLATFORM_MACH_O_H_ |
| |
| #include <platform/globals.h> |
| |
| namespace dart { |
| |
| namespace mach_o { |
| |
| #pragma pack(push, 1) |
| |
| typedef int cpu_type_t; |
| typedef int cpu_subtype_t; |
| typedef int vm_prot_t; |
| |
| struct mach_header { |
| uint32_t magic; |
| cpu_type_t cputype; |
| cpu_subtype_t cpusubtype; |
| uint32_t filetype; |
| uint32_t ncmds; |
| uint32_t sizeofcmds; |
| uint32_t flags; |
| }; |
| |
| static constexpr uint32_t MH_MAGIC = 0xfeedface; |
| static constexpr uint32_t MH_CIGAM = 0xcefaedfe; |
| |
| struct mach_header_64 { |
| uint32_t magic; |
| cpu_type_t cputype; |
| cpu_subtype_t cpusubtype; |
| uint32_t filetype; |
| uint32_t ncmds; |
| uint32_t sizeofcmds; |
| uint32_t flags; |
| uint32_t reserved; |
| }; |
| |
| static constexpr uint32_t MH_MAGIC_64 = 0xfeedfacf; |
| static constexpr uint32_t MH_CIGAM_64 = 0xcffaedfe; |
| |
| struct load_command { |
| uint32_t cmd; |
| uint32_t cmdsize; |
| }; |
| |
| static constexpr uint32_t LC_NOTE = 0x31; |
| struct note_command { |
| uint32_t cmd; |
| uint32_t cmdsize; |
| char data_owner[16]; |
| uint64_t offset; |
| uint64_t size; |
| }; |
| |
| #pragma pack(pop) |
| |
| } // namespace mach_o |
| |
| } // namespace dart |
| |
| #endif // RUNTIME_PLATFORM_MACH_O_H_ |