Mercurial > hg > CbC > CbC_llvm
view lld/MachO/OutputSegment.h @ 207:2e18cbf3894f
LLVM12
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 08 Jun 2021 06:07:14 +0900 |
parents | 0572611fdcc8 |
children | 5f17cb93ff66 |
line wrap: on
line source
//===- OutputSegment.h ------------------------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #ifndef LLD_MACHO_OUTPUT_SEGMENT_H #define LLD_MACHO_OUTPUT_SEGMENT_H #include "OutputSection.h" #include "lld/Common/LLVM.h" #include <limits> #include <vector> namespace lld { namespace macho { namespace segment_names { constexpr const char dataConst[] = "__DATA_CONST"; constexpr const char dataDirty[] = "__DATA_DIRTY"; constexpr const char data[] = "__DATA"; constexpr const char dwarf[] = "__DWARF"; constexpr const char import[] = "__IMPORT"; constexpr const char ld[] = "__LD"; // output only with -r constexpr const char linkEdit[] = "__LINKEDIT"; constexpr const char llvm[] = "__LLVM"; constexpr const char pageZero[] = "__PAGEZERO"; constexpr const char textExec[] = "__TEXT_EXEC"; constexpr const char text[] = "__TEXT"; } // namespace segment_names class OutputSection; class InputSection; class OutputSegment { public: const OutputSection *firstSection() const { return sections.front(); } const OutputSection *lastSection() const { return sections.back(); } void addOutputSection(OutputSection *os); void sortOutputSections(); const std::vector<OutputSection *> &getSections() const { return sections; } size_t numNonHiddenSections() const; uint64_t fileOff = 0; uint64_t fileSize = 0; uint64_t vmSize = 0; int inputOrder = std::numeric_limits<int>::max(); StringRef name; uint32_t maxProt = 0; uint32_t initProt = 0; uint8_t index; private: std::vector<OutputSection *> sections; }; extern std::vector<OutputSegment *> outputSegments; void sortOutputSegments(); OutputSegment *getOrCreateOutputSegment(StringRef name); } // namespace macho } // namespace lld #endif