LLVM  16.0.0git
MachO.h
Go to the documentation of this file.
1 //===- MachO.h - MachO object file implementation ---------------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 //
9 // This file declares the MachOObjectFile class, which implement the ObjectFile
10 // interface for MachO files.
11 //
12 //===----------------------------------------------------------------------===//
13 
14 #ifndef LLVM_OBJECT_MACHO_H
15 #define LLVM_OBJECT_MACHO_H
16 
17 #include "llvm/ADT/ArrayRef.h"
18 #include "llvm/ADT/SmallString.h"
19 #include "llvm/ADT/SmallVector.h"
20 #include "llvm/ADT/StringExtras.h"
21 #include "llvm/ADT/StringRef.h"
22 #include "llvm/ADT/Triple.h"
27 #include "llvm/Object/Binary.h"
28 #include "llvm/Object/ObjectFile.h"
30 #include "llvm/Support/Error.h"
31 #include "llvm/Support/Format.h"
34 #include <cstdint>
35 #include <memory>
36 #include <string>
37 #include <system_error>
38 
39 namespace llvm {
40 namespace object {
41 
42 /// DiceRef - This is a value type class that represents a single
43 /// data in code entry in the table in a Mach-O object file.
44 class DiceRef {
45  DataRefImpl DicePimpl;
46  const ObjectFile *OwningObject = nullptr;
47 
48 public:
49  DiceRef() = default;
50  DiceRef(DataRefImpl DiceP, const ObjectFile *Owner);
51 
52  bool operator==(const DiceRef &Other) const;
53  bool operator<(const DiceRef &Other) const;
54 
55  void moveNext();
56 
57  std::error_code getOffset(uint32_t &Result) const;
58  std::error_code getLength(uint16_t &Result) const;
59  std::error_code getKind(uint16_t &Result) const;
60 
62  const ObjectFile *getObjectFile() const;
63 };
65 
66 /// ExportEntry encapsulates the current-state-of-the-walk used when doing a
67 /// non-recursive walk of the trie data structure. This allows you to iterate
68 /// across all exported symbols using:
69 /// Error Err = Error::success();
70 /// for (const llvm::object::ExportEntry &AnExport : Obj->exports(&Err)) {
71 /// }
72 /// if (Err) { report error ...
73 class ExportEntry {
74 public:
75  ExportEntry(Error *Err, const MachOObjectFile *O, ArrayRef<uint8_t> Trie);
76 
77  StringRef name() const;
78  uint64_t flags() const;
79  uint64_t address() const;
80  uint64_t other() const;
81  StringRef otherName() const;
82  uint32_t nodeOffset() const;
83 
84  bool operator==(const ExportEntry &) const;
85 
86  void moveNext();
87 
88 private:
89  friend class MachOObjectFile;
90 
91  void moveToFirst();
92  void moveToEnd();
93  uint64_t readULEB128(const uint8_t *&p, const char **error);
94  void pushDownUntilBottom();
95  void pushNode(uint64_t Offset);
96 
97  // Represents a node in the mach-o exports trie.
98  struct NodeState {
99  NodeState(const uint8_t *Ptr);
100 
101  const uint8_t *Start;
102  const uint8_t *Current;
103  uint64_t Flags = 0;
104  uint64_t Address = 0;
105  uint64_t Other = 0;
106  const char *ImportName = nullptr;
107  unsigned ChildCount = 0;
108  unsigned NextChildIndex = 0;
109  unsigned ParentStringLength = 0;
110  bool IsExportNode = false;
111  };
113  using node_iterator = NodeList::const_iterator;
114 
115  Error *E;
116  const MachOObjectFile *O;
117  ArrayRef<uint8_t> Trie;
118  SmallString<256> CumulativeString;
119  NodeList Stack;
120  bool Done = false;
121 
122  iterator_range<node_iterator> nodes() const {
123  return make_range(Stack.begin(), Stack.end());
124  }
125 };
127 
128 // Segment info so SegIndex/SegOffset pairs in a Mach-O Bind or Rebase entry
129 // can be checked and translated. Only the SegIndex/SegOffset pairs from
130 // checked entries are to be used with the segmentName(), sectionName() and
131 // address() methods below.
133 public:
135 
136  // Used to check a Mach-O Bind or Rebase entry for errors when iterating.
137  const char* checkSegAndOffsets(int32_t SegIndex, uint64_t SegOffset,
138  uint8_t PointerSize, uint32_t Count=1,
139  uint32_t Skip=0);
140  // Used with valid SegIndex/SegOffset values from checked entries.
141  StringRef segmentName(int32_t SegIndex);
142  StringRef sectionName(int32_t SegIndex, uint64_t SegOffset);
143  uint64_t address(uint32_t SegIndex, uint64_t SegOffset);
144 
145 private:
146  struct SectionInfo {
147  uint64_t Address;
148  uint64_t Size;
150  StringRef SegmentName;
151  uint64_t OffsetInSegment;
152  uint64_t SegmentStartAddress;
153  int32_t SegmentIndex;
154  };
155  const SectionInfo &findSection(int32_t SegIndex, uint64_t SegOffset);
156 
158  int32_t MaxSegIndex;
159 };
160 
161 /// MachORebaseEntry encapsulates the current state in the decompression of
162 /// rebasing opcodes. This allows you to iterate through the compressed table of
163 /// rebasing using:
164 /// Error Err = Error::success();
165 /// for (const llvm::object::MachORebaseEntry &Entry : Obj->rebaseTable(&Err)) {
166 /// }
167 /// if (Err) { report error ...
169 public:
170  MachORebaseEntry(Error *Err, const MachOObjectFile *O,
171  ArrayRef<uint8_t> opcodes, bool is64Bit);
172 
173  int32_t segmentIndex() const;
174  uint64_t segmentOffset() const;
175  StringRef typeName() const;
176  StringRef segmentName() const;
177  StringRef sectionName() const;
178  uint64_t address() const;
179 
180  bool operator==(const MachORebaseEntry &) const;
181 
182  void moveNext();
183 
184 private:
185  friend class MachOObjectFile;
186 
187  void moveToFirst();
188  void moveToEnd();
189  uint64_t readULEB128(const char **error);
190 
191  Error *E;
192  const MachOObjectFile *O;
193  ArrayRef<uint8_t> Opcodes;
194  const uint8_t *Ptr;
196  int32_t SegmentIndex = -1;
197  uint64_t RemainingLoopCount = 0;
198  uint64_t AdvanceAmount = 0;
199  uint8_t RebaseType = 0;
200  uint8_t PointerSize;
201  bool Done = false;
202 };
204 
205 /// MachOBindEntry encapsulates the current state in the decompression of
206 /// binding opcodes. This allows you to iterate through the compressed table of
207 /// bindings using:
208 /// Error Err = Error::success();
209 /// for (const llvm::object::MachOBindEntry &Entry : Obj->bindTable(&Err)) {
210 /// }
211 /// if (Err) { report error ...
213 public:
214  enum class Kind { Regular, Lazy, Weak };
215 
216  MachOBindEntry(Error *Err, const MachOObjectFile *O,
218 
219  int32_t segmentIndex() const;
220  uint64_t segmentOffset() const;
221  StringRef typeName() const;
222  StringRef symbolName() const;
223  uint32_t flags() const;
224  int64_t addend() const;
225  int ordinal() const;
226 
227  StringRef segmentName() const;
228  StringRef sectionName() const;
229  uint64_t address() const;
230 
231  bool operator==(const MachOBindEntry &) const;
232 
233  void moveNext();
234 
235 private:
236  friend class MachOObjectFile;
237 
238  void moveToFirst();
239  void moveToEnd();
240  uint64_t readULEB128(const char **error);
241  int64_t readSLEB128(const char **error);
242 
243  Error *E;
244  const MachOObjectFile *O;
245  ArrayRef<uint8_t> Opcodes;
246  const uint8_t *Ptr;
248  int32_t SegmentIndex = -1;
250  bool LibraryOrdinalSet = false;
251  int Ordinal = 0;
252  uint32_t Flags = 0;
253  int64_t Addend = 0;
254  uint64_t RemainingLoopCount = 0;
255  uint64_t AdvanceAmount = 0;
256  uint8_t BindType = 0;
257  uint8_t PointerSize;
258  Kind TableKind;
259  bool Done = false;
260 };
262 
263 /// ChainedFixupTarget holds all the information about an external symbol
264 /// necessary to bind this binary to that symbol. These values are referenced
265 /// indirectly by chained fixup binds. This structure captures values from all
266 /// import and symbol formats.
267 ///
268 /// Be aware there are two notions of weak here:
269 /// WeakImport == true
270 /// The associated bind may be set to 0 if this symbol is missing from its
271 /// parent library. This is called a "weak import."
272 /// LibOrdinal == BIND_SPECIAL_DYLIB_WEAK_LOOKUP
273 /// This symbol may be coalesced with other libraries vending the same
274 /// symbol. E.g., C++'s "operator new". This is called a "weak bind."
276 public:
277  ChainedFixupTarget(int LibOrdinal, uint32_t NameOffset, StringRef Symbol,
278  uint64_t Addend, bool WeakImport)
279  : LibOrdinal(LibOrdinal), NameOffset(NameOffset), SymbolName(Symbol),
280  Addend(Addend), WeakImport(WeakImport) {}
281 
282  int libOrdinal() { return LibOrdinal; }
283  uint32_t nameOffset() { return NameOffset; }
284  StringRef symbolName() { return SymbolName; }
285  uint64_t addend() { return Addend; }
286  bool weakImport() { return WeakImport; }
287  bool weakBind() {
288  return LibOrdinal == MachO::BIND_SPECIAL_DYLIB_WEAK_LOOKUP;
289  }
290 
291 private:
292  int LibOrdinal;
293  uint32_t NameOffset;
294  StringRef SymbolName;
295  uint64_t Addend;
296  bool WeakImport;
297 };
298 
302  std::vector<uint16_t> &&PageStarts)
305 
307  uint32_t Offset; // dyld_chained_starts_in_image::seg_info_offset[SegIdx]
309  std::vector<uint16_t> PageStarts; // page_start[] entries, host endianness
310 };
311 
312 /// MachOAbstractFixupEntry is an abstract class representing a fixup in a
313 /// MH_DYLDLINK file. Fixups generally represent rebases and binds. Binds also
314 /// subdivide into additional subtypes (weak, lazy, reexport).
315 ///
316 /// The two concrete subclasses of MachOAbstractFixupEntry are:
317 ///
318 /// MachORebaseBindEntry - for dyld opcode-based tables, including threaded-
319 /// rebase, where rebases are mixed in with other
320 /// bind opcodes.
321 /// MachOChainedFixupEntry - for pointer chains embedded in data pages.
323 public:
325 
326  int32_t segmentIndex() const;
327  uint64_t segmentOffset() const;
328  uint64_t segmentAddress() const;
329  StringRef segmentName() const;
330  StringRef sectionName() const;
331  StringRef typeName() const;
332  StringRef symbolName() const;
333  uint32_t flags() const;
334  int64_t addend() const;
335  int ordinal() const;
336 
337  /// \return the location of this fixup as a VM Address. For the VM
338  /// Address this fixup is pointing to, use pointerValue().
339  uint64_t address() const;
340 
341  /// \return the VM Address pointed to by this fixup. Use
342  /// pointerValue() to compare against other VM Addresses, such as
343  /// section addresses or segment vmaddrs.
344  uint64_t pointerValue() const { return PointerValue; }
345 
346  /// \return the raw "on-disk" representation of the fixup. For
347  /// Threaded rebases and Chained pointers these values are generally
348  /// encoded into various different pointer formats. This value is
349  /// exposed in API for tools that want to display and annotate the
350  /// raw bits.
351  uint64_t rawValue() const { return RawValue; }
352 
353  void moveNext();
354 
355 protected:
359  int32_t SegmentIndex = -1;
361  int32_t Ordinal = 0;
363  int64_t Addend = 0;
366  bool Done = false;
367 
368  void moveToFirst();
369  void moveToEnd();
370 
371  /// \return the vm address of the start of __TEXT segment.
372  uint64_t textAddress() const { return TextAddress; }
373 
374 private:
375  uint64_t TextAddress;
376 };
377 
379 public:
380  enum class FixupKind { Bind, Rebase };
381 
382  MachOChainedFixupEntry(Error *Err, const MachOObjectFile *O, bool Parse);
383 
384  bool operator==(const MachOChainedFixupEntry &) const;
385 
386  bool isBind() const { return Kind == FixupKind::Bind; }
387  bool isRebase() const { return Kind == FixupKind::Rebase; }
388 
389  void moveNext();
390  void moveToFirst();
391  void moveToEnd();
392 
393 private:
394  void findNextPageWithFixups();
395 
396  std::vector<ChainedFixupTarget> FixupTargets;
397  std::vector<ChainedFixupsSegment> Segments;
398  ArrayRef<uint8_t> SegmentData;
399  FixupKind Kind;
400  uint32_t InfoSegIndex = 0; // Index into Segments
401  uint32_t PageIndex = 0; // Index into Segments[InfoSegIdx].PageStarts
402  uint32_t PageOffset = 0; // Page offset of the current fixup
403 };
405 
406 class MachOObjectFile : public ObjectFile {
407 public:
409  const char *Ptr; // Where in memory the load command is.
410  MachO::load_command C; // The command itself.
411  };
414 
416  create(MemoryBufferRef Object, bool IsLittleEndian, bool Is64Bits,
417  uint32_t UniversalCputype = 0, uint32_t UniversalIndex = 0);
418 
419  static bool isMachOPairedReloc(uint64_t RelocType, uint64_t Arch);
420 
421  void moveSymbolNext(DataRefImpl &Symb) const override;
422 
423  uint64_t getNValue(DataRefImpl Sym) const;
424  Expected<StringRef> getSymbolName(DataRefImpl Symb) const override;
425 
426  // MachO specific.
427  Error checkSymbolTable() const;
428 
429  std::error_code getIndirectName(DataRefImpl Symb, StringRef &Res) const;
430  unsigned getSectionType(SectionRef Sec) const;
431 
432  Expected<uint64_t> getSymbolAddress(DataRefImpl Symb) const override;
433  uint32_t getSymbolAlignment(DataRefImpl Symb) const override;
434  uint64_t getCommonSymbolSizeImpl(DataRefImpl Symb) const override;
436  Expected<uint32_t> getSymbolFlags(DataRefImpl Symb) const override;
438  unsigned getSymbolSectionID(SymbolRef Symb) const;
439  unsigned getSectionID(SectionRef Sec) const;
440 
441  void moveSectionNext(DataRefImpl &Sec) const override;
442  Expected<StringRef> getSectionName(DataRefImpl Sec) const override;
443  uint64_t getSectionAddress(DataRefImpl Sec) const override;
444  uint64_t getSectionIndex(DataRefImpl Sec) const override;
445  uint64_t getSectionSize(DataRefImpl Sec) const override;
448  getSectionContents(DataRefImpl Sec) const override;
449  uint64_t getSectionAlignment(DataRefImpl Sec) const override;
450  Expected<SectionRef> getSection(unsigned SectionIndex) const;
452  bool isSectionCompressed(DataRefImpl Sec) const override;
453  bool isSectionText(DataRefImpl Sec) const override;
454  bool isSectionData(DataRefImpl Sec) const override;
455  bool isSectionBSS(DataRefImpl Sec) const override;
456  bool isSectionVirtual(DataRefImpl Sec) const override;
457  bool isSectionBitcode(DataRefImpl Sec) const override;
458  bool isDebugSection(DataRefImpl Sec) const override;
459 
460  /// Return the raw contents of an entire segment.
462  ArrayRef<uint8_t> getSegmentContents(size_t SegmentIndex) const;
463 
464  /// When dsymutil generates the companion file, it strips all unnecessary
465  /// sections (e.g. everything in the _TEXT segment) by omitting their body
466  /// and setting the offset in their corresponding load command to zero.
467  ///
468  /// While the load command itself is valid, reading the section corresponds
469  /// to reading the number of bytes specified in the load command, starting
470  /// from offset 0 (i.e. the Mach-O header at the beginning of the file).
471  bool isSectionStripped(DataRefImpl Sec) const override;
472 
474  relocation_iterator section_rel_end(DataRefImpl Sec) const override;
475 
479  return make_range(extrel_begin(), extrel_end());
480  }
481 
484 
485  void moveRelocationNext(DataRefImpl &Rel) const override;
486  uint64_t getRelocationOffset(DataRefImpl Rel) const override;
487  symbol_iterator getRelocationSymbol(DataRefImpl Rel) const override;
489  uint64_t getRelocationType(DataRefImpl Rel) const override;
491  SmallVectorImpl<char> &Result) const override;
492  uint8_t getRelocationLength(DataRefImpl Rel) const;
493 
494  // MachO specific.
495  std::error_code getLibraryShortNameByIndex(unsigned Index, StringRef &) const;
496  uint32_t getLibraryCount() const;
497 
499 
500  // TODO: Would be useful to have an iterator based version
501  // of the load command interface too.
502 
503  basic_symbol_iterator symbol_begin() const override;
504  basic_symbol_iterator symbol_end() const override;
505 
506  // MachO specific.
507  symbol_iterator getSymbolByIndex(unsigned Index) const;
508  uint64_t getSymbolIndex(DataRefImpl Symb) const;
509 
510  section_iterator section_begin() const override;
511  section_iterator section_end() const override;
512 
513  uint8_t getBytesInAddress() const override;
514 
515  StringRef getFileFormatName() const override;
516  Triple::ArchType getArch() const override;
517  SubtargetFeatures getFeatures() const override { return SubtargetFeatures(); }
518  Triple getArchTriple(const char **McpuDefault = nullptr) const;
519 
521  relocation_iterator section_rel_end(unsigned Index) const;
522 
523  dice_iterator begin_dices() const;
524  dice_iterator end_dices() const;
525 
529 
530  /// For use iterating over all exported symbols.
532 
533  /// For use examining a trie not in a MachOObjectFile.
535  ArrayRef<uint8_t> Trie,
536  const MachOObjectFile *O =
537  nullptr);
538 
539  /// For use iterating over all rebase table entries.
541 
542  /// For use examining rebase opcodes in a MachOObjectFile.
545  ArrayRef<uint8_t> Opcodes,
546  bool is64);
547 
548  /// For use iterating over all bind table entries.
550 
551  /// For iterating over all chained fixups.
553 
554  /// For use iterating over all lazy bind table entries.
556 
557  /// For use iterating over all weak bind table entries.
559 
560  /// For use examining bind opcodes in a MachOObjectFile.
563  ArrayRef<uint8_t> Opcodes,
564  bool is64,
566 
567  // Given a SegIndex, SegOffset, and PointerSize, verify a valid section exists
568  // that fully contains a pointer at that location. Multiple fixups in a bind
569  // (such as with the BIND_OPCODE_DO_BIND_ULEB_TIMES_SKIPPING_ULEB opcode) can
570  // be tested via the Count and Skip parameters.
571  //
572  // This is used by MachOBindEntry::moveNext() to validate a MachOBindEntry.
573  const char *BindEntryCheckSegAndOffsets(int32_t SegIndex, uint64_t SegOffset,
574  uint8_t PointerSize, uint32_t Count=1,
575  uint32_t Skip=0) const {
576  return BindRebaseSectionTable->checkSegAndOffsets(SegIndex, SegOffset,
577  PointerSize, Count, Skip);
578  }
579 
580  // Given a SegIndex, SegOffset, and PointerSize, verify a valid section exists
581  // that fully contains a pointer at that location. Multiple fixups in a rebase
582  // (such as with the REBASE_OPCODE_DO_*_TIMES* opcodes) can be tested via the
583  // Count and Skip parameters.
584  //
585  // This is used by MachORebaseEntry::moveNext() to validate a MachORebaseEntry
586  const char *RebaseEntryCheckSegAndOffsets(int32_t SegIndex,
587  uint64_t SegOffset,
588  uint8_t PointerSize,
589  uint32_t Count=1,
590  uint32_t Skip=0) const {
591  return BindRebaseSectionTable->checkSegAndOffsets(SegIndex, SegOffset,
592  PointerSize, Count, Skip);
593  }
594 
595  /// For use with the SegIndex of a checked Mach-O Bind or Rebase entry to
596  /// get the segment name.
597  StringRef BindRebaseSegmentName(int32_t SegIndex) const {
598  return BindRebaseSectionTable->segmentName(SegIndex);
599  }
600 
601  /// For use with a SegIndex,SegOffset pair from a checked Mach-O Bind or
602  /// Rebase entry to get the section name.
603  StringRef BindRebaseSectionName(uint32_t SegIndex, uint64_t SegOffset) const {
604  return BindRebaseSectionTable->sectionName(SegIndex, SegOffset);
605  }
606 
607  /// For use with a SegIndex,SegOffset pair from a checked Mach-O Bind or
608  /// Rebase entry to get the address.
609  uint64_t BindRebaseAddress(uint32_t SegIndex, uint64_t SegOffset) const {
610  return BindRebaseSectionTable->address(SegIndex, SegOffset);
611  }
612 
613  // In a MachO file, sections have a segment name. This is used in the .o
614  // files. They have a single segment, but this field specifies which segment
615  // a section should be put in the final object.
617 
618  // Names are stored as 16 bytes. These returns the raw 16 bytes without
619  // interpreting them as a C string.
622 
623  // MachO specific Info about relocations.
626  const MachO::any_relocation_info &RE) const;
629  const MachO::any_relocation_info &RE) const;
631  const MachO::any_relocation_info &RE) const;
633  const MachO::any_relocation_info &RE) const;
634  unsigned getAnyRelocationAddress(const MachO::any_relocation_info &RE) const;
635  unsigned getAnyRelocationPCRel(const MachO::any_relocation_info &RE) const;
636  unsigned getAnyRelocationLength(const MachO::any_relocation_info &RE) const;
637  unsigned getAnyRelocationType(const MachO::any_relocation_info &RE) const;
639 
640  // MachO specific structures.
643  MachO::section getSection(const LoadCommandInfo &L, unsigned Index) const;
644  MachO::section_64 getSection64(const LoadCommandInfo &L,unsigned Index) const;
647 
649  getLinkeditDataLoadCommand(const LoadCommandInfo &L) const;
651  getSegmentLoadCommand(const LoadCommandInfo &L) const;
653  getSegment64LoadCommand(const LoadCommandInfo &L) const;
655  getLinkerOptionLoadCommand(const LoadCommandInfo &L) const;
657  getVersionMinLoadCommand(const LoadCommandInfo &L) const;
659  getNoteLoadCommand(const LoadCommandInfo &L) const;
661  getBuildVersionLoadCommand(const LoadCommandInfo &L) const;
663  getBuildToolVersion(unsigned index) const;
665  getDylibIDLoadCommand(const LoadCommandInfo &L) const;
667  getDyldInfoLoadCommand(const LoadCommandInfo &L) const;
669  getDylinkerCommand(const LoadCommandInfo &L) const;
671  getUuidCommand(const LoadCommandInfo &L) const;
673  getRpathCommand(const LoadCommandInfo &L) const;
675  getSourceVersionCommand(const LoadCommandInfo &L) const;
677  getEntryPointCommand(const LoadCommandInfo &L) const;
679  getEncryptionInfoCommand(const LoadCommandInfo &L) const;
681  getEncryptionInfoCommand64(const LoadCommandInfo &L) const;
683  getSubFrameworkCommand(const LoadCommandInfo &L) const;
685  getSubUmbrellaCommand(const LoadCommandInfo &L) const;
687  getSubLibraryCommand(const LoadCommandInfo &L) const;
689  getSubClientCommand(const LoadCommandInfo &L) const;
691  getRoutinesCommand(const LoadCommandInfo &L) const;
693  getRoutinesCommand64(const LoadCommandInfo &L) const;
695  getThreadCommand(const LoadCommandInfo &L) const;
696 
699  const MachO::mach_header &getHeader() const;
700  const MachO::mach_header_64 &getHeader64() const;
701  uint32_t
703  unsigned Index) const;
705  unsigned Index) const;
714  /// If the optional is None, no header was found, but the object was
715  /// well-formed.
717  getChainedFixupsHeader() const;
719 
720  // Note: This is a limited, temporary API, which will be removed when Apple
721  // upstreams their implementation. Please do not rely on this.
724  // Returns the number of sections listed in dyld_chained_starts_in_image, and
725  // a ChainedFixupsSegment for each segment that has fixups.
727  getChainedFixupsSegments() const;
728 
731  ArrayRef<uint8_t> getUuid() const;
732 
734  bool is64Bit() const;
736 
737  static StringRef guessLibraryShortName(StringRef Name, bool &isFramework,
738  StringRef &Suffix);
739 
740  static Triple::ArchType getArch(uint32_t CPUType, uint32_t CPUSubType);
741  static Triple getArchTriple(uint32_t CPUType, uint32_t CPUSubType,
742  const char **McpuDefault = nullptr,
743  const char **ArchFlag = nullptr);
744  static bool isValidArch(StringRef ArchFlag);
746  static Triple getHostArch();
747 
748  bool isRelocatableObject() const override;
749 
751 
754 
755  bool hasPageZeroSegment() const { return HasPageZeroSegment; }
756 
757  static bool classof(const Binary *v) {
758  return v->isMachO();
759  }
760 
761  static uint32_t
763  uint32_t VersionOrSDK = (SDK) ? C.sdk : C.version;
764  return (VersionOrSDK >> 16) & 0xffff;
765  }
766 
767  static uint32_t
769  uint32_t VersionOrSDK = (SDK) ? C.sdk : C.version;
770  return (VersionOrSDK >> 8) & 0xff;
771  }
772 
773  static uint32_t
775  uint32_t VersionOrSDK = (SDK) ? C.sdk : C.version;
776  return VersionOrSDK & 0xff;
777  }
778 
779  static std::string getBuildPlatform(uint32_t platform) {
780  switch (platform) {
781  case MachO::PLATFORM_MACOS: return "macos";
782  case MachO::PLATFORM_IOS: return "ios";
783  case MachO::PLATFORM_TVOS: return "tvos";
784  case MachO::PLATFORM_WATCHOS: return "watchos";
785  case MachO::PLATFORM_BRIDGEOS: return "bridgeos";
786  case MachO::PLATFORM_MACCATALYST: return "macCatalyst";
787  case MachO::PLATFORM_IOSSIMULATOR: return "iossimulator";
788  case MachO::PLATFORM_TVOSSIMULATOR: return "tvossimulator";
789  case MachO::PLATFORM_WATCHOSSIMULATOR: return "watchossimulator";
790  case MachO::PLATFORM_DRIVERKIT: return "driverkit";
791  default:
792  std::string ret;
794  ss << format_hex(platform, 8, true);
795  return ss.str();
796  }
797  }
798 
799  static std::string getBuildTool(uint32_t tools) {
800  switch (tools) {
801  case MachO::TOOL_CLANG: return "clang";
802  case MachO::TOOL_SWIFT: return "swift";
803  case MachO::TOOL_LD: return "ld";
804  default:
805  std::string ret;
807  ss << format_hex(tools, 8, true);
808  return ss.str();
809  }
810  }
811 
812  static std::string getVersionString(uint32_t version) {
813  uint32_t major = (version >> 16) & 0xffff;
814  uint32_t minor = (version >> 8) & 0xff;
815  uint32_t update = version & 0xff;
816 
818  Version = utostr(major) + "." + utostr(minor);
819  if (update != 0)
820  Version += "." + utostr(update);
821  return std::string(std::string(Version.str()));
822  }
823 
824  /// If the input path is a .dSYM bundle (as created by the dsymutil tool),
825  /// return the paths to the object files found in the bundle, otherwise return
826  /// an empty vector. If the path appears to be a .dSYM bundle but no objects
827  /// were found or there was a filesystem error, then return an error.
830 
831 private:
832  MachOObjectFile(MemoryBufferRef Object, bool IsLittleEndian, bool Is64Bits,
833  Error &Err, uint32_t UniversalCputype = 0,
834  uint32_t UniversalIndex = 0);
835 
836  uint64_t getSymbolValueImpl(DataRefImpl Symb) const override;
837 
838  union {
841  };
842  using SectionList = SmallVector<const char*, 1>;
843  SectionList Sections;
844  using LibraryList = SmallVector<const char*, 1>;
845  LibraryList Libraries;
846  LoadCommandList LoadCommands;
847  using LibraryShortName = SmallVector<StringRef, 1>;
848  using BuildToolList = SmallVector<const char*, 1>;
849  BuildToolList BuildTools;
850  mutable LibraryShortName LibrariesShortNames;
851  std::unique_ptr<BindRebaseSegInfo> BindRebaseSectionTable;
852  const char *SymtabLoadCmd = nullptr;
853  const char *DysymtabLoadCmd = nullptr;
854  const char *DataInCodeLoadCmd = nullptr;
855  const char *LinkOptHintsLoadCmd = nullptr;
856  const char *DyldInfoLoadCmd = nullptr;
857  const char *FuncStartsLoadCmd = nullptr;
858  const char *DyldChainedFixupsLoadCmd = nullptr;
859  const char *UuidLoadCmd = nullptr;
860  bool HasPageZeroSegment = false;
861 };
862 
863 /// DiceRef
864 inline DiceRef::DiceRef(DataRefImpl DiceP, const ObjectFile *Owner)
865  : DicePimpl(DiceP) , OwningObject(Owner) {}
866 
867 inline bool DiceRef::operator==(const DiceRef &Other) const {
868  return DicePimpl == Other.DicePimpl;
869 }
870 
871 inline bool DiceRef::operator<(const DiceRef &Other) const {
872  return DicePimpl < Other.DicePimpl;
873 }
874 
875 inline void DiceRef::moveNext() {
877  reinterpret_cast<const MachO::data_in_code_entry *>(DicePimpl.p);
878  DicePimpl.p = reinterpret_cast<uintptr_t>(P + 1);
879 }
880 
881 // Since a Mach-O data in code reference, a DiceRef, can only be created when
882 // the OwningObject ObjectFile is a MachOObjectFile a static_cast<> is used for
883 // the methods that get the values of the fields of the reference.
884 
885 inline std::error_code DiceRef::getOffset(uint32_t &Result) const {
886  const MachOObjectFile *MachOOF =
887  static_cast<const MachOObjectFile *>(OwningObject);
888  MachO::data_in_code_entry Dice = MachOOF->getDice(DicePimpl);
889  Result = Dice.offset;
890  return std::error_code();
891 }
892 
893 inline std::error_code DiceRef::getLength(uint16_t &Result) const {
894  const MachOObjectFile *MachOOF =
895  static_cast<const MachOObjectFile *>(OwningObject);
896  MachO::data_in_code_entry Dice = MachOOF->getDice(DicePimpl);
897  Result = Dice.length;
898  return std::error_code();
899 }
900 
901 inline std::error_code DiceRef::getKind(uint16_t &Result) const {
902  const MachOObjectFile *MachOOF =
903  static_cast<const MachOObjectFile *>(OwningObject);
904  MachO::data_in_code_entry Dice = MachOOF->getDice(DicePimpl);
905  Result = Dice.kind;
906  return std::error_code();
907 }
908 
910  return DicePimpl;
911 }
912 
913 inline const ObjectFile *DiceRef::getObjectFile() const {
914  return OwningObject;
915 }
916 
917 } // end namespace object
918 } // end namespace llvm
919 
920 #endif // LLVM_OBJECT_MACHO_H
llvm::object::MachOObjectFile::getRelocationSymbol
symbol_iterator getRelocationSymbol(DataRefImpl Rel) const override
Definition: MachOObjectFile.cpp:2230
llvm::MachO::sub_library_command
Definition: MachO.h:648
llvm::object::ChainedFixupTarget::weakBind
bool weakBind()
Definition: MachO.h:287
MemoryBuffer.h
llvm::object::MachOObjectFile::getSubUmbrellaCommand
MachO::sub_umbrella_command getSubUmbrellaCommand(const LoadCommandInfo &L) const
Definition: MachOObjectFile.cpp:4721
llvm::object::MachOObjectFile::getPlainRelocationExternal
bool getPlainRelocationExternal(const MachO::any_relocation_info &RE) const
Definition: MachOObjectFile.cpp:4532
llvm::MachO::TOOL_LD
@ TOOL_LD
Definition: MachO.h:512
llvm::MachO::section
Definition: MachO.h:570
llvm::object::MachOObjectFile::getVersionString
static std::string getVersionString(uint32_t version)
Definition: MachO.h:812
llvm::object::MachOAbstractFixupEntry::segmentAddress
uint64_t segmentAddress() const
Definition: MachOObjectFile.cpp:3258
llvm::object::ExportEntry::nodeOffset
uint32_t nodeOffset() const
Definition: MachOObjectFile.cpp:2973
llvm::object::MachOObjectFile::getStringTableData
StringRef getStringTableData() const
Definition: MachOObjectFile.cpp:5249
llvm::MachO::PLATFORM_MACOS
@ PLATFORM_MACOS
Definition: MachO.h:499
llvm::object::Kind
Kind
Definition: COFFModuleDefinition.cpp:31
llvm
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:18
llvm::MachO::PLATFORM_WATCHOSSIMULATOR
@ PLATFORM_WATCHOSSIMULATOR
Definition: MachO.h:507
llvm::object::MachORebaseEntry::address
uint64_t address() const
Definition: MachOObjectFile.cpp:3763
llvm::object::MachOObjectFile::getVersionMinMajor
static uint32_t getVersionMinMajor(MachO::version_min_command &C, bool SDK)
Definition: MachO.h:762
llvm::object::MachOAbstractFixupEntry
MachOAbstractFixupEntry is an abstract class representing a fixup in a MH_DYLDLINK file.
Definition: MachO.h:322
llvm::MachO::any_relocation_info
Definition: MachO.h:996
llvm::make_range
iterator_range< T > make_range(T x, T y)
Convenience function for iterating over sub-ranges.
Definition: iterator_range.h:53
llvm::MachO::sub_umbrella_command
Definition: MachO.h:642
llvm::MachO::data_in_code_entry::length
uint16_t length
Definition: MachO.h:814
llvm::MachO::data_in_code_entry::kind
uint16_t kind
Definition: MachO.h:815
llvm::object::MachOObjectFile::getChainedFixupsLoadCommand
Expected< Optional< MachO::linkedit_data_command > > getChainedFixupsLoadCommand() const
Definition: MachOObjectFile.cpp:4936
llvm::object::MachOObjectFile::getUuidCommand
MachO::uuid_command getUuidCommand(const LoadCommandInfo &L) const
Definition: MachOObjectFile.cpp:4686
llvm::object::MachOObjectFile::getSourceVersionCommand
MachO::source_version_command getSourceVersionCommand(const LoadCommandInfo &L) const
Definition: MachOObjectFile.cpp:4696
llvm::object::MachOObjectFile::fixupTable
iterator_range< fixup_iterator > fixupTable(Error &Err)
For iterating over all chained fixups.
Definition: MachOObjectFile.cpp:4467
llvm::object::MachOObjectFile::getRelocationLength
uint8_t getRelocationLength(DataRefImpl Rel) const
Definition: MachOObjectFile.cpp:2370
llvm::object::MachOChainedFixupEntry::MachOChainedFixupEntry
MachOChainedFixupEntry(Error *Err, const MachOObjectFile *O, bool Parse)
Definition: MachOObjectFile.cpp:3297
return
return
Definition: README.txt:242
llvm::object::MachOAbstractFixupEntry::moveToEnd
void moveToEnd()
Definition: MachOObjectFile.cpp:3293
llvm::object::MachOBindEntry::flags
uint32_t flags() const
Definition: MachOObjectFile.cpp:4297
StringRef.h
llvm::object::MachOObjectFile::findDsymObjectMembers
static Expected< std::vector< std::string > > findDsymObjectMembers(StringRef Path)
If the input path is a .dSYM bundle (as created by the dsymutil tool), return the paths to the object...
Definition: MachOObjectFile.cpp:5303
P
This currently compiles esp xmm0 movsd esp eax eax esp ret We should use not the dag combiner This is because dagcombine2 needs to be able to see through the X86ISD::Wrapper which DAGCombine can t really do The code for turning x load into a single vector load is target independent and should be moved to the dag combiner The code for turning x load into a vector load can only handle a direct load from a global or a direct load from the stack It should be generalized to handle any load from P
Definition: README-SSE.txt:411
llvm::MachO::nlist
Definition: MachO.h:1008
is64Bit
static bool is64Bit(const char *name)
Definition: X86Disassembler.cpp:1018
llvm::object::MachOObjectFile::ReadULEB128s
void ReadULEB128s(uint64_t Index, SmallVectorImpl< uint64_t > &Out) const
Definition: MachOObjectFile.cpp:5259
llvm::object::MachOObjectFile::getRelocationRelocatedSection
section_iterator getRelocationRelocatedSection(relocation_iterator Rel) const
Definition: MachOObjectFile.cpp:2576
llvm::raw_string_ostream
A raw_ostream that writes to an std::string.
Definition: raw_ostream.h:628
llvm::object::MachOObjectFile::getSectionIndex
uint64_t getSectionIndex(DataRefImpl Sec) const override
Definition: MachOObjectFile.cpp:1932
llvm::object::MachOObjectFile::getSectionSize
uint64_t getSectionSize(DataRefImpl Sec) const override
Definition: MachOObjectFile.cpp:1936
llvm::SmallVector< NodeState, 16 >
llvm::object::MachOBindEntry::typeName
StringRef typeName() const
Definition: MachOObjectFile.cpp:4281
llvm::object::MachOAbstractFixupEntry::typeName
StringRef typeName() const
Definition: MachOObjectFile.cpp:3282
llvm::object::BindRebaseSegInfo::sectionName
StringRef sectionName(int32_t SegIndex, uint64_t SegOffset)
Definition: MachOObjectFile.cpp:4425
llvm::object::MachOAbstractFixupEntry::Addend
int64_t Addend
Definition: MachO.h:363
llvm::object::MachOBindEntry::moveNext
void moveNext()
Definition: MachOObjectFile.cpp:3812
tools
The object format emitted by the WebAssembly backed is documented see the home tools
Definition: README.txt:16
llvm::object::MachOBindEntry::segmentName
StringRef segmentName() const
Definition: MachOObjectFile.cpp:4303
llvm::object::MachOAbstractFixupEntry::MachOAbstractFixupEntry
MachOAbstractFixupEntry(Error *Err, const MachOObjectFile *O)
Definition: MachOObjectFile.cpp:3231
llvm::object::MachOObjectFile::isSectionText
bool isSectionText(DataRefImpl Sec) const override
Definition: MachOObjectFile.cpp:2025
llvm::object::MachOObjectFile::getSegmentLoadCommand
MachO::segment_command getSegmentLoadCommand(const LoadCommandInfo &L) const
Definition: MachOObjectFile.cpp:4636
llvm::MachO::rpath_command
Definition: MachO.h:799
llvm::object::MachOObjectFile::getRoutinesCommand
MachO::routines_command getRoutinesCommand(const LoadCommandInfo &L) const
Definition: MachOObjectFile.cpp:4736
Error.h
llvm::object::MachOObjectFile::weakBindTable
iterator_range< bind_iterator > weakBindTable(Error &Err)
For use iterating over all weak bind table entries.
Definition: MachOObjectFile.cpp:4462
llvm::Triple
Triple - Helper class for working with autoconf configuration names.
Definition: Triple.h:44
llvm::object::MachOObjectFile::mapReflectionSectionNameToEnumValue
llvm::binaryformat::Swift5ReflectionSectionKind mapReflectionSectionNameToEnumValue(StringRef SectionName) const override
Definition: MachOObjectFile.cpp:5346
llvm::MachO::PLATFORM_IOS
@ PLATFORM_IOS
Definition: MachO.h:500
llvm::object::MachOAbstractFixupEntry::Ordinal
int32_t Ordinal
Definition: MachO.h:361
llvm::MachO::sub_framework_command
Definition: MachO.h:630
llvm::MachO::data_in_code_entry::offset
uint32_t offset
Definition: MachO.h:813
llvm::object::MachOChainedFixupEntry::FixupKind
FixupKind
Definition: MachO.h:380
llvm::object::MachOObjectFile::isValidArch
static bool isValidArch(StringRef ArchFlag)
Definition: MachOObjectFile.cpp:2836
llvm::object::MachOChainedFixupEntry::moveToEnd
void moveToEnd()
Definition: MachOObjectFile.cpp:3355
llvm::object::DiceRef::moveNext
void moveNext()
Definition: MachO.h:875
llvm::object::MachOObjectFile::LoadCommandInfo
Definition: MachO.h:408
llvm::object::MachOObjectFile::locrel_begin
relocation_iterator locrel_begin() const
Definition: MachOObjectFile.cpp:2200
llvm::object::MachORebaseEntry::operator==
bool operator==(const MachORebaseEntry &) const
Definition: MachOObjectFile.cpp:3767
llvm::MachO::BIND_SPECIAL_DYLIB_WEAK_LOOKUP
@ BIND_SPECIAL_DYLIB_WEAK_LOOKUP
Definition: MachO.h:264
llvm::object::MachOObjectFile::BindRebaseAddress
uint64_t BindRebaseAddress(uint32_t SegIndex, uint64_t SegOffset) const
For use with a SegIndex,SegOffset pair from a checked Mach-O Bind or Rebase entry to get the address.
Definition: MachO.h:609
llvm::object::MachOAbstractFixupEntry::ordinal
int ordinal() const
Definition: MachOObjectFile.cpp:3280
llvm::MachO::PLATFORM_MACCATALYST
@ PLATFORM_MACCATALYST
Definition: MachO.h:504
llvm::object::MachOObjectFile::getAnyRelocationAddress
unsigned getAnyRelocationAddress(const MachO::any_relocation_info &RE) const
Definition: MachOObjectFile.cpp:4554
llvm::MachO::symtab_command
Definition: MachO.h:700
Swift.h
llvm::MachO::build_version_command
Definition: MachO.h:862
llvm::object::MachOBindEntry::segmentOffset
uint64_t segmentOffset() const
Definition: MachOObjectFile.cpp:4279
llvm::object::MachOObjectFile::checkSymbolTable
Error checkSymbolTable() const
Definition: MachOObjectFile.cpp:1689
llvm::object::MachOObjectFile::getFunctionStarts
SmallVector< uint64_t > getFunctionStarts() const
Definition: MachOObjectFile.cpp:5226
llvm::object::MachOChainedFixupEntry::moveNext
void moveNext()
Definition: MachOObjectFile.cpp:3359
llvm::object::ChainedFixupTarget::ChainedFixupTarget
ChainedFixupTarget(int LibOrdinal, uint32_t NameOffset, StringRef Symbol, uint64_t Addend, bool WeakImport)
Definition: MachO.h:277
llvm::object::MachOObjectFile::BindRebaseSegmentName
StringRef BindRebaseSegmentName(int32_t SegIndex) const
For use with the SegIndex of a checked Mach-O Bind or Rebase entry to get the segment name.
Definition: MachO.h:597
llvm::object::MachOObjectFile::getSectionRawName
ArrayRef< char > getSectionRawName(DataRefImpl Sec) const
Definition: MachOObjectFile.cpp:4502
llvm::object::MachOAbstractFixupEntry::SegmentIndex
int32_t SegmentIndex
Definition: MachO.h:359
llvm::object::MachOObjectFile::getDyldInfoLoadCommand
MachO::dyld_info_command getDyldInfoLoadCommand(const LoadCommandInfo &L) const
Definition: MachOObjectFile.cpp:4676
llvm::object::MachOObjectFile::getAnyRelocationPCRel
unsigned getAnyRelocationPCRel(const MachO::any_relocation_info &RE) const
Definition: MachOObjectFile.cpp:4561
llvm::MachO::CPUType
CPUType
Definition: MachO.h:1560
llvm::object::ChainedFixupsSegment::Offset
uint32_t Offset
Definition: MachO.h:307
llvm::MachO::dyld_chained_starts_in_segment
Definition: MachO.h:1081
error
#define error(X)
Definition: SymbolRecordMapping.cpp:14
llvm::object::MachOObjectFile::getBuildPlatform
static std::string getBuildPlatform(uint32_t platform)
Definition: MachO.h:779
ret
to esp esp setne al movzbw ax esp setg cl movzbw cx cmove cx cl jne LBB1_2 esp ret(also really horrible code on ppc). This is due to the expand code for 64-bit compares. GCC produces multiple branches
llvm::object::ChainedFixupTarget
ChainedFixupTarget holds all the information about an external symbol necessary to bind this binary t...
Definition: MachO.h:275
llvm::object::MachOObjectFile::load_command_iterator
LoadCommandList::const_iterator load_command_iterator
Definition: MachO.h:413
Offset
uint64_t Offset
Definition: ELFObjHandler.cpp:79
llvm::object::ChainedFixupsSegment::ChainedFixupsSegment
ChainedFixupsSegment(uint8_t SegIdx, uint32_t Offset, const MachO::dyld_chained_starts_in_segment &Header, std::vector< uint16_t > &&PageStarts)
Definition: MachO.h:300
llvm::object::MachOObjectFile::isSectionStripped
bool isSectionStripped(DataRefImpl Sec) const override
When dsymutil generates the companion file, it strips all unnecessary sections (e....
Definition: MachOObjectFile.cpp:2153
llvm::object::MachOObjectFile::mapDebugSectionName
StringRef mapDebugSectionName(StringRef Name) const override
Maps a debug section name to a standard DWARF section name.
Definition: MachOObjectFile.cpp:5296
llvm::object::MachOObjectFile::getSegmentContents
ArrayRef< uint8_t > getSegmentContents(StringRef SegmentName) const
Return the raw contents of an entire segment.
Definition: MachOObjectFile.cpp:2092
llvm::object::ChainedFixupsSegment::PageStarts
std::vector< uint16_t > PageStarts
Definition: MachO.h:309
llvm::Expected
Tagged union holding either a T or a Error.
Definition: APFloat.h:41
llvm::object::MachOObjectFile::getBuildVersionLoadCommand
MachO::build_version_command getBuildVersionLoadCommand(const LoadCommandInfo &L) const
Definition: MachOObjectFile.cpp:4661
llvm::object::MachOObjectFile::getRelocationSection
section_iterator getRelocationSection(DataRefImpl Rel) const
Definition: MachOObjectFile.cpp:2251
SymbolicFile.h
llvm::object::ExportEntry
ExportEntry encapsulates the current-state-of-the-walk used when doing a non-recursive walk of the tr...
Definition: MachO.h:73
Format.h
llvm::object::MachOObjectFile::getSymbolByIndex
symbol_iterator getSymbolByIndex(unsigned Index) const
Definition: MachOObjectFile.cpp:2606
llvm::object::MachOObjectFile::rebaseTable
iterator_range< rebase_iterator > rebaseTable(Error &Err)
For use iterating over all rebase table entries.
Definition: MachOObjectFile.cpp:3792
llvm::object::MachOObjectFile::classof
static bool classof(const Binary *v)
Definition: MachO.h:757
llvm::object::DiceRef::operator==
bool operator==(const DiceRef &Other) const
Definition: MachO.h:867
p
the resulting code requires compare and branches when and if * p
Definition: README.txt:396
llvm::MemoryBufferRef
Definition: MemoryBufferRef.h:22
llvm::object::MachOObjectFile::getSymbolIndex
uint64_t getSymbolIndex(DataRefImpl Symb) const
Definition: MachOObjectFile.cpp:2618
llvm::object::ChainedFixupsSegment
Definition: MachO.h:299
llvm::MachO::thread_command
Definition: MachO.h:669
llvm::object::MachOAbstractFixupEntry::segmentIndex
int32_t segmentIndex() const
Definition: MachOObjectFile.cpp:3252
llvm::object::MachOObjectFile::getSection
Expected< SectionRef > getSection(unsigned SectionIndex) const
Definition: MachOObjectFile.cpp:2001
llvm::MachO::uuid_command
Definition: MachO.h:793
llvm::object::MachOObjectFile::getDylibIDLoadCommand
MachO::dylib_command getDylibIDLoadCommand(const LoadCommandInfo &L) const
Definition: MachOObjectFile.cpp:4671
llvm::MachO::PLATFORM_IOSSIMULATOR
@ PLATFORM_IOSSIMULATOR
Definition: MachO.h:505
llvm::object::MachOObjectFile::symbol_end
basic_symbol_iterator symbol_end() const override
Definition: MachOObjectFile.cpp:2591
llvm::object::MachOAbstractFixupEntry::moveToFirst
void moveToFirst()
Definition: MachOObjectFile.cpp:3284
llvm::object::MachOChainedFixupEntry
Definition: MachO.h:378
llvm::MachO::dyld_info_command
Definition: MachO.h:878
llvm::object::MachOObjectFile::getIndirectSymbolTableEntry
uint32_t getIndirectSymbolTableEntry(const MachO::dysymtab_command &DLC, unsigned Index) const
Definition: MachOObjectFile.cpp:4792
llvm::object::MachOObjectFile::getSectionContents
ArrayRef< uint8_t > getSectionContents(uint32_t Offset, uint64_t Size) const
Definition: MachOObjectFile.cpp:1965
llvm::object::MachOBindEntry::sectionName
StringRef sectionName() const
Definition: MachOObjectFile.cpp:4309
readULEB128
static uint64_t readULEB128(WasmObjectFile::ReadContext &Ctx)
Definition: WasmObjectFile.cpp:102
llvm::object::ChainedFixupTarget::symbolName
StringRef symbolName()
Definition: MachO.h:284
llvm::object::MachOObjectFile::getSectionAlignment
uint64_t getSectionAlignment(DataRefImpl Sec) const override
Definition: MachOObjectFile.cpp:1988
llvm::object::MachOObjectFile::getLinkOptHintsLoadCommand
MachO::linkedit_data_command getLinkOptHintsLoadCommand() const
Definition: MachOObjectFile.cpp:4865
llvm::MachO::data_in_code_entry
Definition: MachO.h:812
llvm::MachO::sub_client_command
Definition: MachO.h:636
llvm::object::MachOAbstractFixupEntry::E
Error * E
Definition: MachO.h:356
llvm::object::MachOChainedFixupEntry::FixupKind::Bind
@ Bind
llvm::object::MachOObjectFile::getSubFrameworkCommand
MachO::sub_framework_command getSubFrameworkCommand(const LoadCommandInfo &L) const
Definition: MachOObjectFile.cpp:4716
llvm::object::MachOObjectFile::getScatteredRelocationType
uint32_t getScatteredRelocationType(const MachO::any_relocation_info &RE) const
Definition: MachOObjectFile.cpp:4549
SubtargetFeature.h
llvm::object::MachOObjectFile::getSymbolAddress
Expected< uint64_t > getSymbolAddress(DataRefImpl Symb) const override
Definition: MachOObjectFile.cpp:1813
llvm::object::MachOObjectFile::getDysymtabLoadCommand
MachO::dysymtab_command getDysymtabLoadCommand() const
Definition: MachOObjectFile.cpp:4821
llvm::object::MachOObjectFile::getRpathCommand
MachO::rpath_command getRpathCommand(const LoadCommandInfo &L) const
Definition: MachOObjectFile.cpp:4691
llvm::Triple::ArchType
ArchType
Definition: Triple.h:46
llvm::MachO::routines_command
Definition: MachO.h:674
llvm::object::MachOAbstractFixupEntry::Flags
uint32_t Flags
Definition: MachO.h:362
llvm::object::MachOObjectFile::getVersionMinLoadCommand
MachO::version_min_command getVersionMinLoadCommand(const LoadCommandInfo &L) const
Definition: MachOObjectFile.cpp:4651
llvm::object::BindRebaseSegInfo::checkSegAndOffsets
const char * checkSegAndOffsets(int32_t SegIndex, uint64_t SegOffset, uint8_t PointerSize, uint32_t Count=1, uint32_t Skip=0)
Definition: MachOObjectFile.cpp:4366
llvm::object::MachOAbstractFixupEntry::textAddress
uint64_t textAddress() const
Definition: MachO.h:372
SmallString.h
E
static GCRegistry::Add< CoreCLRGC > E("coreclr", "CoreCLR-compatible GC")
llvm::object::MachOObjectFile::isSectionCompressed
bool isSectionCompressed(DataRefImpl Sec) const override
Definition: MachOObjectFile.cpp:2021
llvm::object::ChainedFixupTarget::libOrdinal
int libOrdinal()
Definition: MachO.h:282
llvm::object::MachORebaseEntry::sectionName
StringRef sectionName() const
Definition: MachOObjectFile.cpp:3757
llvm::AMDGPU::CPol::DLC
@ DLC
Definition: SIDefines.h:306
llvm::object::MachOObjectFile::getLinkeditDataLoadCommand
MachO::linkedit_data_command getLinkeditDataLoadCommand(const LoadCommandInfo &L) const
Definition: MachOObjectFile.cpp:4631
C
(vector float) vec_cmpeq(*A, *B) C
Definition: README_ALTIVEC.txt:86
llvm::object::MachOAbstractFixupEntry::rawValue
uint64_t rawValue() const
Definition: MachO.h:351
llvm::object::MachOObjectFile::LoadCommandInfo::C
MachO::load_command C
Definition: MachO.h:410
llvm::object::MachOObjectFile::getBuildTool
static std::string getBuildTool(uint32_t tools)
Definition: MachO.h:799
llvm::object::MachOAbstractFixupEntry::O
const MachOObjectFile * O
Definition: MachO.h:357
llvm::object::MachOObjectFile::getBuildToolVersion
MachO::build_tool_version getBuildToolVersion(unsigned index) const
Definition: MachOObjectFile.cpp:4666
llvm::object::MachOObjectFile::getUuid
ArrayRef< uint8_t > getUuid() const
Definition: MachOObjectFile.cpp:5241
llvm::object::MachOAbstractFixupEntry::addend
int64_t addend() const
Definition: MachOObjectFile.cpp:3276
llvm::object::MachOObjectFile::getDyldInfoLazyBindOpcodes
ArrayRef< uint8_t > getDyldInfoLazyBindOpcodes() const
Definition: MachOObjectFile.cpp:4921
llvm::SubtargetFeatures
Manages the enabling and disabling of subtarget specific features.
Definition: SubtargetFeature.h:180
llvm::object::MachOObjectFile::getRelocation
MachO::any_relocation_info getRelocation(DataRefImpl Rel) const
Definition: MachOObjectFile.cpp:4751
llvm::MachO::source_version_command
Definition: MachO.h:818
llvm::dwarf::Index
Index
Definition: Dwarf.h:472
NodeList
Definition: MicrosoftDemangle.cpp:37
llvm::object::DiceRef::getLength
std::error_code getLength(uint16_t &Result) const
Definition: MachO.h:893
llvm::object::MachOObjectFile::getRelocationOffset
uint64_t getRelocationOffset(DataRefImpl Rel) const override
Definition: MachOObjectFile.cpp:2221
llvm::MachO::linkedit_data_command
Definition: MachO.h:805
llvm::object::MachOBindEntry::operator==
bool operator==(const MachOBindEntry &) const
Definition: MachOObjectFile.cpp:4319
llvm::object::DiceRef::getObjectFile
const ObjectFile * getObjectFile() const
Definition: MachO.h:913
llvm::object::MachOObjectFile::getSymbolSectionID
unsigned getSymbolSectionID(SymbolRef Symb) const
Definition: MachOObjectFile.cpp:1911
llvm::object::MachOObjectFile::isSectionVirtual
bool isSectionVirtual(DataRefImpl Sec) const override
Definition: MachOObjectFile.cpp:2139
llvm::AMDGPU::ElfNote::SectionName
const char SectionName[]
Definition: AMDGPUPTNote.h:24
llvm::object::BindRebaseSegInfo::address
uint64_t address(uint32_t SegIndex, uint64_t SegOffset)
Definition: MachOObjectFile.cpp:4432
llvm::object::MachOObjectFile::moveRelocationNext
void moveRelocationNext(DataRefImpl &Rel) const override
Definition: MachOObjectFile.cpp:2217
llvm::object::DataRefImpl::p
uintptr_t p
Definition: SymbolicFile.h:41
llvm::IndexedInstrProf::Version
const uint64_t Version
Definition: InstrProf.h:1056
llvm::object::ChainedFixupTarget::weakImport
bool weakImport()
Definition: MachO.h:286
llvm::MachO::BindType
BindType
Definition: MachO.h:254
llvm::object::MachOObjectFile::getDataInCodeLoadCommand
MachO::linkedit_data_command getDataInCodeLoadCommand() const
Definition: MachOObjectFile.cpp:4851
llvm::object::MachOAbstractFixupEntry::sectionName
StringRef sectionName() const
Definition: MachOObjectFile.cpp:3266
llvm::object::MachOObjectFile::create
static Expected< std::unique_ptr< MachOObjectFile > > create(MemoryBufferRef Object, bool IsLittleEndian, bool Is64Bits, uint32_t UniversalCputype=0, uint32_t UniversalIndex=0)
Definition: MachOObjectFile.cpp:1249
llvm::object::MachOAbstractFixupEntry::PointerValue
uint64_t PointerValue
Definition: MachO.h:364
llvm::object::MachORebaseEntry::segmentName
StringRef segmentName() const
Definition: MachOObjectFile.cpp:3751
llvm::object::MachOBindEntry::Kind::Lazy
@ Lazy
llvm::object::MachOAbstractFixupEntry::pointerValue
uint64_t pointerValue() const
Definition: MachO.h:344
llvm::object::MachOChainedFixupEntry::FixupKind::Rebase
@ Rebase
llvm::SmallString< 256 >
llvm::object::MachOAbstractFixupEntry::address
uint64_t address() const
Definition: MachOObjectFile.cpp:3270
llvm::object::MachOObjectFile::getCommonSymbolSizeImpl
uint64_t getCommonSymbolSizeImpl(DataRefImpl Symb) const override
Definition: MachOObjectFile.cpp:1826
llvm::object::MachOObjectFile::getSectionRawFinalSegmentName
ArrayRef< char > getSectionRawFinalSegmentName(DataRefImpl Sec) const
Definition: MachOObjectFile.cpp:4510
llvm::object::MachOObjectFile::getSection64
MachO::section_64 getSection64(DataRefImpl DRI) const
Definition: MachOObjectFile.cpp:4601
llvm::object::ExportEntry::operator==
bool operator==(const ExportEntry &) const
Definition: MachOObjectFile.cpp:2923
llvm::object::SectionRef
This is a value type class that represents a single section in the list of sections in the object fil...
Definition: ObjectFile.h:80
llvm::object::MachOObjectFile
Definition: MachO.h:406
llvm::MachO::mach_header_64
Definition: MachO.h:526
llvm::object::MachOObjectFile::getDyldInfoWeakBindOpcodes
ArrayRef< uint8_t > getDyldInfoWeakBindOpcodes() const
Definition: MachOObjectFile.cpp:4907
llvm::object::ExportEntry::moveNext
void moveNext()
Definition: MachOObjectFile.cpp:3183
llvm::binaryformat::Swift5ReflectionSectionKind
Swift5ReflectionSectionKind
Definition: Swift.h:14
llvm::object::MachOObjectFile::getSectionType
unsigned getSectionType(SectionRef Sec) const
Definition: MachOObjectFile.cpp:1778
llvm::object::MachOObjectFile::getEntryPointCommand
MachO::entry_point_command getEntryPointCommand(const LoadCommandInfo &L) const
Definition: MachOObjectFile.cpp:4701
llvm::object::MachOObjectFile::getSectionID
unsigned getSectionID(SectionRef Sec) const
Definition: MachOObjectFile.cpp:2135
llvm::object::MachOObjectFile::LoadCommandList
SmallVector< LoadCommandInfo, 4 > LoadCommandList
Definition: MachO.h:412
llvm::object::MachOObjectFile::getFeatures
SubtargetFeatures getFeatures() const override
Definition: MachO.h:517
llvm::object::MachOObjectFile::getPlainRelocationSymbolNum
unsigned getPlainRelocationSymbolNum(const MachO::any_relocation_info &RE) const
Definition: MachOObjectFile.cpp:4525
llvm::object::MachOObjectFile::getDylinkerCommand
MachO::dylinker_command getDylinkerCommand(const LoadCommandInfo &L) const
Definition: MachOObjectFile.cpp:4681
llvm::MachO::dylib_command
Definition: MachO.h:624
llvm::RISCVFenceField::O
@ O
Definition: RISCVBaseInfo.h:264
llvm::object::MachOObjectFile::is64Bit
bool is64Bit() const
Definition: MachOObjectFile.cpp:5254
llvm::MachO::note_command
Definition: MachO.h:849
object
bar al al movzbl eax ret Missed when stored in a memory object
Definition: README.txt:1411
llvm::object::MachOObjectFile::getNoteLoadCommand
MachO::note_command getNoteLoadCommand(const LoadCommandInfo &L) const
Definition: MachOObjectFile.cpp:4656
index
splat index
Definition: README_ALTIVEC.txt:181
llvm::object::MachOObjectFile::getSymbol64TableEntry
MachO::nlist_64 getSymbol64TableEntry(DataRefImpl DRI) const
Definition: MachOObjectFile.cpp:4625
uint64_t
llvm::object::symbol_iterator
Definition: ObjectFile.h:207
llvm::object::MachOAbstractFixupEntry::RawValue
uint64_t RawValue
Definition: MachO.h:365
llvm::object::MachOObjectFile::external_relocations
iterator_range< relocation_iterator > external_relocations() const
Definition: MachO.h:478
llvm::object::MachOObjectFile::LoadCommandInfo::Ptr
const char * Ptr
Definition: MachO.h:409
llvm::object::MachOObjectFile::isSectionBitcode
bool isSectionBitcode(DataRefImpl Sec) const override
Definition: MachOObjectFile.cpp:2146
llvm::object::MachOObjectFile::BindEntryCheckSegAndOffsets
const char * BindEntryCheckSegAndOffsets(int32_t SegIndex, uint64_t SegOffset, uint8_t PointerSize, uint32_t Count=1, uint32_t Skip=0) const
Definition: MachO.h:573
llvm::object::MachOObjectFile::getChainedFixupsSegments
Expected< std::pair< size_t, std::vector< ChainedFixupsSegment > > > getChainedFixupsSegments() const
Definition: MachOObjectFile.cpp:5006
llvm::MachO::build_tool_version
Definition: MachO.h:857
llvm::object::MachOObjectFile::getSymbolType
Expected< SymbolRef::Type > getSymbolType(DataRefImpl Symb) const override
Definition: MachOObjectFile.cpp:1831
llvm::object::MachOObjectFile::symbol_begin
basic_symbol_iterator symbol_begin() const override
Definition: MachOObjectFile.cpp:2582
llvm::object::MachOObjectFile::getDyldChainedFixupTargets
Expected< std::vector< ChainedFixupTarget > > getDyldChainedFixupTargets() const
Definition: MachOObjectFile.cpp:5115
llvm::object::MachORebaseEntry::MachORebaseEntry
MachORebaseEntry(Error *Err, const MachOObjectFile *O, ArrayRef< uint8_t > opcodes, bool is64Bit)
Definition: MachOObjectFile.cpp:3459
llvm::object::MachOObjectFile::getRoutinesCommand64
MachO::routines_command_64 getRoutinesCommand64(const LoadCommandInfo &L) const
Definition: MachOObjectFile.cpp:4741
StringExtras.h
llvm::object::MachOObjectFile::getDice
MachO::data_in_code_entry getDice(DataRefImpl Rel) const
Definition: MachOObjectFile.cpp:4778
llvm::object::MachOObjectFile::end_load_commands
load_command_iterator end_load_commands() const
Definition: MachOObjectFile.cpp:4486
llvm::object::MachOObjectFile::getVersionMinMinor
static uint32_t getVersionMinMinor(MachO::version_min_command &C, bool SDK)
Definition: MachO.h:768
ArrayRef.h
llvm::object::MachOObjectFile::getArchTriple
Triple getArchTriple(const char **McpuDefault=nullptr) const
llvm::MachO::PLATFORM_BRIDGEOS
@ PLATFORM_BRIDGEOS
Definition: MachO.h:503
llvm::MachO::linker_option_command
Definition: MachO.h:893
llvm::object::ExportEntry::other
uint64_t other() const
Definition: MachOObjectFile.cpp:2962
llvm::MachO::RebaseType
RebaseType
Definition: MachO.h:234
llvm::SmallVectorImpl< NodeState >::const_iterator
typename SuperClass::const_iterator const_iterator
Definition: SmallVector.h:564
llvm::object::MachOObjectFile::section_end
section_iterator section_end() const override
Definition: MachOObjectFile.cpp:2635
ObjectFile.h
llvm::object::MachOObjectFile::getLibraryShortNameByIndex
std::error_code getLibraryShortNameByIndex(unsigned Index, StringRef &) const
Definition: MachOObjectFile.cpp:2537
llvm::object::content_iterator
Definition: SymbolicFile.h:69
llvm::MachO::segment_command
Definition: MachO.h:542
llvm::object::MachOAbstractFixupEntry::SymbolName
StringRef SymbolName
Definition: MachO.h:360
Ptr
@ Ptr
Definition: TargetLibraryInfo.cpp:60
llvm::MachO::TOOL_CLANG
@ TOOL_CLANG
Definition: MachO.h:512
llvm::object::MachOObjectFile::getDyldInfoRebaseOpcodes
ArrayRef< uint8_t > getDyldInfoRebaseOpcodes() const
Definition: MachOObjectFile.cpp:4879
iterator_range.h
llvm::MachO::dylinker_command
Definition: MachO.h:663
llvm::object::DiceRef
DiceRef - This is a value type class that represents a single data in code entry in the table in a Ma...
Definition: MachO.h:44
llvm::object::DiceRef::getRawDataRefImpl
DataRefImpl getRawDataRefImpl() const
Definition: MachO.h:909
llvm::object::MachOAbstractFixupEntry::segmentName
StringRef segmentName() const
Definition: MachOObjectFile.cpp:3262
llvm::object::MachOObjectFile::getScatteredRelocationScattered
bool getScatteredRelocationScattered(const MachO::any_relocation_info &RE) const
Definition: MachOObjectFile.cpp:4539
llvm::object::MachOObjectFile::getDyldInfoBindOpcodes
ArrayRef< uint8_t > getDyldInfoBindOpcodes() const
Definition: MachOObjectFile.cpp:4893
llvm::object::MachOObjectFile::getDataInCodeTableEntry
MachO::data_in_code_entry getDataInCodeTableEntry(uint32_t DataOffset, unsigned Index) const
Definition: MachOObjectFile.cpp:4800
Triple.h
llvm::object::MachOObjectFile::getArch
Triple::ArchType getArch() const override
llvm::object::DiceRef::getKind
std::error_code getKind(uint16_t &Result) const
Definition: MachO.h:901
llvm::object::MachOObjectFile::begin_load_commands
load_command_iterator begin_load_commands() const
Definition: MachOObjectFile.cpp:4481
llvm::MachO::load_command
Definition: MachO.h:537
llvm::object::BindRebaseSegInfo::segmentName
StringRef segmentName(int32_t SegIndex)
Definition: MachOObjectFile.cpp:4399
llvm::object::MachOObjectFile::extrel_begin
relocation_iterator extrel_begin() const
Definition: MachOObjectFile.cpp:2183
llvm::object::MachOAbstractFixupEntry::symbolName
StringRef symbolName() const
Definition: MachOObjectFile.cpp:3274
llvm::ArrayRef< uint8_t >
llvm::object::MachORebaseEntry::moveNext
void moveNext()
Definition: MachOObjectFile.cpp:3475
llvm::object::MachOObjectFile::getAnyRelocationSection
SectionRef getAnyRelocationSection(const MachO::any_relocation_info &RE) const
Definition: MachOObjectFile.cpp:4584
llvm::object::MachOObjectFile::getSymbolSection
Expected< section_iterator > getSymbolSection(DataRefImpl Symb) const override
Definition: MachOObjectFile.cpp:1896
llvm::StringRef
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:50
llvm::object::ObjectFile
This class is the base class for all object file types.
Definition: ObjectFile.h:228
llvm::object::Binary
Definition: Binary.h:32
SegmentOffset
static Constant * SegmentOffset(IRBuilderBase &IRB, int Offset, unsigned AddressSpace)
Definition: X86ISelLowering.cpp:2886
llvm::object::DiceRef::getOffset
std::error_code getOffset(uint32_t &Result) const
Definition: MachO.h:885
llvm::object::MachOObjectFile::isMachOPairedReloc
static bool isMachOPairedReloc(uint64_t RelocType, uint64_t Arch)
Definition: MachOObjectFile.cpp:5357
uint32_t
llvm::object::ExportEntry::address
uint64_t address() const
Definition: MachOObjectFile.cpp:2958
llvm::MachO::segment_command_64
Definition: MachO.h:556
llvm::object::MachOObjectFile::exports
iterator_range< export_iterator > exports(Error &Err) const
For use iterating over all exported symbols.
Definition: MachOObjectFile.cpp:3227
llvm::object::MachOChainedFixupEntry::isBind
bool isBind() const
Definition: MachO.h:386
llvm::object::DataRefImpl
Definition: SymbolicFile.h:35
llvm::object::MachOObjectFile::getRelocationTypeName
void getRelocationTypeName(DataRefImpl Rel, SmallVectorImpl< char > &Result) const override
Definition: MachOObjectFile.cpp:2260
llvm::object::MachOObjectFile::getEncryptionInfoCommand64
MachO::encryption_info_command_64 getEncryptionInfoCommand64(const LoadCommandInfo &L) const
Definition: MachOObjectFile.cpp:4711
llvm::object::MachOObjectFile::locrel_end
relocation_iterator locrel_end() const
Definition: MachOObjectFile.cpp:2208
llvm::object::MachOBindEntry::ordinal
int ordinal() const
Definition: MachOObjectFile.cpp:4299
llvm::object::MachOBindEntry::segmentIndex
int32_t segmentIndex() const
Definition: MachOObjectFile.cpp:4277
llvm::object::MachOObjectFile::isRelocationScattered
bool isRelocationScattered(const MachO::any_relocation_info &RE) const
Definition: MachOObjectFile.cpp:4518
llvm::object::MachOObjectFile::section_begin
section_iterator section_begin() const override
Definition: MachOObjectFile.cpp:2630
llvm::MachO::PLATFORM_TVOS
@ PLATFORM_TVOS
Definition: MachO.h:501
llvm::object::MachOObjectFile::getVersionMinUpdate
static uint32_t getVersionMinUpdate(MachO::version_min_command &C, bool SDK)
Definition: MachO.h:774
llvm::MachO::encryption_info_command_64
Definition: MachO.h:832
llvm::object::BindRebaseSegInfo
Definition: MachO.h:132
llvm::object::MachOAbstractFixupEntry::moveNext
void moveNext()
Definition: MachOObjectFile.cpp:3295
llvm::object::MachOObjectFile::getSymbolFlags
Expected< uint32_t > getSymbolFlags(DataRefImpl Symb) const override
Definition: MachOObjectFile.cpp:1856
llvm::MachO::dysymtab_command
Definition: MachO.h:709
llvm::object::MachOAbstractFixupEntry::flags
uint32_t flags() const
Definition: MachOObjectFile.cpp:3278
llvm::object::MachOObjectFile::Header
MachO::mach_header Header
Definition: MachO.h:840
llvm::object::MachOObjectFile::getSymtabLoadCommand
MachO::symtab_command getSymtabLoadCommand() const
Definition: MachOObjectFile.cpp:4806
llvm::object::MachOObjectFile::moveSectionNext
void moveSectionNext(DataRefImpl &Sec) const override
Definition: MachOObjectFile.cpp:1917
llvm::object::MachOObjectFile::extrel_end
relocation_iterator extrel_end() const
Definition: MachOObjectFile.cpp:2191
llvm::object::MachOObjectFile::getAnyRelocationType
unsigned getAnyRelocationType(const MachO::any_relocation_info &RE) const
Definition: MachOObjectFile.cpp:4576
llvm::AMDGPU::HSAMD::Kernel::Key::SymbolName
constexpr char SymbolName[]
Key for Kernel::Metadata::mSymbolName.
Definition: AMDGPUMetadata.h:386
llvm::MachO::section_64
Definition: MachO.h:584
llvm::object::MachOBindEntry::Kind
Kind
Definition: MachO.h:214
llvm::object::MachOObjectFile::getSymbolTableEntry
MachO::nlist getSymbolTableEntry(DataRefImpl DRI) const
Definition: MachOObjectFile.cpp:4619
llvm::object::MachOObjectFile::load_commands
iterator_range< load_command_iterator > load_commands() const
Definition: MachOObjectFile.cpp:4491
llvm::object::MachOAbstractFixupEntry::segmentOffset
uint64_t segmentOffset() const
Definition: MachOObjectFile.cpp:3254
llvm::GraphProgram::Name
Name
Definition: GraphWriter.h:50
llvm::object::MachOObjectFile::getSegment64LoadCommand
MachO::segment_command_64 getSegment64LoadCommand(const LoadCommandInfo &L) const
Definition: MachOObjectFile.cpp:4641
uint16_t
llvm::MachO::PLATFORM_TVOSSIMULATOR
@ PLATFORM_TVOSSIMULATOR
Definition: MachO.h:506
llvm::object::MachORebaseEntry::segmentIndex
int32_t segmentIndex() const
Definition: MachOObjectFile.cpp:3733
llvm::SectionName
Definition: DWARFSection.h:21
llvm::Error
Lightweight error class with error context and mandatory checking.
Definition: Error.h:155
llvm::object::ExportEntry::name
StringRef name() const
Definition: MachOObjectFile.cpp:2950
llvm::object::MachOObjectFile::getHeader64
const MachO::mach_header_64 & getHeader64() const
Definition: MachOObjectFile.cpp:4787
llvm::MachO::routines_command_64
Definition: MachO.h:687
llvm::object::MachOBindEntry::Kind::Regular
@ Regular
llvm::object::ExportEntry::flags
uint64_t flags() const
Definition: MachOObjectFile.cpp:2954
llvm::object::MachOBindEntry::symbolName
StringRef symbolName() const
Definition: MachOObjectFile.cpp:4293
llvm::MachO::entry_point_command
Definition: MachO.h:947
llvm::object::MachOBindEntry::addend
int64_t addend() const
Definition: MachOObjectFile.cpp:4295
llvm::object::MachOBindEntry
MachOBindEntry encapsulates the current state in the decompression of binding opcodes.
Definition: MachO.h:212
llvm::MachO::mach_header
Definition: MachO.h:516
llvm::object::MachOObjectFile::getNValue
uint64_t getNValue(DataRefImpl Sym) const
Definition: MachOObjectFile.cpp:1784
llvm::object::Binary::isMachO
bool isMachO() const
Definition: Binary.h:126
llvm::object::MachOObjectFile::isDebugSection
bool isDebugSection(DataRefImpl Sec) const override
Definition: MachOObjectFile.cpp:2046
llvm::object::ChainedFixupTarget::nameOffset
uint32_t nameOffset()
Definition: MachO.h:283
llvm::object::MachOObjectFile::getLibraryCount
uint32_t getLibraryCount() const
Definition: MachOObjectFile.cpp:2571
llvm::MachO::PLATFORM_WATCHOS
@ PLATFORM_WATCHOS
Definition: MachO.h:502
llvm::object::DiceRef::operator<
bool operator<(const DiceRef &Other) const
Definition: MachO.h:871
llvm::object::MachOObjectFile::hasPageZeroSegment
bool hasPageZeroSegment() const
Definition: MachO.h:755
llvm::object::MachOObjectFile::getSubClientCommand
MachO::sub_client_command getSubClientCommand(const LoadCommandInfo &L) const
Definition: MachOObjectFile.cpp:4731
llvm::ARMBuildAttrs::Symbol
@ Symbol
Definition: ARMBuildAttributes.h:83
llvm::object::MachOObjectFile::getIndirectName
std::error_code getIndirectName(DataRefImpl Symb, StringRef &Res) const
Definition: MachOObjectFile.cpp:1795
llvm::object::MachOObjectFile::getRelocationType
uint64_t getRelocationType(DataRefImpl Rel) const override
Definition: MachOObjectFile.cpp:2255
llvm::object::MachOObjectFile::getHostArch
static Triple getHostArch()
Definition: MachOObjectFile.cpp:2832
llvm::object::MachOObjectFile::getBytesInAddress
uint8_t getBytesInAddress() const override
The number of bytes used to represent an address in this object file format.
Definition: MachOObjectFile.cpp:2641
llvm::object::MachOObjectFile::getDyldInfoExportsTrie
ArrayRef< uint8_t > getDyldInfoExportsTrie() const
Definition: MachOObjectFile.cpp:5212
llvm::object::MachOAbstractFixupEntry::SegmentOffset
uint64_t SegmentOffset
Definition: MachO.h:358
Binary.h
llvm::MachO::nlist_64
Definition: MachO.h:1016
llvm::object::MachOObjectFile::getScatteredRelocationValue
uint32_t getScatteredRelocationValue(const MachO::any_relocation_info &RE) const
Definition: MachOObjectFile.cpp:4544
llvm::object::MachOObjectFile::RebaseEntryCheckSegAndOffsets
const char * RebaseEntryCheckSegAndOffsets(int32_t SegIndex, uint64_t SegOffset, uint8_t PointerSize, uint32_t Count=1, uint32_t Skip=0) const
Definition: MachO.h:586
llvm::object::MachOObjectFile::bindTable
iterator_range< bind_iterator > bindTable(Error &Err)
For use iterating over all bind table entries.
Definition: MachOObjectFile.cpp:4452
SmallVector.h
llvm::object::MachOObjectFile::section_rel_begin
relocation_iterator section_rel_begin(DataRefImpl Sec) const override
llvm::object::ChainedFixupTarget::addend
uint64_t addend()
Definition: MachO.h:285
llvm::object::MachOObjectFile::getSectionFinalSegmentName
StringRef getSectionFinalSegmentName(DataRefImpl Sec) const
Definition: MachOObjectFile.cpp:4496
llvm::object::MachORebaseEntry
MachORebaseEntry encapsulates the current state in the decompression of rebasing opcodes.
Definition: MachO.h:168
llvm::object::MachORebaseEntry::typeName
StringRef typeName() const
Definition: MachOObjectFile.cpp:3737
llvm::MachO::PLATFORM_DRIVERKIT
@ PLATFORM_DRIVERKIT
Definition: MachO.h:508
llvm::object::MachOObjectFile::Header64
MachO::mach_header_64 Header64
Definition: MachO.h:839
llvm::object::MachOBindEntry::Kind::Weak
@ Weak
llvm::iterator_range
A range adaptor for a pair of iterators.
Definition: iterator_range.h:30
llvm::object::MachOChainedFixupEntry::isRebase
bool isRebase() const
Definition: MachO.h:387
llvm::object::MachOObjectFile::begin_dices
dice_iterator begin_dices() const
Definition: MachOObjectFile.cpp:2886
llvm::object::MachOObjectFile::getAnyRelocationLength
unsigned getAnyRelocationLength(const MachO::any_relocation_info &RE) const
Definition: MachOObjectFile.cpp:4568
llvm::SmallVectorImpl< char >
llvm::object::MachOObjectFile::end_dices
dice_iterator end_dices() const
Definition: MachOObjectFile.cpp:2896
llvm::object::MachOObjectFile::getValidArchs
static ArrayRef< StringRef > getValidArchs()
Definition: MachOObjectFile.cpp:2841
llvm::object::MachOChainedFixupEntry::moveToFirst
void moveToFirst()
Definition: MachOObjectFile.cpp:3341
llvm::object::SymbolRef
This is a value type class that represents a single symbol in the list of symbols in the object file.
Definition: ObjectFile.h:167
llvm::object::ExportEntry::ExportEntry
ExportEntry(Error *Err, const MachOObjectFile *O, ArrayRef< uint8_t > Trie)
Definition: MachOObjectFile.cpp:2907
llvm::object::MachOObjectFile::guessLibraryShortName
static StringRef guessLibraryShortName(StringRef Name, bool &isFramework, StringRef &Suffix)
Definition: MachOObjectFile.cpp:2411
llvm::object::MachOBindEntry::address
uint64_t address() const
Definition: MachOObjectFile.cpp:4315
llvm::object::MachOObjectFile::isSectionBSS
bool isSectionBSS(DataRefImpl Sec) const override
Definition: MachOObjectFile.cpp:2038
llvm::object::MachOObjectFile::getSectionAddress
uint64_t getSectionAddress(DataRefImpl Sec) const override
Definition: MachOObjectFile.cpp:1926
llvm::object::MachOObjectFile::getThreadCommand
MachO::thread_command getThreadCommand(const LoadCommandInfo &L) const
Definition: MachOObjectFile.cpp:4746
MachO.h
llvm::object::DiceRef::DiceRef
DiceRef()=default
llvm::object::MachOObjectFile::getHeader
const MachO::mach_header & getHeader() const
Definition: MachOObjectFile.cpp:4783
llvm::object::ChainedFixupsSegment::Header
MachO::dyld_chained_starts_in_segment Header
Definition: MachO.h:308
llvm::object::ChainedFixupsSegment::SegIdx
uint32_t SegIdx
Definition: MachO.h:304
llvm::object::MachOObjectFile::BindRebaseSectionName
StringRef BindRebaseSectionName(uint32_t SegIndex, uint64_t SegOffset) const
For use with a SegIndex,SegOffset pair from a checked Mach-O Bind or Rebase entry to get the section ...
Definition: MachO.h:603
raw_ostream.h
llvm::object::MachOObjectFile::moveSymbolNext
void moveSymbolNext(DataRefImpl &Symb) const override
Definition: MachOObjectFile.cpp:1756
llvm::object::MachOObjectFile::getEncryptionInfoCommand
MachO::encryption_info_command getEncryptionInfoCommand(const LoadCommandInfo &L) const
Definition: MachOObjectFile.cpp:4706
llvm::object::MachOObjectFile::getChainedFixupsHeader
Expected< Optional< MachO::dyld_chained_fixups_header > > getChainedFixupsHeader() const
If the optional is None, no header was found, but the object was well-formed.
Definition: MachOObjectFile.cpp:4955
llvm::object::MachOObjectFile::getFileFormatName
StringRef getFileFormatName() const override
Definition: MachOObjectFile.cpp:2645
llvm::object::MachOObjectFile::getSymbolName
Expected< StringRef > getSymbolName(DataRefImpl Symb) const override
Definition: MachOObjectFile.cpp:1763
llvm::raw_string_ostream::str
std::string & str()
Returns the string's reference.
Definition: raw_ostream.h:646
llvm::format_hex
FormattedNumber format_hex(uint64_t N, unsigned Width, bool Upper=false)
format_hex - Output N as a fixed width hexadecimal.
Definition: Format.h:186
llvm::object::MachOChainedFixupEntry::operator==
bool operator==(const MachOChainedFixupEntry &) const
Definition: MachOObjectFile.cpp:3449
llvm::object::MachOObjectFile::isSectionData
bool isSectionData(DataRefImpl Sec) const override
Definition: MachOObjectFile.cpp:2030
llvm::object::MachOObjectFile::lazyBindTable
iterator_range< bind_iterator > lazyBindTable(Error &Err)
For use iterating over all lazy bind table entries.
Definition: MachOObjectFile.cpp:4457
llvm::object::BindRebaseSegInfo::BindRebaseSegInfo
BindRebaseSegInfo(const MachOObjectFile *Obj)
Definition: MachOObjectFile.cpp:4331
llvm::MachO::version_min_command
Definition: MachO.h:841
llvm::object::MachOObjectFile::getSectionName
Expected< StringRef > getSectionName(DataRefImpl Sec) const override
Definition: MachOObjectFile.cpp:1921
llvm::object::MachOObjectFile::section_rel_end
relocation_iterator section_rel_end(DataRefImpl Sec) const override
llvm::object::MachOObjectFile::getSubLibraryCommand
MachO::sub_library_command getSubLibraryCommand(const LoadCommandInfo &L) const
Definition: MachOObjectFile.cpp:4726
llvm::object::MachORebaseEntry::segmentOffset
uint64_t segmentOffset() const
Definition: MachOObjectFile.cpp:3735
llvm::object::MachOAbstractFixupEntry::Done
bool Done
Definition: MachO.h:366
llvm::object::MachOObjectFile::getLinkerOptionLoadCommand
MachO::linker_option_command getLinkerOptionLoadCommand(const LoadCommandInfo &L) const
Definition: MachOObjectFile.cpp:4646
Other
Optional< std::vector< StOtherPiece > > Other
Definition: ELFYAML.cpp:1247
llvm::object::MachOObjectFile::isRelocatableObject
bool isRelocatableObject() const override
True if this is a relocatable object (.o/.obj).
Definition: MachOObjectFile.cpp:5271
llvm::MachO::encryption_info_command
Definition: MachO.h:824
llvm::object::ExportEntry::otherName
StringRef otherName() const
Definition: MachOObjectFile.cpp:2966
llvm::object::MachOObjectFile::getSymbolAlignment
uint32_t getSymbolAlignment(DataRefImpl Symb) const override
Definition: MachOObjectFile.cpp:1817
llvm::object::MachOBindEntry::MachOBindEntry
MachOBindEntry(Error *Err, const MachOObjectFile *O, ArrayRef< uint8_t > Opcodes, bool is64Bit, MachOBindEntry::Kind)
Definition: MachOObjectFile.cpp:3796
llvm::MachO::TOOL_SWIFT
@ TOOL_SWIFT
Definition: MachO.h:512