LLVM  14.0.0git
XCOFFObjectFile.h
Go to the documentation of this file.
1 //===- XCOFFObjectFile.h - XCOFF 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 XCOFFObjectFile class.
10 //
11 //===----------------------------------------------------------------------===//
12 
13 #ifndef LLVM_OBJECT_XCOFFOBJECTFILE_H
14 #define LLVM_OBJECT_XCOFFOBJECTFILE_H
15 
16 #include "llvm/ADT/SmallString.h"
17 #include "llvm/ADT/SmallVector.h"
19 #include "llvm/Object/ObjectFile.h"
20 #include "llvm/Support/Endian.h"
21 #include <limits>
22 
23 namespace llvm {
24 namespace object {
25 
29 
30  // Unix time value, value of 0 indicates no timestamp.
31  // Negative values are reserved.
33 
34  support::ubig32_t SymbolTableOffset; // File offset to symbol table.
38 };
39 
43 
44  // Unix time value, value of 0 indicates no timestamp.
45  // Negative values are reserved.
47 
48  support::ubig64_t SymbolTableOffset; // File offset to symbol table.
52 };
53 
54 template <typename T> struct XCOFFAuxiliaryHeader {
55  static constexpr uint8_t AuxiHeaderFlagMask = 0xF0;
56  static constexpr uint8_t AuxiHeaderTDataAlignmentMask = 0x0F;
57 
58 public:
59  uint8_t getFlag() const {
60  return static_cast<const T *>(this)->FlagAndTDataAlignment &
62  }
63  uint8_t getTDataAlignment() const {
64  return static_cast<const T *>(this)->FlagAndTDataAlignment &
66  }
67 };
68 
69 struct XCOFFAuxiliaryHeader32 : XCOFFAuxiliaryHeader<XCOFFAuxiliaryHeader32> {
71  AuxMagic; ///< If the value of the o_vstamp field is greater than 1, the
72  ///< o_mflags field is reserved for future use and it should
73  ///< contain 0. Otherwise, this field is not used.
75  Version; ///< The valid values are 1 and 2. When the o_vstamp field is 2
76  ///< in an XCOFF32 file, the new interpretation of the n_type
77  ///< field in the symbol table entry is used.
94  uint8_t CpuFlag;
95  uint8_t CpuType;
96  support::ubig32_t MaxStackSize; ///< If the value is 0, the system default
97  ///< maximum stack size is used.
98  support::ubig32_t MaxDataSize; ///< If the value is 0, the system default
99  ///< maximum data size is used.
101  ReservedForDebugger; ///< This field should contain 0. When a loaded
102  ///< program is being debugged, the memory image of
103  ///< this field may be modified by a debugger to
104  ///< insert a trap instruction.
105  uint8_t TextPageSize; ///< Specifies the size of pages for the exec text. The
106  ///< default value is 0 (system-selected page size).
107  uint8_t DataPageSize; ///< Specifies the size of pages for the exec data. The
108  ///< default value is 0 (system-selected page size).
109  uint8_t StackPageSize; ///< Specifies the size of pages for the stack. The
110  ///< default value is 0 (system-selected page size).
114 };
115 
116 struct XCOFFAuxiliaryHeader64 : XCOFFAuxiliaryHeader<XCOFFAuxiliaryHeader32> {
132  uint8_t CpuFlag;
133  uint8_t CpuType;
134  uint8_t TextPageSize;
135  uint8_t DataPageSize;
136  uint8_t StackPageSize;
147 };
148 
149 template <typename T> struct XCOFFSectionHeader {
150  // Least significant 3 bits are reserved.
151  static constexpr unsigned SectionFlagsReservedMask = 0x7;
152 
153  // The low order 16 bits of section flags denotes the section type.
154  static constexpr unsigned SectionFlagsTypeMask = 0xffffu;
155 
156 public:
157  StringRef getName() const;
158  uint16_t getSectionType() const;
159  bool isReservedSectionType() const;
160 };
161 
162 // Explicit extern template declarations.
163 struct XCOFFSectionHeader32;
164 struct XCOFFSectionHeader64;
165 extern template struct XCOFFSectionHeader<XCOFFSectionHeader32>;
166 extern template struct XCOFFSectionHeader<XCOFFSectionHeader64>;
167 
179 };
180 
192  char Padding[4];
193 };
194 
204 };
205 
216  char Padding[16];
218 };
219 
222  const char *Data;
223 };
224 
233 };
234 
242  uint8_t Pad;
244 };
245 
247 public:
248  static constexpr uint8_t SymbolTypeMask = 0x07;
249  static constexpr uint8_t SymbolAlignmentMask = 0xF8;
250  static constexpr size_t SymbolAlignmentBitOffset = 3;
251 
252  XCOFFCsectAuxRef(const XCOFFCsectAuxEnt32 *Entry32) : Entry32(Entry32) {}
253  XCOFFCsectAuxRef(const XCOFFCsectAuxEnt64 *Entry64) : Entry64(Entry64) {}
254 
255  // For getSectionOrLength(),
256  // If the symbol type is XTY_SD or XTY_CM, the csect length.
257  // If the symbol type is XTY_LD, the symbol table
258  // index of the containing csect.
259  // If the symbol type is XTY_ER, 0.
261  return Entry32 ? getSectionOrLength32() : getSectionOrLength64();
262  }
263 
265  assert(Entry32 && "32-bit interface called on 64-bit object file.");
266  return Entry32->SectionOrLength;
267  }
268 
270  assert(Entry64 && "64-bit interface called on 32-bit object file.");
271  return (static_cast<uint64_t>(Entry64->SectionOrLengthHighByte) << 32) |
272  Entry64->SectionOrLengthLowByte;
273  }
274 
275 #define GETVALUE(X) Entry32 ? Entry32->X : Entry64->X
276 
278  return GETVALUE(ParameterHashIndex);
279  }
280 
281  uint16_t getTypeChkSectNum() const { return GETVALUE(TypeChkSectNum); }
282 
285  }
286 
287  uintptr_t getEntryAddress() const {
288  return Entry32 ? reinterpret_cast<uintptr_t>(Entry32)
289  : reinterpret_cast<uintptr_t>(Entry64);
290  }
291 
293  return (getSymbolAlignmentAndType() & SymbolAlignmentMask) >>
294  SymbolAlignmentBitOffset;
295  }
296 
297  uint8_t getSymbolType() const {
298  return getSymbolAlignmentAndType() & SymbolTypeMask;
299  }
300 
301  bool isLabel() const { return getSymbolType() == XCOFF::XTY_LD; }
302 
304  assert(Entry32 && "32-bit interface called on 64-bit object file.");
305  return Entry32->StabInfoIndex;
306  }
307 
309  assert(Entry32 && "32-bit interface called on 64-bit object file.");
310  return Entry32->StabSectNum;
311  }
312 
314  assert(Entry64 && "64-bit interface called on 32-bit object file.");
315  return Entry64->AuxType;
316  }
317 
318 private:
319  uint8_t getSymbolAlignmentAndType() const {
320  return GETVALUE(SymbolAlignmentAndType);
321  }
322 
323 #undef GETVALUE
324 
325  const XCOFFCsectAuxEnt32 *Entry32 = nullptr;
326  const XCOFFCsectAuxEnt64 *Entry64 = nullptr;
327 };
328 
330  typedef struct {
331  support::big32_t Magic; // Zero indicates name in string table.
333  char NamePad[XCOFF::FileNamePadSize];
335  union {
338  };
340  uint8_t ReservedZeros[2];
341  XCOFF::SymbolAuxType AuxType; // 64-bit XCOFF file only.
342 };
343 
348  uint8_t Pad[10];
349 }; // 32-bit XCOFF file only.
350 
351 template <typename AddressType> struct XCOFFRelocation {
352  // Masks for packing/unpacking the r_rsize field of relocations.
353 
354  // The msb is used to indicate if the bits being relocated are signed or
355  // unsigned.
356  static constexpr uint8_t XR_SIGN_INDICATOR_MASK = 0x80;
357 
358  // The 2nd msb is used to indicate that the binder has replaced/modified the
359  // original instruction.
360  static constexpr uint8_t XR_FIXUP_INDICATOR_MASK = 0x40;
361 
362  // The remaining bits specify the bit length of the relocatable reference
363  // minus one.
364  static constexpr uint8_t XR_BIASED_LENGTH_MASK = 0x3f;
365 
366 public:
367  AddressType VirtualAddress;
369 
370  // Packed field, see XR_* masks for details of packing.
371  uint8_t Info;
372 
374 
375 public:
376  bool isRelocationSigned() const;
377  bool isFixupIndicated() const;
378 
379  // Returns the number of bits being relocated.
380  uint8_t getRelocatedLength() const;
381 };
382 
383 extern template struct XCOFFRelocation<llvm::support::ubig32_t>;
384 extern template struct XCOFFRelocation<llvm::support::ubig64_t>;
385 
388 
389 class XCOFFSymbolRef;
390 
391 class XCOFFObjectFile : public ObjectFile {
392 private:
393  const void *FileHeader = nullptr;
394  const void *AuxiliaryHeader = nullptr;
395  const void *SectionHeaderTable = nullptr;
396 
397  const void *SymbolTblPtr = nullptr;
398  XCOFFStringTable StringTable = {0, nullptr};
399 
400  const XCOFFFileHeader32 *fileHeader32() const;
401  const XCOFFFileHeader64 *fileHeader64() const;
402 
403  const XCOFFSectionHeader32 *sectionHeaderTable32() const;
404  const XCOFFSectionHeader64 *sectionHeaderTable64() const;
405  template <typename T> const T *sectionHeaderTable() const;
406 
407  size_t getFileHeaderSize() const;
408  size_t getSectionHeaderSize() const;
409 
410  const XCOFFSectionHeader32 *toSection32(DataRefImpl Ref) const;
411  const XCOFFSectionHeader64 *toSection64(DataRefImpl Ref) const;
412  uintptr_t getSectionHeaderTableAddress() const;
413  uintptr_t getEndOfSymbolTableAddress() const;
414  Expected<uintptr_t> getLoaderSectionAddress() const;
415 
416  // This returns a pointer to the start of the storage for the name field of
417  // the 32-bit or 64-bit SectionHeader struct. This string is *not* necessarily
418  // null-terminated.
419  const char *getSectionNameInternal(DataRefImpl Sec) const;
420 
421  static bool isReservedSectionNumber(int16_t SectionNumber);
422 
423  // Constructor and "create" factory function. The constructor is only a thin
424  // wrapper around the base constructor. The "create" function fills out the
425  // XCOFF-specific information and performs the error checking along the way.
427  static Expected<std::unique_ptr<XCOFFObjectFile>> create(unsigned Type,
428  MemoryBufferRef MBR);
429 
430  // Helper for parsing the StringTable. Returns an 'Error' if parsing failed
431  // and an XCOFFStringTable if parsing succeeded.
432  static Expected<XCOFFStringTable> parseStringTable(const XCOFFObjectFile *Obj,
433  uint64_t Offset);
434 
435  // Make a friend so it can call the private 'create' function.
438 
439  void checkSectionAddress(uintptr_t Addr, uintptr_t TableAddr) const;
440 
441 public:
442  static constexpr uint64_t InvalidRelocOffset =
444 
445  // Interface inherited from base classes.
446  void moveSymbolNext(DataRefImpl &Symb) const override;
447  Expected<uint32_t> getSymbolFlags(DataRefImpl Symb) const override;
448  basic_symbol_iterator symbol_begin() const override;
449  basic_symbol_iterator symbol_end() const override;
450 
451  Expected<StringRef> getSymbolName(DataRefImpl Symb) const override;
452  Expected<uint64_t> getSymbolAddress(DataRefImpl Symb) const override;
453  uint64_t getSymbolValueImpl(DataRefImpl Symb) const override;
454  uint32_t getSymbolAlignment(DataRefImpl Symb) const override;
455  uint64_t getCommonSymbolSizeImpl(DataRefImpl Symb) const override;
457  Expected<section_iterator> getSymbolSection(DataRefImpl Symb) const override;
458 
459  void moveSectionNext(DataRefImpl &Sec) const override;
460  Expected<StringRef> getSectionName(DataRefImpl Sec) const override;
461  uint64_t getSectionAddress(DataRefImpl Sec) const override;
462  uint64_t getSectionIndex(DataRefImpl Sec) const override;
463  uint64_t getSectionSize(DataRefImpl Sec) const override;
465  getSectionContents(DataRefImpl Sec) const override;
466  uint64_t getSectionAlignment(DataRefImpl Sec) const override;
467  bool isSectionCompressed(DataRefImpl Sec) const override;
468  bool isSectionText(DataRefImpl Sec) const override;
469  bool isSectionData(DataRefImpl Sec) const override;
470  bool isSectionBSS(DataRefImpl Sec) const override;
471  bool isDebugSection(DataRefImpl Sec) const override;
472 
473  bool isSectionVirtual(DataRefImpl Sec) const override;
474  relocation_iterator section_rel_begin(DataRefImpl Sec) const override;
475  relocation_iterator section_rel_end(DataRefImpl Sec) const override;
476 
477  void moveRelocationNext(DataRefImpl &Rel) const override;
478 
479  /// \returns the relocation offset with the base address of the containing
480  /// section as zero, or InvalidRelocOffset on errors (such as a relocation
481  /// that does not refer to an address in any section).
482  uint64_t getRelocationOffset(DataRefImpl Rel) const override;
483  symbol_iterator getRelocationSymbol(DataRefImpl Rel) const override;
484  uint64_t getRelocationType(DataRefImpl Rel) const override;
485  void getRelocationTypeName(DataRefImpl Rel,
486  SmallVectorImpl<char> &Result) const override;
487 
488  section_iterator section_begin() const override;
489  section_iterator section_end() const override;
490  uint8_t getBytesInAddress() const override;
491  StringRef getFileFormatName() const override;
492  Triple::ArchType getArch() const override;
493  SubtargetFeatures getFeatures() const override;
494  Expected<uint64_t> getStartAddress() const override;
495  StringRef mapDebugSectionName(StringRef Name) const override;
496  bool isRelocatableObject() const override;
497 
498  // Below here is the non-inherited interface.
499  bool is64Bit() const;
500 
501  const XCOFFAuxiliaryHeader32 *auxiliaryHeader32() const;
502  const XCOFFAuxiliaryHeader64 *auxiliaryHeader64() const;
503 
504  const void *getPointerToSymbolTable() const { return SymbolTblPtr; }
505 
506  Expected<StringRef> getSymbolSectionName(XCOFFSymbolRef Ref) const;
507  unsigned getSymbolSectionID(SymbolRef Sym) const;
508  XCOFFSymbolRef toSymbolRef(DataRefImpl Ref) const;
509 
510  // File header related interfaces.
511  uint16_t getMagic() const;
512  uint16_t getNumberOfSections() const;
513  int32_t getTimeStamp() const;
514 
515  // Symbol table offset and entry count are handled differently between
516  // XCOFF32 and XCOFF64.
517  uint32_t getSymbolTableOffset32() const;
518  uint64_t getSymbolTableOffset64() const;
519 
520  // Note that this value is signed and might return a negative value. Negative
521  // values are reserved for future use.
522  int32_t getRawNumberOfSymbolTableEntries32() const;
523 
524  // The sanitized value appropriate to use as an index into the symbol table.
525  uint32_t getLogicalNumberOfSymbolTableEntries32() const;
526 
527  uint32_t getNumberOfSymbolTableEntries64() const;
528 
529  // Return getLogicalNumberOfSymbolTableEntries32 or
530  // getNumberOfSymbolTableEntries64 depending on the object mode.
531  uint32_t getNumberOfSymbolTableEntries() const;
532 
533  uint32_t getSymbolIndex(uintptr_t SymEntPtr) const;
534  uint64_t getSymbolSize(DataRefImpl Symb) const;
535  uintptr_t getSymbolByIndex(uint32_t Idx) const {
536  return reinterpret_cast<uintptr_t>(SymbolTblPtr) +
538  }
539  uintptr_t getSymbolEntryAddressByIndex(uint32_t SymbolTableIndex) const;
540  Expected<StringRef> getSymbolNameByIndex(uint32_t SymbolTableIndex) const;
541 
542  Expected<StringRef> getCFileName(const XCOFFFileAuxEnt *CFileEntPtr) const;
543  uint16_t getOptionalHeaderSize() const;
544  uint16_t getFlags() const;
545 
546  // Section header table related interfaces.
547  ArrayRef<XCOFFSectionHeader32> sections32() const;
548  ArrayRef<XCOFFSectionHeader64> sections64() const;
549 
550  int32_t getSectionFlags(DataRefImpl Sec) const;
551  Expected<DataRefImpl> getSectionByNum(int16_t Num) const;
552 
553  void checkSymbolEntryPointer(uintptr_t SymbolEntPtr) const;
554 
555  // Relocation-related interfaces.
556  template <typename T>
558  getNumberOfRelocationEntries(const XCOFFSectionHeader<T> &Sec) const;
559 
560  template <typename Shdr, typename Reloc>
561  Expected<ArrayRef<Reloc>> relocations(const Shdr &Sec) const;
562 
563  // Loader section related interfaces.
564  Expected<StringRef> getImportFileTable() const;
565 
566  // This function returns string table entry.
567  Expected<StringRef> getStringTableEntry(uint32_t Offset) const;
568 
569  // This function returns the string table.
570  StringRef getStringTable() const;
571 
572  const XCOFF::SymbolAuxType *getSymbolAuxType(uintptr_t AuxEntryAddress) const;
573 
574  static uintptr_t getAdvancedSymbolEntryAddress(uintptr_t CurrentAddress,
575  uint32_t Distance);
576 
577  static bool classof(const Binary *B) { return B->isXCOFF(); }
578 }; // XCOFFObjectFile
579 
580 typedef struct {
581  uint8_t LanguageId;
582  uint8_t CpuTypeId;
584 
586  typedef struct {
587  support::big32_t Magic; // Zero indicates name in string table.
590 
591  union {
594  };
595 
596  support::ubig32_t Value; // Symbol value; storage class-dependent.
598 
599  union {
602  };
603 
606 };
607 
609  support::ubig64_t Value; // Symbol value; storage class-dependent.
612 
613  union {
616  };
617 
620 };
621 
623 public:
624  enum { NAME_IN_STR_TBL_MAGIC = 0x0 };
625 
627  const XCOFFObjectFile *OwningObjectPtr)
628  : OwningObjectPtr(OwningObjectPtr) {
629  assert(OwningObjectPtr && "OwningObjectPtr cannot be nullptr!");
630  assert(SymEntDataRef.p != 0 &&
631  "Symbol table entry pointer cannot be nullptr!");
632 
633  if (OwningObjectPtr->is64Bit())
634  Entry64 = reinterpret_cast<const XCOFFSymbolEntry64 *>(SymEntDataRef.p);
635  else
636  Entry32 = reinterpret_cast<const XCOFFSymbolEntry32 *>(SymEntDataRef.p);
637  }
638 
639  uint64_t getValue() const { return Entry32 ? getValue32() : getValue64(); }
640 
641  uint32_t getValue32() const { return Entry32->Value; }
642 
643  uint64_t getValue64() const { return Entry64->Value; }
644 
645 #define GETVALUE(X) Entry32 ? Entry32->X : Entry64->X
646 
647  int16_t getSectionNumber() const { return GETVALUE(SectionNumber); }
648 
650 
651  uint8_t getLanguageIdForCFile() const {
653  "This interface is for C_FILE only.");
654  return GETVALUE(CFileLanguageIdAndTypeId.LanguageId);
655  }
656 
657  uint8_t getCPUTypeIddForCFile() const {
659  "This interface is for C_FILE only.");
660  return GETVALUE(CFileLanguageIdAndTypeId.CpuTypeId);
661  }
662 
664 
665  uint8_t getNumberOfAuxEntries() const { return GETVALUE(NumberOfAuxEntries); }
666 
667 #undef GETVALUE
668 
669  uintptr_t getEntryAddress() const {
670  return Entry32 ? reinterpret_cast<uintptr_t>(Entry32)
671  : reinterpret_cast<uintptr_t>(Entry64);
672  }
673 
675  bool isFunction() const;
676  bool isCsectSymbol() const;
678 
679 private:
680  const XCOFFObjectFile *OwningObjectPtr;
681  const XCOFFSymbolEntry32 *Entry32 = nullptr;
682  const XCOFFSymbolEntry64 *Entry64 = nullptr;
683 };
684 
685 class TBVectorExt {
686  uint16_t Data;
687  SmallString<32> VecParmsInfo;
688 
689  TBVectorExt(StringRef TBvectorStrRef, Error &Err);
690 
691 public:
692  static Expected<TBVectorExt> create(StringRef TBvectorStrRef);
693  uint8_t getNumberOfVRSaved() const;
694  bool isVRSavedOnStack() const;
695  bool hasVarArgs() const;
696  uint8_t getNumberOfVectorParms() const;
697  bool hasVMXInstruction() const;
698  SmallString<32> getVectorParmsInfo() const { return VecParmsInfo; };
699 };
700 
701 /// This class provides methods to extract traceback table data from a buffer.
702 /// The various accessors may reference the buffer provided via the constructor.
703 
705  const uint8_t *const TBPtr;
706  Optional<SmallString<32>> ParmsType;
707  Optional<uint32_t> TraceBackTableOffset;
708  Optional<uint32_t> HandlerMask;
709  Optional<uint32_t> NumOfCtlAnchors;
710  Optional<SmallVector<uint32_t, 8>> ControlledStorageInfoDisp;
711  Optional<StringRef> FunctionName;
712  Optional<uint8_t> AllocaRegister;
713  Optional<TBVectorExt> VecExt;
714  Optional<uint8_t> ExtensionTable;
715 
716  XCOFFTracebackTable(const uint8_t *Ptr, uint64_t &Size, Error &Err);
717 
718 public:
719  /// Parse an XCOFF Traceback Table from \a Ptr with \a Size bytes.
720  /// Returns an XCOFFTracebackTable upon successful parsing, otherwise an
721  /// Error is returned.
722  ///
723  /// \param[in] Ptr
724  /// A pointer that points just past the initial 4 bytes of zeros at the
725  /// beginning of an XCOFF Traceback Table.
726  ///
727  /// \param[in, out] Size
728  /// A pointer that points to the length of the XCOFF Traceback Table.
729  /// If the XCOFF Traceback Table is not parsed successfully or there are
730  /// extra bytes that are not recognized, \a Size will be updated to be the
731  /// size up to the end of the last successfully parsed field of the table.
732  static Expected<XCOFFTracebackTable> create(const uint8_t *Ptr,
733  uint64_t &Size);
734  uint8_t getVersion() const;
735  uint8_t getLanguageID() const;
736 
737  bool isGlobalLinkage() const;
738  bool isOutOfLineEpilogOrPrologue() const;
739  bool hasTraceBackTableOffset() const;
740  bool isInternalProcedure() const;
741  bool hasControlledStorage() const;
742  bool isTOCless() const;
743  bool isFloatingPointPresent() const;
745 
746  bool isInterruptHandler() const;
747  bool isFuncNamePresent() const;
748  bool isAllocaUsed() const;
749  uint8_t getOnConditionDirective() const;
750  bool isCRSaved() const;
751  bool isLRSaved() const;
752 
753  bool isBackChainStored() const;
754  bool isFixup() const;
755  uint8_t getNumOfFPRsSaved() const;
756 
757  bool hasVectorInfo() const;
758  bool hasExtensionTable() const;
759  uint8_t getNumOfGPRsSaved() const;
760 
761  uint8_t getNumberOfFixedParms() const;
762 
763  uint8_t getNumberOfFPParms() const;
764  bool hasParmsOnStack() const;
765 
766  const Optional<SmallString<32>> &getParmsType() const { return ParmsType; }
768  return TraceBackTableOffset;
769  }
770  const Optional<uint32_t> &getHandlerMask() const { return HandlerMask; }
771  const Optional<uint32_t> &getNumOfCtlAnchors() { return NumOfCtlAnchors; }
773  return ControlledStorageInfoDisp;
774  }
775  const Optional<StringRef> &getFunctionName() const { return FunctionName; }
776  const Optional<uint8_t> &getAllocaRegister() const { return AllocaRegister; }
777  const Optional<TBVectorExt> &getVectorExt() const { return VecExt; }
778  const Optional<uint8_t> &getExtensionTable() const { return ExtensionTable; }
779 };
780 
782 } // namespace object
783 } // namespace llvm
784 
785 #endif // LLVM_OBJECT_XCOFFOBJECTFILE_H
llvm::Check::Size
@ Size
Definition: FileCheck.h:73
llvm::object::XCOFFCsectAuxEnt32::TypeChkSectNum
support::ubig16_t TypeChkSectNum
Definition: XCOFFObjectFile.h:228
llvm::object::XCOFFAuxiliaryHeader32::MaxDataSize
support::ubig32_t MaxDataSize
If the value is 0, the system default maximum data size is used.
Definition: XCOFFObjectFile.h:98
llvm::object::XCOFFAuxiliaryHeader32::TextSize
support::ubig32_t TextSize
Definition: XCOFFObjectFile.h:78
llvm::object::XCOFFTracebackTable::isTOCless
bool isTOCless() const
Definition: XCOFFObjectFile.cpp:1409
llvm::object::XCOFFTracebackTable::isInterruptHandler
bool isInterruptHandler() const
Definition: XCOFFObjectFile.cpp:1421
llvm::object::XCOFFAuxiliaryHeader32::MaxStackSize
support::ubig32_t MaxStackSize
If the value is 0, the system default maximum stack size is used.
Definition: XCOFFObjectFile.h:96
llvm::object::XCOFFFileHeader64::AuxHeaderSize
support::ubig16_t AuxHeaderSize
Definition: XCOFFObjectFile.h:49
llvm::object::XCOFFSectionHeader::isReservedSectionType
bool isReservedSectionType() const
Definition: XCOFFObjectFile.cpp:68
llvm::object::XCOFFCsectAuxEnt64::StorageMappingClass
XCOFF::StorageMappingClass StorageMappingClass
Definition: XCOFFObjectFile.h:240
llvm::object::XCOFFCsectAuxRef::getTypeChkSectNum
uint16_t getTypeChkSectNum() const
Definition: XCOFFObjectFile.h:281
llvm::object::XCOFFSectAuxEntForStat::Pad
uint8_t Pad[10]
Definition: XCOFFObjectFile.h:348
llvm::object::XCOFFFileHeader32::AuxHeaderSize
support::ubig16_t AuxHeaderSize
Definition: XCOFFObjectFile.h:36
llvm::object::XCOFFSymbolEntry32::StorageClass
XCOFF::StorageClass StorageClass
Definition: XCOFFObjectFile.h:604
llvm
This is an optimization pass for GlobalISel generic memory operations.
Definition: AllocatorList.h:23
llvm::object::XCOFFCsectAuxEnt32::ParameterHashIndex
support::ubig32_t ParameterHashIndex
Definition: XCOFFObjectFile.h:227
llvm::object::XCOFFSectionHeader32
Definition: XCOFFObjectFile.h:168
llvm::object::XCOFFTracebackTable::getExtensionTable
const Optional< uint8_t > & getExtensionTable() const
Definition: XCOFFObjectFile.h:778
llvm::object::XCOFFSymbolEntry32::SectionNumber
support::big16_t SectionNumber
Definition: XCOFFObjectFile.h:597
llvm::object::XCOFFAuxiliaryHeader64::SecNumOfTBSS
support::ubig16_t SecNumOfTBSS
Definition: XCOFFObjectFile.h:145
GETVALUE
#define GETVALUE(X)
Definition: XCOFFObjectFile.h:645
llvm::object::XCOFFAuxiliaryHeader64::MaxAlignOfData
support::ubig16_t MaxAlignOfData
Definition: XCOFFObjectFile.h:130
llvm::object::XCOFFTracebackTable::hasParmsOnStack
bool hasParmsOnStack() const
Definition: XCOFFObjectFile.cpp:1480
llvm::object::XCOFFSymbolRef::getXCOFFCsectAuxRef
Expected< XCOFFCsectAuxRef > getXCOFFCsectAuxRef() const
Definition: XCOFFObjectFile.cpp:1147
llvm::object::TBVectorExt::hasVarArgs
bool hasVarArgs() const
Definition: XCOFFObjectFile.cpp:1265
llvm::object::XCOFFSymbolRef::getName
Expected< StringRef > getName() const
Definition: XCOFFObjectFile.cpp:1190
llvm::XCOFF::XTY_LD
@ XTY_LD
Label definition. Defines an entry point to an initialized csect.
Definition: XCOFF.h:199
llvm::object::XCOFFSectionHeader64::PhysicalAddress
support::ubig64_t PhysicalAddress
Definition: XCOFFObjectFile.h:183
llvm::support::detail::packed_endian_specific_integral
Definition: Endian.h:206
llvm::object::XCOFFAuxiliaryHeader32::MaxAlignOfText
support::ubig16_t MaxAlignOfText
Definition: XCOFFObjectFile.h:91
llvm::object::XCOFFAuxiliaryHeader32::ReservedForDebugger
support::ubig32_t ReservedForDebugger
This field should contain 0.
Definition: XCOFFObjectFile.h:101
llvm::object::LoaderSectionHeader32::Version
support::ubig32_t Version
Definition: XCOFFObjectFile.h:196
llvm::object::XCOFFFileHeader32
Definition: XCOFFObjectFile.h:26
is64Bit
static bool is64Bit(const char *name)
Definition: X86Disassembler.cpp:1019
llvm::object::XCOFFAuxiliaryHeader64::SecNumOfTData
support::ubig16_t SecNumOfTData
Definition: XCOFFObjectFile.h:144
llvm::object::XCOFFRelocation::VirtualAddress
AddressType VirtualAddress
Definition: XCOFFObjectFile.h:367
llvm::XCOFF::C_FILE
@ C_FILE
Definition: XCOFF.h:128
llvm::object::XCOFFTracebackTable::isFloatingPointPresent
bool isFloatingPointPresent() const
Definition: XCOFFObjectFile.cpp:1413
llvm::object::XCOFFSymbolRef::NAME_IN_STR_TBL_MAGIC
@ NAME_IN_STR_TBL_MAGIC
Definition: XCOFFObjectFile.h:624
llvm::XCOFF::SymbolType
SymbolType
Definition: XCOFF.h:196
llvm::object::XCOFFTracebackTable::getVersion
uint8_t getVersion() const
Definition: XCOFFObjectFile.cpp:1381
llvm::object::XCOFFSectionHeader32::FileOffsetToRelocationInfo
support::ubig32_t FileOffsetToRelocationInfo
Definition: XCOFFObjectFile.h:174
llvm::object::XCOFFAuxiliaryHeader32::CpuType
uint8_t CpuType
Definition: XCOFFObjectFile.h:95
llvm::object::XCOFFTracebackTable::isBackChainStored
bool isBackChainStored() const
Definition: XCOFFObjectFile.cpp:1446
llvm::object::LoaderSectionHeader64::OffsetToImpid
support::big64_t OffsetToImpid
Definition: XCOFFObjectFile.h:213
llvm::object::CFileLanguageIdAndTypeIdType::CpuTypeId
uint8_t CpuTypeId
Definition: XCOFFObjectFile.h:582
llvm::object::XCOFFSectionHeader::SectionFlagsReservedMask
static constexpr unsigned SectionFlagsReservedMask
Definition: XCOFFObjectFile.h:151
llvm::object::XCOFFSectionHeader
Definition: XCOFFObjectFile.h:149
llvm::object::XCOFFObjectFile::is64Bit
bool is64Bit() const
Definition: XCOFFObjectFile.cpp:698
llvm::object::XCOFFTracebackTable::isOutOfLineEpilogOrPrologue
bool isOutOfLineEpilogOrPrologue() const
Definition: XCOFFObjectFile.cpp:1393
llvm::object::CFileLanguageIdAndTypeIdType::LanguageId
uint8_t LanguageId
Definition: XCOFFObjectFile.h:581
llvm::object::XCOFFAuxiliaryHeader64
Definition: XCOFFObjectFile.h:116
llvm::Type
The instances of the Type class are immutable: once they are created, they are never changed.
Definition: Type.h:45
llvm::object::XCOFFSymbolEntry32::NameInStrTblType
Definition: XCOFFObjectFile.h:586
llvm::object::XCOFFRelocation64
Definition: XCOFFObjectFile.h:387
llvm::object::XCOFFFileAuxEnt::NameInStrTblType::Magic
support::big32_t Magic
Definition: XCOFFObjectFile.h:331
llvm::object::XCOFFRelocation::XR_FIXUP_INDICATOR_MASK
static constexpr uint8_t XR_FIXUP_INDICATOR_MASK
Definition: XCOFFObjectFile.h:360
llvm::object::XCOFFAuxiliaryHeader64::InitDataSize
support::ubig64_t InitDataSize
Definition: XCOFFObjectFile.h:139
llvm::object::TBVectorExt::hasVMXInstruction
bool hasVMXInstruction() const
Definition: XCOFFObjectFile.cpp:1274
llvm::object::XCOFFSectionHeader32::FileOffsetToRawData
support::ubig32_t FileOffsetToRawData
Definition: XCOFFObjectFile.h:173
llvm::Optional
Definition: APInt.h:33
T
#define T
Definition: Mips16ISelLowering.cpp:341
llvm::object::LoaderSectionHeader32::NumberOfRelTabEnt
support::ubig32_t NumberOfRelTabEnt
Definition: XCOFFObjectFile.h:198
Offset
uint64_t Offset
Definition: ELFObjHandler.cpp:81
llvm::object::XCOFFRelocation::XR_SIGN_INDICATOR_MASK
static constexpr uint8_t XR_SIGN_INDICATOR_MASK
Definition: XCOFFObjectFile.h:356
llvm::object::XCOFFFileAuxEnt::Name
char Name[XCOFF::NameSize+XCOFF::FileNamePadSize]
Definition: XCOFFObjectFile.h:336
llvm::object::XCOFFCsectAuxRef::getParameterHashIndex
uint32_t getParameterHashIndex() const
Definition: XCOFFObjectFile.h:277
llvm::RawInstrProf::getMagic
uint64_t getMagic()
llvm::object::XCOFFTracebackTable::getFunctionName
const Optional< StringRef > & getFunctionName() const
Definition: XCOFFObjectFile.h:775
llvm::object::XCOFFAuxiliaryHeader64::SecNumOfTOC
support::ubig16_t SecNumOfTOC
Definition: XCOFFObjectFile.h:126
llvm::Expected
Tagged union holding either a T or a Error.
Definition: APFloat.h:42
llvm::object::CFileLanguageIdAndTypeIdType
Definition: XCOFFObjectFile.h:580
llvm::object::XCOFFSymbolRef::getNumberOfAuxEntries
uint8_t getNumberOfAuxEntries() const
Definition: XCOFFObjectFile.h:665
llvm::object::XCOFFFileHeader64
Definition: XCOFFObjectFile.h:40
llvm::object::LoaderSectionHeader64::LengthOfImpidStrTbl
support::ubig32_t LengthOfImpidStrTbl
Definition: XCOFFObjectFile.h:210
llvm::object::XCOFFSymbolEntry64::Value
support::ubig64_t Value
Definition: XCOFFObjectFile.h:609
llvm::object::XCOFFCsectAuxRef::getSymbolType
uint8_t getSymbolType() const
Definition: XCOFFObjectFile.h:297
llvm::object::LoaderSectionHeader64::NumberOfRelTabEnt
support::ubig32_t NumberOfRelTabEnt
Definition: XCOFFObjectFile.h:209
llvm::object::XCOFFAuxiliaryHeader64::MaxAlignOfText
support::ubig16_t MaxAlignOfText
Definition: XCOFFObjectFile.h:129
llvm::object::XCOFFFileHeader64::Magic
support::ubig16_t Magic
Definition: XCOFFObjectFile.h:41
llvm::object::XCOFFAuxiliaryHeader
Definition: XCOFFObjectFile.h:54
llvm::object::XCOFFSymbolEntry64
Definition: XCOFFObjectFile.h:608
llvm::object::XCOFFSymbolEntry32::SymbolType
support::ubig16_t SymbolType
Definition: XCOFFObjectFile.h:600
llvm::MemoryBufferRef
Definition: MemoryBufferRef.h:22
llvm::object::XCOFFSectAuxEntForStat::SectionLength
support::ubig32_t SectionLength
Definition: XCOFFObjectFile.h:345
llvm::object::XCOFFCsectAuxRef::getSectionOrLength
uint64_t getSectionOrLength() const
Definition: XCOFFObjectFile.h:260
llvm::object::XCOFFSectionHeader32::NumberOfRelocations
support::ubig16_t NumberOfRelocations
Definition: XCOFFObjectFile.h:176
llvm::object::XCOFFTracebackTable::getAllocaRegister
const Optional< uint8_t > & getAllocaRegister() const
Definition: XCOFFObjectFile.h:776
llvm::object::XCOFFSymbolRef::isFunction
bool isFunction() const
Definition: XCOFFObjectFile.cpp:1107
llvm::object::XCOFFCsectAuxRef
Definition: XCOFFObjectFile.h:246
llvm::object::XCOFFAuxiliaryHeader32::SecNumOfText
support::ubig16_t SecNumOfText
Definition: XCOFFObjectFile.h:86
llvm::object::XCOFFSectionHeader64::NumberOfLineNumbers
support::ubig32_t NumberOfLineNumbers
Definition: XCOFFObjectFile.h:190
llvm::object::XCOFFTracebackTable::getTraceBackTableOffset
const Optional< uint32_t > & getTraceBackTableOffset() const
Definition: XCOFFObjectFile.h:767
llvm::object::XCOFFSymbolRef::getValue64
uint64_t getValue64() const
Definition: XCOFFObjectFile.h:643
llvm::object::XCOFFSymbolRef
Definition: XCOFFObjectFile.h:622
llvm::object::XCOFFAuxiliaryHeader32::SecNumOfTOC
support::ubig16_t SecNumOfTOC
Definition: XCOFFObjectFile.h:88
llvm::object::XCOFFSectionHeader32::NumberOfLineNumbers
support::ubig16_t NumberOfLineNumbers
Definition: XCOFFObjectFile.h:177
llvm::object::XCOFFSectionHeader32::VirtualAddress
support::ubig32_t VirtualAddress
Definition: XCOFFObjectFile.h:171
llvm::object::XCOFFFileAuxEnt::NameInStrTblType
Definition: XCOFFObjectFile.h:330
getSectionFlags
static uint32_t getSectionFlags(const MachOObjectFile &O, DataRefImpl Sec)
Definition: MachOObjectFile.cpp:175
XCOFF.h
llvm::object::XCOFFAuxiliaryHeader64::CpuFlag
uint8_t CpuFlag
Definition: XCOFFObjectFile.h:132
llvm::object::XCOFFTracebackTable::isFuncNamePresent
bool isFuncNamePresent() const
Definition: XCOFFObjectFile.cpp:1425
llvm::object::XCOFFSymbolEntry64::SectionNumber
support::big16_t SectionNumber
Definition: XCOFFObjectFile.h:611
llvm::object::XCOFFAuxiliaryHeader32::SecNumOfTData
support::ubig16_t SecNumOfTData
Definition: XCOFFObjectFile.h:112
llvm::object::XCOFFAuxiliaryHeader64::TOCAnchorAddr
support::ubig64_t TOCAnchorAddr
Definition: XCOFFObjectFile.h:122
llvm::object::XCOFFAuxiliaryHeader::getFlag
uint8_t getFlag() const
Definition: XCOFFObjectFile.h:59
llvm::object::XCOFFAuxiliaryHeader32::DataStartAddr
support::ubig32_t DataStartAddr
Definition: XCOFFObjectFile.h:83
llvm::object::XCOFFTracebackTable::getNumOfGPRsSaved
uint8_t getNumOfGPRsSaved() const
Definition: XCOFFObjectFile.cpp:1466
llvm::object::XCOFFTracebackTable::getHandlerMask
const Optional< uint32_t > & getHandlerMask() const
Definition: XCOFFObjectFile.h:770
llvm::object::XCOFFAuxiliaryHeader32::SecNumOfLoader
support::ubig16_t SecNumOfLoader
Definition: XCOFFObjectFile.h:89
llvm::object::XCOFFAuxiliaryHeader64::SecNumOfData
support::ubig16_t SecNumOfData
Definition: XCOFFObjectFile.h:125
llvm::object::XCOFFAuxiliaryHeader32::AuxMagic
support::ubig16_t AuxMagic
If the value of the o_vstamp field is greater than 1, the o_mflags field is reserved for future use a...
Definition: XCOFFObjectFile.h:71
llvm::object::XCOFFFileAuxEnt::NameInStrTblType::Offset
support::ubig32_t Offset
Definition: XCOFFObjectFile.h:332
llvm::Triple::ArchType
ArchType
Definition: Triple.h:47
llvm::ModRefInfo::Ref
@ Ref
The access may reference the value stored in memory.
llvm::object::TBVectorExt::getVectorParmsInfo
SmallString< 32 > getVectorParmsInfo() const
Definition: XCOFFObjectFile.h:698
SmallString.h
llvm::object::XCOFFAuxiliaryHeader64::FlagAndTDataAlignment
uint8_t FlagAndTDataAlignment
Definition: XCOFFObjectFile.h:137
llvm::object::XCOFFStringTable::Size
uint32_t Size
Definition: XCOFFObjectFile.h:221
llvm::object::TBVectorExt::getNumberOfVectorParms
uint8_t getNumberOfVectorParms() const
Definition: XCOFFObjectFile.cpp:1269
llvm::object::XCOFFTracebackTable::isFixup
bool isFixup() const
Definition: XCOFFObjectFile.cpp:1450
llvm::object::XCOFFSectAuxEntForStat::NumberOfLineNum
support::ubig16_t NumberOfLineNum
Definition: XCOFFObjectFile.h:347
llvm::object::XCOFFAuxiliaryHeader64::MaxDataSize
support::ubig64_t MaxDataSize
Definition: XCOFFObjectFile.h:143
llvm::object::XCOFFAuxiliaryHeader64::SecNumOfLoader
support::ubig16_t SecNumOfLoader
Definition: XCOFFObjectFile.h:127
llvm::object::XCOFFFileHeader64::SymbolTableOffset
support::ubig64_t SymbolTableOffset
Definition: XCOFFObjectFile.h:48
llvm::SubtargetFeatures
Manages the enabling and disabling of subtarget specific features.
Definition: SubtargetFeature.h:183
llvm::object::XCOFFAuxiliaryHeader64::Version
support::ubig16_t Version
Definition: XCOFFObjectFile.h:118
llvm::object::XCOFFSectionHeader64::SectionSize
support::ubig64_t SectionSize
Definition: XCOFFObjectFile.h:185
B
static GCRegistry::Add< OcamlGC > B("ocaml", "ocaml 3.10-compatible GC")
llvm::object::XCOFFCsectAuxRef::getStabSectNum32
uint16_t getStabSectNum32() const
Definition: XCOFFObjectFile.h:308
llvm::object::XCOFFCsectAuxRef::XCOFFCsectAuxRef
XCOFFCsectAuxRef(const XCOFFCsectAuxEnt64 *Entry64)
Definition: XCOFFObjectFile.h:253
llvm::object::XCOFFSymbolRef::getCPUTypeIddForCFile
uint8_t getCPUTypeIddForCFile() const
Definition: XCOFFObjectFile.h:657
llvm::object::XCOFFCsectAuxEnt64::SectionOrLengthLowByte
support::ubig32_t SectionOrLengthLowByte
Definition: XCOFFObjectFile.h:236
llvm::XCOFF::SymbolTableEntrySize
constexpr size_t SymbolTableEntrySize
Definition: XCOFF.h:36
llvm::object::XCOFFAuxiliaryHeader::AuxiHeaderTDataAlignmentMask
static constexpr uint8_t AuxiHeaderTDataAlignmentMask
Definition: XCOFFObjectFile.h:56
llvm::object::XCOFFTracebackTable::isGlobalLinkage
bool isGlobalLinkage() const
Definition: XCOFFObjectFile.cpp:1389
llvm::object::DataRefImpl::p
uintptr_t p
Definition: SymbolicFile.h:39
llvm::object::XCOFFObjectFile::getPointerToSymbolTable
const void * getPointerToSymbolTable() const
Definition: XCOFFObjectFile.h:504
llvm::object::XCOFFAuxiliaryHeader32::BssDataSize
support::ubig32_t BssDataSize
Definition: XCOFFObjectFile.h:80
llvm::object::XCOFFAuxiliaryHeader64::TextPageSize
uint8_t TextPageSize
Definition: XCOFFObjectFile.h:134
llvm::object::XCOFFAuxiliaryHeader64::SecNumOfEntryPoint
support::ubig16_t SecNumOfEntryPoint
Definition: XCOFFObjectFile.h:123
llvm::object::XCOFFRelocation::Type
XCOFF::RelocationType Type
Definition: XCOFFObjectFile.h:373
llvm::object::XCOFFSectAuxEntForStat
Definition: XCOFFObjectFile.h:344
llvm::object::XCOFFAuxiliaryHeader64::ReservedForDebugger
support::ubig32_t ReservedForDebugger
Definition: XCOFFObjectFile.h:119
llvm::object::XCOFFCsectAuxEnt32::StabSectNum
support::ubig16_t StabSectNum
Definition: XCOFFObjectFile.h:232
llvm::object::XCOFFSymbolRef::XCOFFSymbolRef
XCOFFSymbolRef(DataRefImpl SymEntDataRef, const XCOFFObjectFile *OwningObjectPtr)
Definition: XCOFFObjectFile.h:626
llvm::object::XCOFFObjectFile::getSymbolByIndex
uintptr_t getSymbolByIndex(uint32_t Idx) const
Definition: XCOFFObjectFile.h:535
llvm::object::LoaderSectionHeader64::NumberOfSymTabEnt
support::ubig32_t NumberOfSymTabEnt
Definition: XCOFFObjectFile.h:208
llvm::object::LoaderSectionHeader32
Definition: XCOFFObjectFile.h:195
llvm::object::XCOFFSectionHeader64::FileOffsetToRelocationInfo
support::big64_t FileOffsetToRelocationInfo
Definition: XCOFFObjectFile.h:187
llvm::XCOFF::StorageMappingClass
StorageMappingClass
Storage Mapping Class definitions.
Definition: XCOFF.h:59
llvm::object::XCOFFCsectAuxRef::isLabel
bool isLabel() const
Definition: XCOFFObjectFile.h:301
llvm::object::XCOFFCsectAuxRef::getAuxType64
XCOFF::SymbolAuxType getAuxType64() const
Definition: XCOFFObjectFile.h:313
llvm::SmallString< 32 >
llvm::object::XCOFFCsectAuxEnt64
Definition: XCOFFObjectFile.h:235
llvm::object::XCOFFTracebackTable::isLRSaved
bool isLRSaved() const
Definition: XCOFFObjectFile.cpp:1442
llvm::MachO::FileType
FileType
Defines the file type this file represents.
Definition: InterfaceFile.h:57
llvm::object::XCOFFAuxiliaryHeader64::SecNumOfBSS
support::ubig16_t SecNumOfBSS
Definition: XCOFFObjectFile.h:128
llvm::XCOFF::NameSize
constexpr size_t NameSize
Definition: XCOFF.h:29
llvm::OutputFileType::Object
@ Object
llvm::object::XCOFFTracebackTable::isCRSaved
bool isCRSaved() const
Definition: XCOFFObjectFile.cpp:1438
llvm::object::XCOFFSectAuxEntForStat::NumberOfRelocEnt
support::ubig16_t NumberOfRelocEnt
Definition: XCOFFObjectFile.h:346
llvm::object::XCOFFFileHeader32::NumberOfSymTableEntries
support::big32_t NumberOfSymTableEntries
Definition: XCOFFObjectFile.h:35
llvm::object::XCOFFAuxiliaryHeader32::TOCAnchorAddr
support::ubig32_t TOCAnchorAddr
Definition: XCOFFObjectFile.h:84
llvm::object::XCOFFCsectAuxRef::getStorageMappingClass
XCOFF::StorageMappingClass getStorageMappingClass() const
Definition: XCOFFObjectFile.h:283
llvm::object::XCOFFSymbolEntry32::NameInStrTblType::Offset
support::ubig32_t Offset
Definition: XCOFFObjectFile.h:588
llvm::XCOFF::StorageClass
StorageClass
Definition: XCOFF.h:126
llvm::object::TBVectorExt::create
static Expected< TBVectorExt > create(StringRef TBvectorStrRef)
Definition: XCOFFObjectFile.cpp:1233
llvm::object::XCOFFAuxiliaryHeader32::FlagAndTDataAlignment
uint8_t FlagAndTDataAlignment
Definition: XCOFFObjectFile.h:111
llvm::object::XCOFFCsectAuxEnt32::SymbolAlignmentAndType
uint8_t SymbolAlignmentAndType
Definition: XCOFFObjectFile.h:229
llvm::object::XCOFFAuxiliaryHeader32::DataPageSize
uint8_t DataPageSize
Specifies the size of pages for the exec data.
Definition: XCOFFObjectFile.h:107
llvm::object::LoaderSectionHeader64
Definition: XCOFFObjectFile.h:206
llvm::object::XCOFFAuxiliaryHeader64::ModuleType
support::ubig16_t ModuleType
Definition: XCOFFObjectFile.h:131
llvm::object::XCOFFCsectAuxRef::getAlignmentLog2
uint16_t getAlignmentLog2() const
Definition: XCOFFObjectFile.h:292
object
bar al al movzbl eax ret Missed when stored in a memory object
Definition: README.txt:1411
llvm::object::XCOFFStringTable::Data
const char * Data
Definition: XCOFFObjectFile.h:222
llvm::object::XCOFFSymbolEntry64::Offset
support::ubig32_t Offset
Definition: XCOFFObjectFile.h:610
llvm::object::XCOFFTracebackTable::getNumberOfFPParms
uint8_t getNumberOfFPParms() const
Definition: XCOFFObjectFile.cpp:1475
llvm::object::XCOFFAuxiliaryHeader32::StackPageSize
uint8_t StackPageSize
Specifies the size of pages for the stack.
Definition: XCOFFObjectFile.h:109
llvm::object::XCOFFFileHeader32::SymbolTableOffset
support::ubig32_t SymbolTableOffset
Definition: XCOFFObjectFile.h:34
uint64_t
llvm::object::XCOFFTracebackTable::getVectorExt
const Optional< TBVectorExt > & getVectorExt() const
Definition: XCOFFObjectFile.h:777
llvm::object::symbol_iterator
Definition: ObjectFile.h:207
llvm::object::XCOFFRelocation::isRelocationSigned
bool isRelocationSigned() const
Definition: XCOFFObjectFile.cpp:73
getSymbolType
static std::unique_ptr< PDBSymbol > getSymbolType(const PDBSymbol &Symbol)
Definition: UDTLayout.cpp:33
llvm::object::LoaderSectionHeader64::OffsetToStrTbl
support::big64_t OffsetToStrTbl
Definition: XCOFFObjectFile.h:214
Addr
uint64_t Addr
Definition: ELFObjHandler.cpp:80
llvm::object::XCOFFFileHeader64::NumberOfSymTableEntries
support::ubig32_t NumberOfSymTableEntries
Definition: XCOFFObjectFile.h:51
llvm::object::XCOFFRelocation::getRelocatedLength
uint8_t getRelocatedLength() const
Definition: XCOFFObjectFile.cpp:83
llvm::object::XCOFFSymbolEntry64::NumberOfAuxEntries
uint8_t NumberOfAuxEntries
Definition: XCOFFObjectFile.h:619
llvm::object::XCOFFSectionHeader::SectionFlagsTypeMask
static constexpr unsigned SectionFlagsTypeMask
Definition: XCOFFObjectFile.h:154
llvm::object::XCOFFAuxiliaryHeader64::TextSize
support::ubig64_t TextSize
Definition: XCOFFObjectFile.h:138
llvm::object::XCOFFAuxiliaryHeader64::TextStartAddr
support::ubig64_t TextStartAddr
Definition: XCOFFObjectFile.h:120
llvm::object::XCOFFAuxiliaryHeader32::TextPageSize
uint8_t TextPageSize
Specifies the size of pages for the exec text.
Definition: XCOFFObjectFile.h:105
llvm::object::XCOFFCsectAuxEnt32::SectionOrLength
support::ubig32_t SectionOrLength
Definition: XCOFFObjectFile.h:226
llvm::object::LoaderSectionHeader32::LengthOfStrTbl
support::ubig32_t LengthOfStrTbl
Definition: XCOFFObjectFile.h:202
llvm::object::XCOFFTracebackTable::hasTraceBackTableOffset
bool hasTraceBackTableOffset() const
Definition: XCOFFObjectFile.cpp:1397
llvm::object::TBVectorExt
Definition: XCOFFObjectFile.h:685
assert
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
llvm::object::XCOFFSectionHeader64::Flags
support::big32_t Flags
Definition: XCOFFObjectFile.h:191
ObjectFile.h
llvm::object::XCOFFFileHeader32::TimeStamp
support::big32_t TimeStamp
Definition: XCOFFObjectFile.h:32
llvm::object::XCOFFAuxiliaryHeader64::DataPageSize
uint8_t DataPageSize
Definition: XCOFFObjectFile.h:135
llvm::object::content_iterator
Definition: SymbolicFile.h:67
llvm::object::XCOFFSymbolRef::getSectionNumber
int16_t getSectionNumber() const
Definition: XCOFFObjectFile.h:647
llvm::object::LoaderSectionHeader64::OffsetToSymTbl
support::big64_t OffsetToSymTbl
Definition: XCOFFObjectFile.h:215
llvm::object::XCOFFStringTable
Definition: XCOFFObjectFile.h:220
llvm::XCOFF::FileNamePadSize
constexpr size_t FileNamePadSize
Definition: XCOFF.h:28
llvm::object::XCOFFCsectAuxRef::XCOFFCsectAuxRef
XCOFFCsectAuxRef(const XCOFFCsectAuxEnt32 *Entry32)
Definition: XCOFFObjectFile.h:252
llvm::object::XCOFFSymbolRef::getLanguageIdForCFile
uint8_t getLanguageIdForCFile() const
Definition: XCOFFObjectFile.h:651
llvm::object::XCOFFAuxiliaryHeader64::EntryPointAddr
support::ubig64_t EntryPointAddr
Definition: XCOFFObjectFile.h:141
llvm::object::XCOFFCsectAuxEnt64::ParameterHashIndex
support::ubig32_t ParameterHashIndex
Definition: XCOFFObjectFile.h:237
llvm::object::LoaderSectionHeader32::NumberOfImpid
support::ubig32_t NumberOfImpid
Definition: XCOFFObjectFile.h:200
llvm::object::ObjectFile::createXCOFFObjectFile
static Expected< std::unique_ptr< ObjectFile > > createXCOFFObjectFile(MemoryBufferRef Object, unsigned FileType)
Definition: XCOFFObjectFile.cpp:1102
llvm::object::XCOFFSymbolEntry32::CFileLanguageIdAndTypeId
CFileLanguageIdAndTypeIdType CFileLanguageIdAndTypeId
Definition: XCOFFObjectFile.h:601
llvm::object::XCOFFRelocation::Info
uint8_t Info
Definition: XCOFFObjectFile.h:371
llvm::object::XCOFFRelocation::isFixupIndicated
bool isFixupIndicated() const
Definition: XCOFFObjectFile.cpp:78
llvm::object::XCOFFSymbolEntry64::StorageClass
XCOFF::StorageClass StorageClass
Definition: XCOFFObjectFile.h:618
llvm::ArrayRef
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
Definition: APInt.h:32
llvm::object::XCOFFAuxiliaryHeader64::StackPageSize
uint8_t StackPageSize
Definition: XCOFFObjectFile.h:136
llvm::object::XCOFFCsectAuxEnt32::StorageMappingClass
XCOFF::StorageMappingClass StorageMappingClass
Definition: XCOFFObjectFile.h:230
llvm::StringRef
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:57
llvm::object::XCOFFSymbolRef::getStorageClass
XCOFF::StorageClass getStorageClass() const
Definition: XCOFFObjectFile.h:663
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
llvm::object::XCOFFTracebackTable::create
static Expected< XCOFFTracebackTable > create(const uint8_t *Ptr, uint64_t &Size)
Parse an XCOFF Traceback Table from Ptr with Size bytes.
Definition: XCOFFObjectFile.cpp:1280
llvm::object::LoaderSectionHeader64::LengthOfStrTbl
support::ubig32_t LengthOfStrTbl
Definition: XCOFFObjectFile.h:212
llvm::object::XCOFFTracebackTable::hasControlledStorage
bool hasControlledStorage() const
Definition: XCOFFObjectFile.cpp:1405
llvm::object::XCOFFRelocation::SymbolIndex
support::ubig32_t SymbolIndex
Definition: XCOFFObjectFile.h:368
uint32_t
llvm::object::XCOFFTracebackTable::getParmsType
const Optional< SmallString< 32 > > & getParmsType() const
Definition: XCOFFObjectFile.h:766
llvm::object::XCOFFSymbolEntry64::SymbolType
support::ubig16_t SymbolType
Definition: XCOFFObjectFile.h:614
llvm::object::XCOFFAuxiliaryHeader::getTDataAlignment
uint8_t getTDataAlignment() const
Definition: XCOFFObjectFile.h:63
llvm::object::XCOFFAuxiliaryHeader32
Definition: XCOFFObjectFile.h:69
llvm::object::XCOFFCsectAuxEnt64::SymbolAlignmentAndType
uint8_t SymbolAlignmentAndType
Definition: XCOFFObjectFile.h:239
llvm::object::DataRefImpl
Definition: SymbolicFile.h:33
llvm::object::LoaderSectionHeader32::OffsetToImpid
support::big32_t OffsetToImpid
Definition: XCOFFObjectFile.h:201
llvm::object::XCOFFSectionHeader32::FileOffsetToLineNumberInfo
support::ubig32_t FileOffsetToLineNumberInfo
Definition: XCOFFObjectFile.h:175
llvm::XCOFF::SymbolAuxType
SymbolAuxType
Definition: XCOFF.h:295
llvm::object::XCOFFFileAuxEnt::NameInStrTbl
NameInStrTblType NameInStrTbl
Definition: XCOFFObjectFile.h:337
llvm::object::XCOFFFileHeader64::NumberOfSections
support::ubig16_t NumberOfSections
Definition: XCOFFObjectFile.h:42
llvm::object::XCOFFAuxiliaryHeader32::SecNumOfBSS
support::ubig16_t SecNumOfBSS
Definition: XCOFFObjectFile.h:90
llvm::object::TBVectorExt::getNumberOfVRSaved
uint8_t getNumberOfVRSaved() const
Definition: XCOFFObjectFile.cpp:1257
llvm::object::XCOFFSectionHeader64::NumberOfRelocations
support::ubig32_t NumberOfRelocations
Definition: XCOFFObjectFile.h:189
llvm::object::XCOFFObjectFile::classof
static bool classof(const Binary *B)
Definition: XCOFFObjectFile.h:577
llvm::object::XCOFFCsectAuxEnt32
Definition: XCOFFObjectFile.h:225
llvm::object::XCOFFAuxiliaryHeader32::ModuleType
support::ubig16_t ModuleType
Definition: XCOFFObjectFile.h:93
llvm::object::XCOFFAuxiliaryHeader32::MaxAlignOfData
support::ubig16_t MaxAlignOfData
Definition: XCOFFObjectFile.h:92
llvm::object::XCOFFTracebackTable::getNumOfCtlAnchors
const Optional< uint32_t > & getNumOfCtlAnchors()
Definition: XCOFFObjectFile.h:771
llvm::object::XCOFFSectionHeader::getName
StringRef getName() const
Definition: XCOFFObjectFile.cpp:57
llvm::object::XCOFFCsectAuxRef::getEntryAddress
uintptr_t getEntryAddress() const
Definition: XCOFFObjectFile.h:287
llvm::object::XCOFFAuxiliaryHeader64::MaxStackSize
support::ubig64_t MaxStackSize
Definition: XCOFFObjectFile.h:142
llvm::object::XCOFFAuxiliaryHeader64::CpuType
uint8_t CpuType
Definition: XCOFFObjectFile.h:133
llvm::object::XCOFFSymbolRef::getValue32
uint32_t getValue32() const
Definition: XCOFFObjectFile.h:641
llvm::object::XCOFFAuxiliaryHeader32::SecNumOfData
support::ubig16_t SecNumOfData
Definition: XCOFFObjectFile.h:87
llvm::object::XCOFFFileHeader32::Flags
support::ubig16_t Flags
Definition: XCOFFObjectFile.h:37
llvm::object::XCOFFTracebackTable::isAllocaUsed
bool isAllocaUsed() const
Definition: XCOFFObjectFile.cpp:1429
llvm::object::XCOFFAuxiliaryHeader32::SecNumOfTBSS
support::ubig16_t SecNumOfTBSS
Definition: XCOFFObjectFile.h:113
llvm::object::XCOFFSectionHeader64::FileOffsetToLineNumberInfo
support::big64_t FileOffsetToLineNumberInfo
Definition: XCOFFObjectFile.h:188
llvm::GraphProgram::Name
Name
Definition: GraphWriter.h:52
llvm::object::XCOFFSectionHeader32::SectionSize
support::ubig32_t SectionSize
Definition: XCOFFObjectFile.h:172
uint16_t
getFlags
static uint32_t getFlags(const Symbol *Sym)
Definition: TapiFile.cpp:23
llvm::object::XCOFFTracebackTable::getNumberOfFixedParms
uint8_t getNumberOfFixedParms() const
Definition: XCOFFObjectFile.cpp:1470
llvm::object::XCOFFAuxiliaryHeader64::BssDataSize
support::ubig64_t BssDataSize
Definition: XCOFFObjectFile.h:140
llvm::object::XCOFFTracebackTable::hasExtensionTable
bool hasExtensionTable() const
Definition: XCOFFObjectFile.cpp:1458
llvm::Error
Lightweight error class with error context and mandatory checking.
Definition: Error.h:157
llvm::object::XCOFFTracebackTable::isInternalProcedure
bool isInternalProcedure() const
Definition: XCOFFObjectFile.cpp:1401
llvm::object::XCOFFAuxiliaryHeader64::DataStartAddr
support::ubig64_t DataStartAddr
Definition: XCOFFObjectFile.h:121
llvm::object::XCOFFFileHeader64::Flags
support::ubig16_t Flags
Definition: XCOFFObjectFile.h:50
llvm::object::XCOFFTracebackTable::getNumOfFPRsSaved
uint8_t getNumOfFPRsSaved() const
Definition: XCOFFObjectFile.cpp:1454
llvm::object::LoaderSectionHeader64::NumberOfImpid
support::ubig32_t NumberOfImpid
Definition: XCOFFObjectFile.h:211
llvm::object::XCOFFRelocation32
Definition: XCOFFObjectFile.h:386
llvm::XCOFF::RelocationType
RelocationType
Definition: XCOFF.h:216
llvm::object::XCOFFSectionHeader64::FileOffsetToRawData
support::big64_t FileOffsetToRawData
Definition: XCOFFObjectFile.h:186
llvm::object::XCOFFSectionHeader64::VirtualAddress
support::ubig64_t VirtualAddress
Definition: XCOFFObjectFile.h:184
llvm::object::XCOFFSymbolEntry64::CFileLanguageIdAndTypeId
CFileLanguageIdAndTypeIdType CFileLanguageIdAndTypeId
Definition: XCOFFObjectFile.h:615
llvm::object::XCOFFCsectAuxRef::getStabInfoIndex32
uint32_t getStabInfoIndex32() const
Definition: XCOFFObjectFile.h:303
llvm::object::XCOFFCsectAuxEnt64::AuxType
XCOFF::SymbolAuxType AuxType
Definition: XCOFFObjectFile.h:243
llvm::object::XCOFFCsectAuxEnt64::Pad
uint8_t Pad
Definition: XCOFFObjectFile.h:242
llvm::object::LoaderSectionHeader64::Version
support::ubig32_t Version
Definition: XCOFFObjectFile.h:207
llvm::object::TBVectorExt::isVRSavedOnStack
bool isVRSavedOnStack() const
Definition: XCOFFObjectFile.cpp:1261
llvm::object::LoaderSectionHeader32::OffsetToStrTbl
support::big32_t OffsetToStrTbl
Definition: XCOFFObjectFile.h:203
getFeatures
static FeatureBitset getFeatures(StringRef CPU, StringRef TuneCPU, StringRef FS, ArrayRef< SubtargetSubTypeKV > ProcDesc, ArrayRef< SubtargetFeatureKV > ProcFeatures)
Definition: MCSubtargetInfo.cpp:150
llvm::object::XCOFFTracebackTable::getControlledStorageInfoDisp
const Optional< SmallVector< uint32_t, 8 > > & getControlledStorageInfoDisp()
Definition: XCOFFObjectFile.h:772
llvm::object::XCOFFSectionHeader64
Definition: XCOFFObjectFile.h:181
llvm::object::XCOFFFileHeader64::TimeStamp
support::big32_t TimeStamp
Definition: XCOFFObjectFile.h:46
llvm::object::XCOFFSymbolEntry32::SymbolName
char SymbolName[XCOFF::NameSize]
Definition: XCOFFObjectFile.h:592
llvm::object::XCOFFAuxiliaryHeader32::Version
support::ubig16_t Version
The valid values are 1 and 2.
Definition: XCOFFObjectFile.h:75
llvm::object::XCOFFTracebackTable::getOnConditionDirective
uint8_t getOnConditionDirective() const
Definition: XCOFFObjectFile.cpp:1433
llvm::object::XCOFFCsectAuxEnt64::TypeChkSectNum
support::ubig16_t TypeChkSectNum
Definition: XCOFFObjectFile.h:238
llvm::object::XCOFFFileAuxEnt::Type
XCOFF::CFileStringType Type
Definition: XCOFFObjectFile.h:339
SmallVector.h
getSymbolSectionID
static unsigned getSymbolSectionID(const ObjectFile &O, SymbolRef Sym)
Definition: SymbolSize.cpp:39
llvm::COFF::isReservedSectionNumber
bool isReservedSectionNumber(int32_t SectionNumber)
Definition: COFF.h:730
llvm::object::XCOFFTracebackTable::isFloatingPointOperationLogOrAbortEnabled
bool isFloatingPointOperationLogOrAbortEnabled() const
Definition: XCOFFObjectFile.cpp:1417
llvm::object::XCOFFAuxiliaryHeader32::SecNumOfEntryPoint
support::ubig16_t SecNumOfEntryPoint
Definition: XCOFFObjectFile.h:85
llvm::object::XCOFFSectionHeader32::PhysicalAddress
support::ubig32_t PhysicalAddress
Definition: XCOFFObjectFile.h:170
llvm::object::XCOFFSymbolRef::isCsectSymbol
bool isCsectSymbol() const
Definition: XCOFFObjectFile.cpp:1141
llvm::object::XCOFFRelocation::XR_BIASED_LENGTH_MASK
static constexpr uint8_t XR_BIASED_LENGTH_MASK
Definition: XCOFFObjectFile.h:364
llvm::object::XCOFFObjectFile
Definition: XCOFFObjectFile.h:391
llvm::max
Align max(MaybeAlign Lhs, Align Rhs)
Definition: Alignment.h:340
llvm::object::XCOFFTracebackTable
This class provides methods to extract traceback table data from a buffer.
Definition: XCOFFObjectFile.h:704
llvm::object::LoaderSectionHeader64::OffsetToRelEnt
support::big32_t OffsetToRelEnt
Definition: XCOFFObjectFile.h:217
llvm::object::XCOFFAuxiliaryHeader32::TextStartAddr
support::ubig32_t TextStartAddr
Definition: XCOFFObjectFile.h:82
llvm::object::XCOFFCsectAuxEnt32::StabInfoIndex
support::ubig32_t StabInfoIndex
Definition: XCOFFObjectFile.h:231
llvm::SmallVectorImpl< char >
llvm::object::XCOFFSymbolRef::getSymbolType
uint16_t getSymbolType() const
Definition: XCOFFObjectFile.h:649
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::XCOFFAuxiliaryHeader32::InitDataSize
support::ubig32_t InitDataSize
Definition: XCOFFObjectFile.h:79
llvm::XCOFF::CFileStringType
CFileStringType
Definition: XCOFF.h:277
llvm::object::XCOFFFileAuxEnt::ReservedZeros
uint8_t ReservedZeros[2]
Definition: XCOFFObjectFile.h:340
llvm::object::XCOFFSymbolRef::getEntryAddress
uintptr_t getEntryAddress() const
Definition: XCOFFObjectFile.h:669
llvm::object::XCOFFFileAuxEnt::AuxType
XCOFF::SymbolAuxType AuxType
Definition: XCOFFObjectFile.h:341
llvm::object::XCOFFCsectAuxRef::getSectionOrLength32
uint32_t getSectionOrLength32() const
Definition: XCOFFObjectFile.h:264
llvm::object::XCOFFSymbolRef::getValue
uint64_t getValue() const
Definition: XCOFFObjectFile.h:639
llvm::object::XCOFFAuxiliaryHeader::AuxiHeaderFlagMask
static constexpr uint8_t AuxiHeaderFlagMask
Definition: XCOFFObjectFile.h:55
llvm::object::XCOFFCsectAuxRef::getSectionOrLength64
uint64_t getSectionOrLength64() const
Definition: XCOFFObjectFile.h:269
llvm::object::XCOFFAuxiliaryHeader32::EntryPointAddr
support::ubig32_t EntryPointAddr
Definition: XCOFFObjectFile.h:81
llvm::object::XCOFFSectionHeader::getSectionType
uint16_t getSectionType() const
Definition: XCOFFObjectFile.cpp:62
getSymbolName
static StringRef getSymbolName(SymbolKind SymKind)
Definition: CodeViewDebug.cpp:3044
Endian.h
llvm::object::XCOFFSymbolEntry32::NameInStrTbl
NameInStrTblType NameInStrTbl
Definition: XCOFFObjectFile.h:593
llvm::object::XCOFFSymbolEntry32::Value
support::ubig32_t Value
Definition: XCOFFObjectFile.h:596
llvm::object::XCOFFFileAuxEnt
Definition: XCOFFObjectFile.h:329
llvm::object::XCOFFAuxiliaryHeader64::XCOFF64Flag
support::ubig16_t XCOFF64Flag
Definition: XCOFFObjectFile.h:146
llvm::object::XCOFFAuxiliaryHeader64::SecNumOfText
support::ubig16_t SecNumOfText
Definition: XCOFFObjectFile.h:124
llvm::object::XCOFFSymbolEntry32
Definition: XCOFFObjectFile.h:585
llvm::object::LoaderSectionHeader32::NumberOfSymTabEnt
support::ubig32_t NumberOfSymTabEnt
Definition: XCOFFObjectFile.h:197
llvm::object::XCOFFCsectAuxEnt64::SectionOrLengthHighByte
support::ubig32_t SectionOrLengthHighByte
Definition: XCOFFObjectFile.h:241
llvm::object::XCOFFAuxiliaryHeader64::AuxMagic
support::ubig16_t AuxMagic
Definition: XCOFFObjectFile.h:117
llvm::object::XCOFFAuxiliaryHeader32::CpuFlag
uint8_t CpuFlag
Definition: XCOFFObjectFile.h:94
llvm::object::XCOFFRelocation
Definition: XCOFFObjectFile.h:351
llvm::object::doesXCOFFTracebackTableBegin
bool doesXCOFFTracebackTableBegin(ArrayRef< uint8_t > Bytes)
Definition: XCOFFObjectFile.cpp:1222
llvm::object::XCOFFTracebackTable::hasVectorInfo
bool hasVectorInfo() const
Definition: XCOFFObjectFile.cpp:1462
Shdr
Elf_Shdr Shdr
Definition: ELFObjHandler.cpp:79
llvm::object::XCOFFSectionHeader32::Flags
support::big32_t Flags
Definition: XCOFFObjectFile.h:178
llvm::object::LoaderSectionHeader32::LengthOfImpidStrTbl
support::ubig32_t LengthOfImpidStrTbl
Definition: XCOFFObjectFile.h:199
llvm::object::XCOFFSymbolEntry32::NameInStrTblType::Magic
support::big32_t Magic
Definition: XCOFFObjectFile.h:587
llvm::object::XCOFFSymbolEntry32::NumberOfAuxEntries
uint8_t NumberOfAuxEntries
Definition: XCOFFObjectFile.h:605
llvm::object::XCOFFFileHeader32::NumberOfSections
support::ubig16_t NumberOfSections
Definition: XCOFFObjectFile.h:28
llvm::object::XCOFFFileHeader32::Magic
support::ubig16_t Magic
Definition: XCOFFObjectFile.h:27
llvm::object::XCOFFTracebackTable::getLanguageID
uint8_t getLanguageID() const
Definition: XCOFFObjectFile.cpp:1385