// 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 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_