xref: /openbsd-src/gnu/llvm/lld/MachO/MachOStructs.h (revision dfe94b169149f14cc1aee2cf6dad58a8d9a1860c)
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