1bb684c34Spatrick //===- MachOStructs.h -------------------------------------------*- C++ -*-===// 2bb684c34Spatrick // 3bb684c34Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4bb684c34Spatrick // See https://llvm.org/LICENSE.txt for license information. 5bb684c34Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6bb684c34Spatrick // 7bb684c34Spatrick //===----------------------------------------------------------------------===// 8bb684c34Spatrick // 9bb684c34Spatrick // This file defines structures used in the MachO object file format. Note that 10bb684c34Spatrick // unlike llvm/BinaryFormat/MachO.h, the structs here are defined in terms of 11bb684c34Spatrick // endian- and alignment-compatibility wrappers. 12bb684c34Spatrick // 13bb684c34Spatrick //===----------------------------------------------------------------------===// 14bb684c34Spatrick 15bb684c34Spatrick #ifndef LLD_MACHO_MACHO_STRUCTS_H 16bb684c34Spatrick #define LLD_MACHO_MACHO_STRUCTS_H 17bb684c34Spatrick 18bb684c34Spatrick #include "llvm/Support/Endian.h" 19bb684c34Spatrick 20*dfe94b16Srobert namespace lld::structs { 21bb684c34Spatrick 22bb684c34Spatrick struct nlist_64 { 23bb684c34Spatrick llvm::support::ulittle32_t n_strx; 24bb684c34Spatrick uint8_t n_type; 25bb684c34Spatrick uint8_t n_sect; 26bb684c34Spatrick llvm::support::ulittle16_t n_desc; 27bb684c34Spatrick llvm::support::ulittle64_t n_value; 28bb684c34Spatrick }; 29bb684c34Spatrick 301cf9926bSpatrick struct nlist { 311cf9926bSpatrick llvm::support::ulittle32_t n_strx; 321cf9926bSpatrick uint8_t n_type; 331cf9926bSpatrick uint8_t n_sect; 341cf9926bSpatrick llvm::support::ulittle16_t n_desc; 351cf9926bSpatrick llvm::support::ulittle32_t n_value; 361cf9926bSpatrick }; 371cf9926bSpatrick 381cf9926bSpatrick struct entry_point_command { 391cf9926bSpatrick llvm::support::ulittle32_t cmd; 401cf9926bSpatrick llvm::support::ulittle32_t cmdsize; 411cf9926bSpatrick llvm::support::ulittle64_t entryoff; 421cf9926bSpatrick llvm::support::ulittle64_t stacksize; 431cf9926bSpatrick }; 441cf9926bSpatrick 45*dfe94b16Srobert } // namespace lld::structs 46bb684c34Spatrick 47bb684c34Spatrick #endif 48