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 XCOFFSectionHeader {
55  // Least significant 3 bits are reserved.
56  static constexpr unsigned SectionFlagsReservedMask = 0x7;
57 
58  // The low order 16 bits of section flags denotes the section type.
59  static constexpr unsigned SectionFlagsTypeMask = 0xffffu;
60 
61 public:
62  StringRef getName() const;
63  uint16_t getSectionType() const;
64  bool isReservedSectionType() const;
65 };
66 
67 // Explicit extern template declarations.
70 extern template struct XCOFFSectionHeader<XCOFFSectionHeader32>;
71 extern template struct XCOFFSectionHeader<XCOFFSectionHeader64>;
72 
84 };
85 
97  char Padding[4];
98 };
99 
102  const char *Data;
103 };
104 
113 };
114 
122  uint8_t Pad;
124 };
125 
127 public:
128  static constexpr uint8_t SymbolTypeMask = 0x07;
129  static constexpr uint8_t SymbolAlignmentMask = 0xF8;
130  static constexpr size_t SymbolAlignmentBitOffset = 3;
131 
132  XCOFFCsectAuxRef(const XCOFFCsectAuxEnt32 *Entry32) : Entry32(Entry32) {}
133  XCOFFCsectAuxRef(const XCOFFCsectAuxEnt64 *Entry64) : Entry64(Entry64) {}
134 
135  // For getSectionOrLength(),
136  // If the symbol type is XTY_SD or XTY_CM, the csect length.
137  // If the symbol type is XTY_LD, the symbol table
138  // index of the containing csect.
139  // If the symbol type is XTY_ER, 0.
140  uint64_t getSectionOrLength() const {
141  return Entry32 ? getSectionOrLength32() : getSectionOrLength64();
142  }
143 
145  assert(Entry32 && "32-bit interface called on 64-bit object file.");
146  return Entry32->SectionOrLength;
147  }
148 
149  uint64_t getSectionOrLength64() const {
150  assert(Entry64 && "64-bit interface called on 32-bit object file.");
151  return (static_cast<uint64_t>(Entry64->SectionOrLengthHighByte) << 32) |
152  Entry64->SectionOrLengthLowByte;
153  }
154 
155 #define GETVALUE(X) Entry32 ? Entry32->X : Entry64->X
156 
158  return GETVALUE(ParameterHashIndex);
159  }
160 
161  uint16_t getTypeChkSectNum() const { return GETVALUE(TypeChkSectNum); }
162 
165  }
166 
167  uintptr_t getEntryAddress() const {
168  return Entry32 ? reinterpret_cast<uintptr_t>(Entry32)
169  : reinterpret_cast<uintptr_t>(Entry64);
170  }
171 
173  return (getSymbolAlignmentAndType() & SymbolAlignmentMask) >>
174  SymbolAlignmentBitOffset;
175  }
176 
177  uint8_t getSymbolType() const {
178  return getSymbolAlignmentAndType() & SymbolTypeMask;
179  }
180 
181  bool isLabel() const { return getSymbolType() == XCOFF::XTY_LD; }
182 
184  assert(Entry32 && "32-bit interface called on 64-bit object file.");
185  return Entry32->StabInfoIndex;
186  }
187 
189  assert(Entry32 && "32-bit interface called on 64-bit object file.");
190  return Entry32->StabSectNum;
191  }
192 
194  assert(Entry64 && "64-bit interface called on 32-bit object file.");
195  return Entry64->AuxType;
196  }
197 
198 private:
199  uint8_t getSymbolAlignmentAndType() const {
200  return GETVALUE(SymbolAlignmentAndType);
201  }
202 
203 #undef GETVALUE
204 
205  const XCOFFCsectAuxEnt32 *Entry32 = nullptr;
206  const XCOFFCsectAuxEnt64 *Entry64 = nullptr;
207 };
208 
210  typedef struct {
211  support::big32_t Magic; // Zero indicates name in string table.
213  char NamePad[XCOFF::FileNamePadSize];
215  union {
218  };
220  uint8_t ReservedZeros[2];
221  XCOFF::SymbolAuxType AuxType; // 64-bit XCOFF file only.
222 };
223 
228  uint8_t Pad[10];
229 }; // 32-bit XCOFF file only.
230 
232  // Masks for packing/unpacking the r_rsize field of relocations.
233 
234  // The msb is used to indicate if the bits being relocated are signed or
235  // unsigned.
236  static constexpr uint8_t XR_SIGN_INDICATOR_MASK = 0x80;
237 
238  // The 2nd msb is used to indicate that the binder has replaced/modified the
239  // original instruction.
240  static constexpr uint8_t XR_FIXUP_INDICATOR_MASK = 0x40;
241 
242  // The remaining bits specify the bit length of the relocatable reference
243  // minus one.
244  static constexpr uint8_t XR_BIASED_LENGTH_MASK = 0x3f;
245 
246 public:
249 
250  // Packed field, see XR_* masks for details of packing.
251  uint8_t Info;
252 
254 
255 public:
256  bool isRelocationSigned() const;
257  bool isFixupIndicated() const;
258 
259  // Returns the number of bits being relocated.
260  uint8_t getRelocatedLength() const;
261 };
262 
263 class XCOFFSymbolRef;
264 
265 class XCOFFObjectFile : public ObjectFile {
266 private:
267  const void *FileHeader = nullptr;
268  const void *SectionHeaderTable = nullptr;
269 
270  const void *SymbolTblPtr = nullptr;
271  XCOFFStringTable StringTable = {0, nullptr};
272 
273  const XCOFFFileHeader32 *fileHeader32() const;
274  const XCOFFFileHeader64 *fileHeader64() const;
275 
276  const XCOFFSectionHeader32 *sectionHeaderTable32() const;
277  const XCOFFSectionHeader64 *sectionHeaderTable64() const;
278 
279  size_t getFileHeaderSize() const;
280  size_t getSectionHeaderSize() const;
281 
282  const XCOFFSectionHeader32 *toSection32(DataRefImpl Ref) const;
283  const XCOFFSectionHeader64 *toSection64(DataRefImpl Ref) const;
284  uintptr_t getSectionHeaderTableAddress() const;
285  uintptr_t getEndOfSymbolTableAddress() const;
286 
287  // This returns a pointer to the start of the storage for the name field of
288  // the 32-bit or 64-bit SectionHeader struct. This string is *not* necessarily
289  // null-terminated.
290  const char *getSectionNameInternal(DataRefImpl Sec) const;
291 
292  static bool isReservedSectionNumber(int16_t SectionNumber);
293 
294  // Constructor and "create" factory function. The constructor is only a thin
295  // wrapper around the base constructor. The "create" function fills out the
296  // XCOFF-specific information and performs the error checking along the way.
298  static Expected<std::unique_ptr<XCOFFObjectFile>> create(unsigned Type,
299  MemoryBufferRef MBR);
300 
301  // Helper for parsing the StringTable. Returns an 'Error' if parsing failed
302  // and an XCOFFStringTable if parsing succeeded.
303  static Expected<XCOFFStringTable> parseStringTable(const XCOFFObjectFile *Obj,
304  uint64_t Offset);
305 
306  // Make a friend so it can call the private 'create' function.
309 
310  void checkSectionAddress(uintptr_t Addr, uintptr_t TableAddr) const;
311 
312 public:
313  static constexpr uint64_t InvalidRelocOffset =
315 
316  // Interface inherited from base classes.
317  void moveSymbolNext(DataRefImpl &Symb) const override;
318  Expected<uint32_t> getSymbolFlags(DataRefImpl Symb) const override;
319  basic_symbol_iterator symbol_begin() const override;
320  basic_symbol_iterator symbol_end() const override;
321 
322  Expected<StringRef> getSymbolName(DataRefImpl Symb) const override;
323  Expected<uint64_t> getSymbolAddress(DataRefImpl Symb) const override;
324  uint64_t getSymbolValueImpl(DataRefImpl Symb) const override;
325  uint64_t getCommonSymbolSizeImpl(DataRefImpl Symb) const override;
328 
329  void moveSectionNext(DataRefImpl &Sec) const override;
330  Expected<StringRef> getSectionName(DataRefImpl Sec) const override;
331  uint64_t getSectionAddress(DataRefImpl Sec) const override;
332  uint64_t getSectionIndex(DataRefImpl Sec) const override;
333  uint64_t getSectionSize(DataRefImpl Sec) const override;
335  getSectionContents(DataRefImpl Sec) const override;
336  uint64_t getSectionAlignment(DataRefImpl Sec) const override;
337  bool isSectionCompressed(DataRefImpl Sec) const override;
338  bool isSectionText(DataRefImpl Sec) const override;
339  bool isSectionData(DataRefImpl Sec) const override;
340  bool isSectionBSS(DataRefImpl Sec) const override;
341  bool isDebugSection(DataRefImpl Sec) const override;
342 
343  bool isSectionVirtual(DataRefImpl Sec) const override;
345  relocation_iterator section_rel_end(DataRefImpl Sec) const override;
346 
347  void moveRelocationNext(DataRefImpl &Rel) const override;
348 
349  /// \returns the relocation offset with the base address of the containing
350  /// section as zero, or InvalidRelocOffset on errors (such as a relocation
351  /// that does not refer to an address in any section).
352  uint64_t getRelocationOffset(DataRefImpl Rel) const override;
353  symbol_iterator getRelocationSymbol(DataRefImpl Rel) const override;
354  uint64_t getRelocationType(DataRefImpl Rel) const override;
356  SmallVectorImpl<char> &Result) const override;
357 
358  section_iterator section_begin() const override;
359  section_iterator section_end() const override;
360  uint8_t getBytesInAddress() const override;
361  StringRef getFileFormatName() const override;
362  Triple::ArchType getArch() const override;
363  SubtargetFeatures getFeatures() const override;
364  Expected<uint64_t> getStartAddress() const override;
366  bool isRelocatableObject() const override;
367 
368  // Below here is the non-inherited interface.
369  bool is64Bit() const;
370 
371  const void *getPointerToSymbolTable() const { return SymbolTblPtr; }
372 
374  unsigned getSymbolSectionID(SymbolRef Sym) const;
376 
377  // File header related interfaces.
378  uint16_t getMagic() const;
380  int32_t getTimeStamp() const;
381 
382  // Symbol table offset and entry count are handled differently between
383  // XCOFF32 and XCOFF64.
385  uint64_t getSymbolTableOffset64() const;
386 
387  // Note that this value is signed and might return a negative value. Negative
388  // values are reserved for future use.
389  int32_t getRawNumberOfSymbolTableEntries32() const;
390 
391  // The sanitized value appropriate to use as an index into the symbol table.
393 
395 
396  // Return getLogicalNumberOfSymbolTableEntries32 or
397  // getNumberOfSymbolTableEntries64 depending on the object mode.
399 
400  uint32_t getSymbolIndex(uintptr_t SymEntPtr) const;
401  uintptr_t getSymbolEntryAddressByIndex(uint32_t SymbolTableIndex) const;
402  Expected<StringRef> getSymbolNameByIndex(uint32_t SymbolTableIndex) const;
403 
404  Expected<StringRef> getCFileName(const XCOFFFileAuxEnt *CFileEntPtr) const;
406  uint16_t getFlags() const;
407 
408  // Section header table related interfaces.
411 
412  int32_t getSectionFlags(DataRefImpl Sec) const;
413  Expected<DataRefImpl> getSectionByNum(int16_t Num) const;
414 
415  void checkSymbolEntryPointer(uintptr_t SymbolEntPtr) const;
416 
417  // Relocation-related interfaces.
420 
422  relocations(const XCOFFSectionHeader32 &) const;
423 
424  // This function returns string table entry.
426 
427  // This function returns the string table.
428  StringRef getStringTable() const;
429 
430  const XCOFF::SymbolAuxType *getSymbolAuxType(uintptr_t AuxEntryAddress) const;
431 
432  static uintptr_t getAdvancedSymbolEntryAddress(uintptr_t CurrentAddress,
433  uint32_t Distance);
434 
435  static bool classof(const Binary *B) { return B->isXCOFF(); }
436 }; // XCOFFObjectFile
437 
438 typedef struct {
439  uint8_t LanguageId;
440  uint8_t CpuTypeId;
442 
444  typedef struct {
445  support::big32_t Magic; // Zero indicates name in string table.
448 
449  union {
452  };
453 
454  support::ubig32_t Value; // Symbol value; storage class-dependent.
456 
457  union {
460  };
461 
464 };
465 
467  support::ubig64_t Value; // Symbol value; storage class-dependent.
470 
471  union {
474  };
475 
478 };
479 
481 public:
482  enum { NAME_IN_STR_TBL_MAGIC = 0x0 };
483 
485  const XCOFFObjectFile *OwningObjectPtr)
486  : OwningObjectPtr(OwningObjectPtr) {
487  assert(OwningObjectPtr && "OwningObjectPtr cannot be nullptr!");
488  assert(SymEntDataRef.p != 0 &&
489  "Symbol table entry pointer cannot be nullptr!");
490 
491  if (OwningObjectPtr->is64Bit())
492  Entry64 = reinterpret_cast<const XCOFFSymbolEntry64 *>(SymEntDataRef.p);
493  else
494  Entry32 = reinterpret_cast<const XCOFFSymbolEntry32 *>(SymEntDataRef.p);
495  }
496 
497  uint64_t getValue() const { return Entry32 ? getValue32() : getValue64(); }
498 
499  uint32_t getValue32() const { return Entry32->Value; }
500 
501  uint64_t getValue64() const { return Entry64->Value; }
502 
503 #define GETVALUE(X) Entry32 ? Entry32->X : Entry64->X
504 
505  int16_t getSectionNumber() const { return GETVALUE(SectionNumber); }
506 
508 
509  uint8_t getLanguageIdForCFile() const {
511  "This interface is for C_FILE only.");
512  return GETVALUE(CFileLanguageIdAndTypeId.LanguageId);
513  }
514 
515  uint8_t getCPUTypeIddForCFile() const {
517  "This interface is for C_FILE only.");
518  return GETVALUE(CFileLanguageIdAndTypeId.CpuTypeId);
519  }
520 
522 
523  uint8_t getNumberOfAuxEntries() const { return GETVALUE(NumberOfAuxEntries); }
524 
525 #undef GETVALUE
526 
527  uintptr_t getEntryAddress() const {
528  return Entry32 ? reinterpret_cast<uintptr_t>(Entry32)
529  : reinterpret_cast<uintptr_t>(Entry64);
530  }
531 
533  bool isFunction() const;
534  bool isCsectSymbol() const;
536 
537 private:
538  const XCOFFObjectFile *OwningObjectPtr;
539  const XCOFFSymbolEntry32 *Entry32 = nullptr;
540  const XCOFFSymbolEntry64 *Entry64 = nullptr;
541 };
542 
543 class TBVectorExt {
544  uint16_t Data;
545  SmallString<32> VecParmsInfo;
546 
547  TBVectorExt(StringRef TBvectorStrRef, Error &Err);
548 
549 public:
550  static Expected<TBVectorExt> create(StringRef TBvectorStrRef);
551  uint8_t getNumberOfVRSaved() const;
552  bool isVRSavedOnStack() const;
553  bool hasVarArgs() const;
554  uint8_t getNumberOfVectorParms() const;
555  bool hasVMXInstruction() const;
556  SmallString<32> getVectorParmsInfo() const { return VecParmsInfo; };
557 };
558 
559 /// This class provides methods to extract traceback table data from a buffer.
560 /// The various accessors may reference the buffer provided via the constructor.
561 
563  const uint8_t *const TBPtr;
564  Optional<SmallString<32>> ParmsType;
565  Optional<uint32_t> TraceBackTableOffset;
566  Optional<uint32_t> HandlerMask;
567  Optional<uint32_t> NumOfCtlAnchors;
568  Optional<SmallVector<uint32_t, 8>> ControlledStorageInfoDisp;
569  Optional<StringRef> FunctionName;
570  Optional<uint8_t> AllocaRegister;
571  Optional<TBVectorExt> VecExt;
572  Optional<uint8_t> ExtensionTable;
573 
574  XCOFFTracebackTable(const uint8_t *Ptr, uint64_t &Size, Error &Err);
575 public:
576  /// Parse an XCOFF Traceback Table from \a Ptr with \a Size bytes.
577  /// Returns an XCOFFTracebackTable upon successful parsing, otherwise an
578  /// Error is returned.
579  ///
580  /// \param[in] Ptr
581  /// A pointer that points just past the initial 4 bytes of zeros at the
582  /// beginning of an XCOFF Traceback Table.
583  ///
584  /// \param[in, out] Size
585  /// A pointer that points to the length of the XCOFF Traceback Table.
586  /// If the XCOFF Traceback Table is not parsed successfully or there are
587  /// extra bytes that are not recognized, \a Size will be updated to be the
588  /// size up to the end of the last successfully parsed field of the table.
589  static Expected<XCOFFTracebackTable> create(const uint8_t *Ptr,
590  uint64_t &Size);
591  uint8_t getVersion() const;
592  uint8_t getLanguageID() const;
593 
594  bool isGlobalLinkage() const;
595  bool isOutOfLineEpilogOrPrologue() const;
596  bool hasTraceBackTableOffset() const;
597  bool isInternalProcedure() const;
598  bool hasControlledStorage() const;
599  bool isTOCless() const;
600  bool isFloatingPointPresent() const;
602 
603  bool isInterruptHandler() const;
604  bool isFuncNamePresent() const;
605  bool isAllocaUsed() const;
606  uint8_t getOnConditionDirective() const;
607  bool isCRSaved() const;
608  bool isLRSaved() const;
609 
610  bool isBackChainStored() const;
611  bool isFixup() const;
612  uint8_t getNumOfFPRsSaved() const;
613 
614  bool hasVectorInfo() const;
615  bool hasExtensionTable() const;
616  uint8_t getNumOfGPRsSaved() const;
617 
618  uint8_t getNumberOfFixedParms() const;
619 
620  uint8_t getNumberOfFPParms() const;
621  bool hasParmsOnStack() const;
622 
623  const Optional<SmallString<32>> &getParmsType() const { return ParmsType; }
625  return TraceBackTableOffset;
626  }
627  const Optional<uint32_t> &getHandlerMask() const { return HandlerMask; }
628  const Optional<uint32_t> &getNumOfCtlAnchors() { return NumOfCtlAnchors; }
630  return ControlledStorageInfoDisp;
631  }
632  const Optional<StringRef> &getFunctionName() const { return FunctionName; }
633  const Optional<uint8_t> &getAllocaRegister() const { return AllocaRegister; }
634  const Optional<TBVectorExt> &getVectorExt() const { return VecExt; }
635  const Optional<uint8_t> &getExtensionTable() const { return ExtensionTable; }
636 };
637 
639 } // namespace object
640 } // namespace llvm
641 
642 #endif // LLVM_OBJECT_XCOFFOBJECTFILE_H
llvm::Check::Size
@ Size
Definition: FileCheck.h:73
llvm::object::XCOFFCsectAuxEnt32::TypeChkSectNum
support::ubig16_t TypeChkSectNum
Definition: XCOFFObjectFile.h:108
llvm::object::XCOFFObjectFile::getSymbolSectionName
Expected< StringRef > getSymbolSectionName(XCOFFSymbolRef Ref) const
Definition: XCOFFObjectFile.cpp:506
llvm::object::XCOFFTracebackTable::isTOCless
bool isTOCless() const
Definition: XCOFFObjectFile.cpp:1087
llvm::object::XCOFFObjectFile::isRelocatableObject
bool isRelocatableObject() const override
True if this is a relocatable object (.o/.obj).
Definition: XCOFFObjectFile.cpp:450
llvm::object::XCOFFTracebackTable::isInterruptHandler
bool isInterruptHandler() const
Definition: XCOFFObjectFile.cpp:1099
llvm::object::XCOFFObjectFile::getSectionAddress
uint64_t getSectionAddress(DataRefImpl Sec) const override
Definition: XCOFFObjectFile.cpp:248
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:120
llvm::object::XCOFFObjectFile::getCommonSymbolSizeImpl
uint64_t getCommonSymbolSizeImpl(DataRefImpl Symb) const override
Definition: XCOFFObjectFile.cpp:213
llvm::object::XCOFFCsectAuxRef::getTypeChkSectNum
uint16_t getTypeChkSectNum() const
Definition: XCOFFObjectFile.h:161
llvm::object::XCOFFSectAuxEntForStat::Pad
uint8_t Pad[10]
Definition: XCOFFObjectFile.h:228
llvm::object::XCOFFObjectFile::getRelocationSymbol
symbol_iterator getRelocationSymbol(DataRefImpl Rel) const override
Definition: XCOFFObjectFile.cpp:375
llvm::object::XCOFFFileHeader32::AuxHeaderSize
support::ubig16_t AuxHeaderSize
Definition: XCOFFObjectFile.h:36
llvm::object::XCOFFSymbolEntry32::StorageClass
XCOFF::StorageClass StorageClass
Definition: XCOFFObjectFile.h:462
llvm
---------------------— PointerInfo ------------------------------------—
Definition: AllocatorList.h:23
llvm::object::XCOFFObjectFile::section_begin
section_iterator section_begin() const override
Definition: XCOFFObjectFile.cpp:423
llvm::object::XCOFFCsectAuxEnt32::ParameterHashIndex
support::ubig32_t ParameterHashIndex
Definition: XCOFFObjectFile.h:107
llvm::object::XCOFFSectionHeader32
Definition: XCOFFObjectFile.h:73
llvm::object::XCOFFTracebackTable::getExtensionTable
const Optional< uint8_t > & getExtensionTable() const
Definition: XCOFFObjectFile.h:635
llvm::object::XCOFFSymbolEntry32::SectionNumber
support::big16_t SectionNumber
Definition: XCOFFObjectFile.h:455
GETVALUE
#define GETVALUE(X)
Definition: XCOFFObjectFile.h:503
llvm::object::XCOFFTracebackTable::hasParmsOnStack
bool hasParmsOnStack() const
Definition: XCOFFObjectFile.cpp:1158
llvm::object::XCOFFSymbolRef::getXCOFFCsectAuxRef
Expected< XCOFFCsectAuxRef > getXCOFFCsectAuxRef() const
Definition: XCOFFObjectFile.cpp:837
llvm::object::TBVectorExt::hasVarArgs
bool hasVarArgs() const
Definition: XCOFFObjectFile.cpp:943
llvm::object::XCOFFSymbolRef::getName
Expected< StringRef > getName() const
Definition: XCOFFObjectFile.cpp:880
llvm::XCOFF::XTY_LD
@ XTY_LD
Label definition. Defines an entry point to an initialized csect.
Definition: XCOFF.h:186
llvm::object::XCOFFObjectFile::InvalidRelocOffset
static constexpr uint64_t InvalidRelocOffset
Definition: XCOFFObjectFile.h:313
llvm::object::XCOFFObjectFile::getSymbolIndex
uint32_t getSymbolIndex(uintptr_t SymEntPtr) const
Definition: XCOFFObjectFile.cpp:599
llvm::object::XCOFFSectionHeader64::PhysicalAddress
support::ubig64_t PhysicalAddress
Definition: XCOFFObjectFile.h:88
llvm::support::detail::packed_endian_specific_integral
Definition: Endian.h:206
llvm::object::XCOFFObjectFile::getSymbolName
Expected< StringRef > getSymbolName(DataRefImpl Symb) const override
Definition: XCOFFObjectFile.cpp:201
llvm::object::XCOFFFileHeader32
Definition: XCOFFObjectFile.h:26
llvm::XCOFF::C_FILE
@ C_FILE
Definition: XCOFF.h:115
llvm::object::XCOFFRelocation32::isRelocationSigned
bool isRelocationSigned() const
Definition: XCOFFObjectFile.cpp:72
llvm::object::XCOFFTracebackTable::isFloatingPointPresent
bool isFloatingPointPresent() const
Definition: XCOFFObjectFile.cpp:1091
llvm::object::XCOFFObjectFile::moveRelocationNext
void moveRelocationNext(DataRefImpl &Rel) const override
Definition: XCOFFObjectFile.cpp:352
llvm::XCOFF::SymbolType
SymbolType
Definition: XCOFF.h:183
llvm::object::XCOFFObjectFile::section_end
section_iterator section_end() const override
Definition: XCOFFObjectFile.cpp:429
llvm::object::XCOFFTracebackTable::getVersion
uint8_t getVersion() const
Definition: XCOFFObjectFile.cpp:1059
llvm::object::XCOFFSectionHeader32::FileOffsetToRelocationInfo
support::ubig32_t FileOffsetToRelocationInfo
Definition: XCOFFObjectFile.h:79
llvm::object::XCOFFObjectFile::isSectionBSS
bool isSectionBSS(DataRefImpl Sec) const override
Definition: XCOFFObjectFile.cpp:313
llvm::object::XCOFFTracebackTable::isBackChainStored
bool isBackChainStored() const
Definition: XCOFFObjectFile.cpp:1124
llvm::object::XCOFFObjectFile::getSectionAlignment
uint64_t getSectionAlignment(DataRefImpl Sec) const override
Definition: XCOFFObjectFile.cpp:294
llvm::object::CFileLanguageIdAndTypeIdType::CpuTypeId
uint8_t CpuTypeId
Definition: XCOFFObjectFile.h:440
llvm::object::XCOFFSectionHeader::SectionFlagsReservedMask
static constexpr unsigned SectionFlagsReservedMask
Definition: XCOFFObjectFile.h:56
llvm::object::XCOFFSectionHeader
Definition: XCOFFObjectFile.h:54
llvm::object::XCOFFObjectFile::is64Bit
bool is64Bit() const
Definition: XCOFFObjectFile.cpp:487
llvm::object::XCOFFRelocation32::XR_SIGN_INDICATOR_MASK
static constexpr uint8_t XR_SIGN_INDICATOR_MASK
Definition: XCOFFObjectFile.h:236
llvm::object::XCOFFTracebackTable::isOutOfLineEpilogOrPrologue
bool isOutOfLineEpilogOrPrologue() const
Definition: XCOFFObjectFile.cpp:1071
llvm::object::CFileLanguageIdAndTypeIdType::LanguageId
uint8_t LanguageId
Definition: XCOFFObjectFile.h:439
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:444
llvm::object::XCOFFFileAuxEnt::NameInStrTblType::Magic
support::big32_t Magic
Definition: XCOFFObjectFile.h:211
llvm::object::TBVectorExt::hasVMXInstruction
bool hasVMXInstruction() const
Definition: XCOFFObjectFile.cpp:952
llvm::object::XCOFFSectionHeader32::FileOffsetToRawData
support::ubig32_t FileOffsetToRawData
Definition: XCOFFObjectFile.h:78
llvm::Optional
Definition: APInt.h:33
Offset
uint64_t Offset
Definition: ELFObjHandler.cpp:81
llvm::object::XCOFFObjectFile::isDebugSection
bool isDebugSection(DataRefImpl Sec) const override
Definition: XCOFFObjectFile.cpp:318
llvm::object::XCOFFFileAuxEnt::Name
char Name[XCOFF::NameSize+XCOFF::FileNamePadSize]
Definition: XCOFFObjectFile.h:216
llvm::object::XCOFFObjectFile::getRawNumberOfSymbolTableEntries32
int32_t getRawNumberOfSymbolTableEntries32() const
Definition: XCOFFObjectFile.cpp:552
llvm::object::XCOFFCsectAuxRef::getParameterHashIndex
uint32_t getParameterHashIndex() const
Definition: XCOFFObjectFile.h:157
llvm::object::XCOFFTracebackTable::getFunctionName
const Optional< StringRef > & getFunctionName() const
Definition: XCOFFObjectFile.h:632
llvm::Expected
Tagged union holding either a T or a Error.
Definition: APFloat.h:42
llvm::object::CFileLanguageIdAndTypeIdType
Definition: XCOFFObjectFile.h:438
llvm::object::XCOFFObjectFile::getRelocationOffset
uint64_t getRelocationOffset(DataRefImpl Rel) const override
Definition: XCOFFObjectFile.cpp:356
llvm::object::XCOFFSymbolRef::getNumberOfAuxEntries
uint8_t getNumberOfAuxEntries() const
Definition: XCOFFObjectFile.h:523
llvm::object::XCOFFFileHeader64
Definition: XCOFFObjectFile.h:40
llvm::object::XCOFFSymbolEntry64::Value
support::ubig64_t Value
Definition: XCOFFObjectFile.h:467
llvm::object::XCOFFCsectAuxRef::getSymbolType
uint8_t getSymbolType() const
Definition: XCOFFObjectFile.h:177
llvm::object::XCOFFFileHeader64::Magic
support::ubig16_t Magic
Definition: XCOFFObjectFile.h:41
llvm::object::XCOFFSymbolEntry64
Definition: XCOFFObjectFile.h:466
llvm::object::XCOFFRelocation32::Type
XCOFF::RelocationType Type
Definition: XCOFFObjectFile.h:253
llvm::object::XCOFFSymbolEntry32::SymbolType
support::ubig16_t SymbolType
Definition: XCOFFObjectFile.h:458
llvm::MemoryBufferRef
Definition: MemoryBufferRef.h:22
llvm::object::XCOFFSectAuxEntForStat::SectionLength
support::ubig32_t SectionLength
Definition: XCOFFObjectFile.h:225
llvm::object::XCOFFObjectFile::getMagic
uint16_t getMagic() const
Definition: XCOFFObjectFile.cpp:491
llvm::object::XCOFFCsectAuxRef::getSectionOrLength
uint64_t getSectionOrLength() const
Definition: XCOFFObjectFile.h:140
llvm::object::XCOFFSectionHeader32::NumberOfRelocations
support::ubig16_t NumberOfRelocations
Definition: XCOFFObjectFile.h:81
llvm::object::XCOFFTracebackTable::getAllocaRegister
const Optional< uint8_t > & getAllocaRegister() const
Definition: XCOFFObjectFile.h:633
llvm::object::XCOFFSymbolRef::isFunction
bool isFunction() const
Definition: XCOFFObjectFile.cpp:797
llvm::object::XCOFFCsectAuxRef
Definition: XCOFFObjectFile.h:126
llvm::object::XCOFFSectionHeader64::NumberOfLineNumbers
support::ubig32_t NumberOfLineNumbers
Definition: XCOFFObjectFile.h:95
llvm::object::XCOFFTracebackTable::getTraceBackTableOffset
const Optional< uint32_t > & getTraceBackTableOffset() const
Definition: XCOFFObjectFile.h:624
llvm::object::XCOFFSymbolRef::getValue64
uint64_t getValue64() const
Definition: XCOFFObjectFile.h:501
llvm::object::XCOFFSymbolRef
Definition: XCOFFObjectFile.h:480
llvm::object::XCOFFSectionHeader32::NumberOfLineNumbers
support::ubig16_t NumberOfLineNumbers
Definition: XCOFFObjectFile.h:82
llvm::object::XCOFFSectionHeader32::VirtualAddress
support::ubig32_t VirtualAddress
Definition: XCOFFObjectFile.h:76
llvm::object::XCOFFFileAuxEnt::NameInStrTblType
Definition: XCOFFObjectFile.h:210
llvm::object::XCOFFObjectFile::getSectionByNum
Expected< DataRefImpl > getSectionByNum(int16_t Num) const
Definition: XCOFFObjectFile.cpp:495
XCOFF.h
llvm::object::XCOFFObjectFile::isSectionVirtual
bool isSectionVirtual(DataRefImpl Sec) const override
Definition: XCOFFObjectFile.cpp:323
llvm::object::XCOFFTracebackTable::isFuncNamePresent
bool isFuncNamePresent() const
Definition: XCOFFObjectFile.cpp:1103
llvm::object::XCOFFObjectFile::getFeatures
SubtargetFeatures getFeatures() const override
Definition: XCOFFObjectFile.cpp:446
llvm::object::XCOFFSymbolEntry64::SectionNumber
support::big16_t SectionNumber
Definition: XCOFFObjectFile.h:469
llvm::object::XCOFFTracebackTable::getNumOfGPRsSaved
uint8_t getNumOfGPRsSaved() const
Definition: XCOFFObjectFile.cpp:1144
llvm::object::XCOFFTracebackTable::getHandlerMask
const Optional< uint32_t > & getHandlerMask() const
Definition: XCOFFObjectFile.h:627
llvm::object::XCOFFObjectFile::getLogicalNumberOfRelocationEntries
Expected< uint32_t > getLogicalNumberOfRelocationEntries(const XCOFFSectionHeader32 &Sec) const
Definition: XCOFFObjectFile.cpp:661
llvm::object::XCOFFFileAuxEnt::NameInStrTblType::Offset
support::ubig32_t Offset
Definition: XCOFFObjectFile.h:212
llvm::object::XCOFFObjectFile::getSectionSize
uint64_t getSectionSize(DataRefImpl Sec) const override
Definition: XCOFFObjectFile.cpp:266
llvm::Triple::ArchType
ArchType
Definition: Triple.h:47
llvm::object::XCOFFObjectFile::getRelocationType
uint64_t getRelocationType(DataRefImpl Rel) const override
Definition: XCOFFObjectFile.cpp:389
llvm::ModRefInfo::Ref
@ Ref
The access may reference the value stored in memory.
llvm::object::XCOFFObjectFile::getRelocationTypeName
void getRelocationTypeName(DataRefImpl Rel, SmallVectorImpl< char > &Result) const override
Definition: XCOFFObjectFile.cpp:395
llvm::object::TBVectorExt::getVectorParmsInfo
SmallString< 32 > getVectorParmsInfo() const
Definition: XCOFFObjectFile.h:556
SmallString.h
llvm::object::XCOFFStringTable::Size
uint32_t Size
Definition: XCOFFObjectFile.h:101
llvm::object::XCOFFObjectFile::getStringTableEntry
Expected< StringRef > getStringTableEntry(uint32_t Offset) const
Definition: XCOFFObjectFile.cpp:174
llvm::object::TBVectorExt::getNumberOfVectorParms
uint8_t getNumberOfVectorParms() const
Definition: XCOFFObjectFile.cpp:947
llvm::object::XCOFFObjectFile::getAdvancedSymbolEntryAddress
static uintptr_t getAdvancedSymbolEntryAddress(uintptr_t CurrentAddress, uint32_t Distance)
Definition: XCOFFObjectFile.cpp:87
llvm::object::XCOFFTracebackTable::isFixup
bool isFixup() const
Definition: XCOFFObjectFile.cpp:1128
llvm::object::XCOFFSectAuxEntForStat::NumberOfLineNum
support::ubig16_t NumberOfLineNum
Definition: XCOFFObjectFile.h:227
llvm::object::XCOFFObjectFile::getSymbolType
Expected< SymbolRef::Type > getSymbolType(DataRefImpl Symb) const override
Definition: XCOFFObjectFile.cpp:220
llvm::object::XCOFFFileHeader64::SymbolTableOffset
support::ubig64_t SymbolTableOffset
Definition: XCOFFObjectFile.h:48
llvm::object::XCOFFObjectFile::symbol_end
basic_symbol_iterator symbol_end() const override
Definition: XCOFFObjectFile.cpp:416
llvm::SubtargetFeatures
Manages the enabling and disabling of subtarget specific features.
Definition: SubtargetFeature.h:183
llvm::object::XCOFFSectionHeader64::SectionSize
support::ubig64_t SectionSize
Definition: XCOFFObjectFile.h:90
B
static GCRegistry::Add< OcamlGC > B("ocaml", "ocaml 3.10-compatible GC")
llvm::object::XCOFFCsectAuxRef::getStabSectNum32
uint16_t getStabSectNum32() const
Definition: XCOFFObjectFile.h:188
llvm::object::XCOFFCsectAuxRef::XCOFFCsectAuxRef
XCOFFCsectAuxRef(const XCOFFCsectAuxEnt64 *Entry64)
Definition: XCOFFObjectFile.h:133
llvm::object::XCOFFSymbolRef::getCPUTypeIddForCFile
uint8_t getCPUTypeIddForCFile() const
Definition: XCOFFObjectFile.h:515
llvm::object::XCOFFCsectAuxEnt64::SectionOrLengthLowByte
support::ubig32_t SectionOrLengthLowByte
Definition: XCOFFObjectFile.h:116
llvm::object::XCOFFTracebackTable::isGlobalLinkage
bool isGlobalLinkage() const
Definition: XCOFFObjectFile.cpp:1067
llvm::object::DataRefImpl::p
uintptr_t p
Definition: SymbolicFile.h:39
llvm::object::XCOFFObjectFile::getPointerToSymbolTable
const void * getPointerToSymbolTable() const
Definition: XCOFFObjectFile.h:371
llvm::object::XCOFFObjectFile::getOptionalHeaderSize
uint16_t getOptionalHeaderSize() const
Definition: XCOFFObjectFile.cpp:543
llvm::object::XCOFFObjectFile::getSectionFlags
int32_t getSectionFlags(DataRefImpl Sec) const
Definition: XCOFFObjectFile.cpp:634
llvm::object::XCOFFObjectFile::isSectionCompressed
bool isSectionCompressed(DataRefImpl Sec) const override
Definition: XCOFFObjectFile.cpp:300
llvm::object::XCOFFObjectFile::getNumberOfSymbolTableEntries64
uint32_t getNumberOfSymbolTableEntries64() const
Definition: XCOFFObjectFile.cpp:569
llvm::object::XCOFFSectAuxEntForStat
Definition: XCOFFObjectFile.h:224
llvm::object::XCOFFCsectAuxEnt32::StabSectNum
support::ubig16_t StabSectNum
Definition: XCOFFObjectFile.h:112
llvm::object::XCOFFSymbolRef::XCOFFSymbolRef
XCOFFSymbolRef(DataRefImpl SymEntDataRef, const XCOFFObjectFile *OwningObjectPtr)
Definition: XCOFFObjectFile.h:484
llvm::object::XCOFFSectionHeader64::FileOffsetToRelocationInfo
support::big64_t FileOffsetToRelocationInfo
Definition: XCOFFObjectFile.h:92
llvm::XCOFF::StorageMappingClass
StorageMappingClass
Storage Mapping Class definitions.
Definition: XCOFF.h:46
llvm::object::XCOFFCsectAuxRef::isLabel
bool isLabel() const
Definition: XCOFFObjectFile.h:181
llvm::object::XCOFFCsectAuxRef::getAuxType64
XCOFF::SymbolAuxType getAuxType64() const
Definition: XCOFFObjectFile.h:193
llvm::SmallString< 32 >
llvm::object::XCOFFCsectAuxEnt64
Definition: XCOFFObjectFile.h:115
llvm::object::XCOFFTracebackTable::isLRSaved
bool isLRSaved() const
Definition: XCOFFObjectFile.cpp:1120
llvm::object::XCOFFObjectFile::symbol_begin
basic_symbol_iterator symbol_begin() const override
Definition: XCOFFObjectFile.cpp:410
llvm::MachO::FileType
FileType
Defines the file type this file represents.
Definition: InterfaceFile.h:57
llvm::object::XCOFFObjectFile::getSymbolTableOffset32
uint32_t getSymbolTableOffset32() const
Definition: XCOFFObjectFile.cpp:548
llvm::object::XCOFFObjectFile::checkSymbolEntryPointer
void checkSymbolEntryPointer(uintptr_t SymbolEntPtr) const
Definition: XCOFFObjectFile.cpp:584
llvm::XCOFF::NameSize
constexpr size_t NameSize
Definition: XCOFF.h:29
llvm::OutputFileType::Object
@ Object
llvm::object::XCOFFObjectFile::getSectionName
Expected< StringRef > getSectionName(DataRefImpl Sec) const override
Definition: XCOFFObjectFile.cpp:244
llvm::object::XCOFFTracebackTable::isCRSaved
bool isCRSaved() const
Definition: XCOFFObjectFile.cpp:1116
llvm::object::XCOFFObjectFile::getSymbolTableOffset64
uint64_t getSymbolTableOffset64() const
Definition: XCOFFObjectFile.cpp:565
llvm::object::XCOFFSectAuxEntForStat::NumberOfRelocEnt
support::ubig16_t NumberOfRelocEnt
Definition: XCOFFObjectFile.h:226
llvm::object::XCOFFFileHeader32::NumberOfSymTableEntries
support::big32_t NumberOfSymTableEntries
Definition: XCOFFObjectFile.h:35
llvm::object::XCOFFCsectAuxRef::getStorageMappingClass
XCOFF::StorageMappingClass getStorageMappingClass() const
Definition: XCOFFObjectFile.h:163
llvm::object::XCOFFObjectFile::getStringTable
StringRef getStringTable() const
Definition: XCOFFObjectFile.cpp:190
llvm::object::XCOFFSymbolEntry32::NameInStrTblType::Offset
support::ubig32_t Offset
Definition: XCOFFObjectFile.h:446
llvm::XCOFF::StorageClass
StorageClass
Definition: XCOFF.h:113
llvm::object::TBVectorExt::create
static Expected< TBVectorExt > create(StringRef TBvectorStrRef)
Definition: XCOFFObjectFile.cpp:911
llvm::object::XCOFFCsectAuxEnt32::SymbolAlignmentAndType
uint8_t SymbolAlignmentAndType
Definition: XCOFFObjectFile.h:109
llvm::object::XCOFFObjectFile::getStartAddress
Expected< uint64_t > getStartAddress() const override
Definition: XCOFFObjectFile.cpp:456
llvm::object::XCOFFCsectAuxRef::getAlignmentLog2
uint16_t getAlignmentLog2() const
Definition: XCOFFObjectFile.h:172
object
bar al al movzbl eax ret Missed when stored in a memory object
Definition: README.txt:1411
llvm::object::XCOFFObjectFile::mapDebugSectionName
StringRef mapDebugSectionName(StringRef Name) const override
Maps a debug section name to a standard DWARF section name.
Definition: XCOFFObjectFile.cpp:462
llvm::object::XCOFFStringTable::Data
const char * Data
Definition: XCOFFObjectFile.h:102
llvm::object::XCOFFSymbolEntry64::Offset
support::ubig32_t Offset
Definition: XCOFFObjectFile.h:468
llvm::object::XCOFFTracebackTable::getNumberOfFPParms
uint8_t getNumberOfFPParms() const
Definition: XCOFFObjectFile.cpp:1153
llvm::object::XCOFFObjectFile::getSymbolSectionID
unsigned getSymbolSectionID(SymbolRef Sym) const
Definition: XCOFFObjectFile.cpp:525
llvm::object::XCOFFFileHeader32::SymbolTableOffset
support::ubig32_t SymbolTableOffset
Definition: XCOFFObjectFile.h:34
llvm::object::XCOFFTracebackTable::getVectorExt
const Optional< TBVectorExt > & getVectorExt() const
Definition: XCOFFObjectFile.h:634
llvm::object::symbol_iterator
Definition: ObjectFile.h:207
llvm::object::XCOFFObjectFile::getSymbolAddress
Expected< uint64_t > getSymbolAddress(DataRefImpl Symb) const override
Definition: XCOFFObjectFile.cpp:205
getSymbolType
static std::unique_ptr< PDBSymbol > getSymbolType(const PDBSymbol &Symbol)
Definition: UDTLayout.cpp:33
llvm::object::XCOFFObjectFile::getFlags
uint16_t getFlags() const
Definition: XCOFFObjectFile.cpp:622
Addr
uint64_t Addr
Definition: ELFObjHandler.cpp:80
llvm::object::XCOFFFileHeader64::NumberOfSymTableEntries
support::ubig32_t NumberOfSymTableEntries
Definition: XCOFFObjectFile.h:51
llvm::object::XCOFFSymbolEntry64::NumberOfAuxEntries
uint8_t NumberOfAuxEntries
Definition: XCOFFObjectFile.h:477
llvm::object::XCOFFObjectFile::getSectionIndex
uint64_t getSectionIndex(DataRefImpl Sec) const override
Definition: XCOFFObjectFile.cpp:257
llvm::object::XCOFFSectionHeader::SectionFlagsTypeMask
static constexpr unsigned SectionFlagsTypeMask
Definition: XCOFFObjectFile.h:59
llvm::object::XCOFFRelocation32::getRelocatedLength
uint8_t getRelocatedLength() const
Definition: XCOFFObjectFile.cpp:80
llvm::object::XCOFFObjectFile::section_rel_end
relocation_iterator section_rel_end(DataRefImpl Sec) const override
Definition: XCOFFObjectFile.cpp:340
llvm::object::XCOFFCsectAuxEnt32::SectionOrLength
support::ubig32_t SectionOrLength
Definition: XCOFFObjectFile.h:106
llvm::object::XCOFFTracebackTable::hasTraceBackTableOffset
bool hasTraceBackTableOffset() const
Definition: XCOFFObjectFile.cpp:1075
llvm::object::TBVectorExt
Definition: XCOFFObjectFile.h:543
assert
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
llvm::object::XCOFFSectionHeader64::Flags
support::big32_t Flags
Definition: XCOFFObjectFile.h:96
ObjectFile.h
llvm::object::XCOFFRelocation32::isFixupIndicated
bool isFixupIndicated() const
Definition: XCOFFObjectFile.cpp:76
llvm::object::XCOFFFileHeader32::TimeStamp
support::big32_t TimeStamp
Definition: XCOFFObjectFile.h:32
llvm::object::content_iterator
Definition: SymbolicFile.h:67
llvm::object::XCOFFSymbolRef::getSectionNumber
int16_t getSectionNumber() const
Definition: XCOFFObjectFile.h:505
llvm::object::XCOFFStringTable
Definition: XCOFFObjectFile.h:100
llvm::XCOFF::FileNamePadSize
constexpr size_t FileNamePadSize
Definition: XCOFF.h:28
llvm::object::XCOFFCsectAuxRef::XCOFFCsectAuxRef
XCOFFCsectAuxRef(const XCOFFCsectAuxEnt32 *Entry32)
Definition: XCOFFObjectFile.h:132
llvm::object::XCOFFRelocation32::XR_FIXUP_INDICATOR_MASK
static constexpr uint8_t XR_FIXUP_INDICATOR_MASK
Definition: XCOFFObjectFile.h:240
llvm::object::XCOFFSymbolRef::getLanguageIdForCFile
uint8_t getLanguageIdForCFile() const
Definition: XCOFFObjectFile.h:509
llvm::object::XCOFFCsectAuxEnt64::ParameterHashIndex
support::ubig32_t ParameterHashIndex
Definition: XCOFFObjectFile.h:117
llvm::object::ObjectFile::createXCOFFObjectFile
static Expected< std::unique_ptr< ObjectFile > > createXCOFFObjectFile(MemoryBufferRef Object, unsigned FileType)
Definition: XCOFFObjectFile.cpp:792
llvm::object::XCOFFSymbolEntry32::CFileLanguageIdAndTypeId
CFileLanguageIdAndTypeIdType CFileLanguageIdAndTypeId
Definition: XCOFFObjectFile.h:459
llvm::object::XCOFFSymbolEntry64::StorageClass
XCOFF::StorageClass StorageClass
Definition: XCOFFObjectFile.h:476
llvm::object::XCOFFObjectFile::getSymbolEntryAddressByIndex
uintptr_t getSymbolEntryAddressByIndex(uint32_t SymbolTableIndex) const
Definition: XCOFFObjectFile.cpp:605
llvm::ArrayRef
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
Definition: APInt.h:32
llvm::object::XCOFFRelocation32::SymbolIndex
support::ubig32_t SymbolIndex
Definition: XCOFFObjectFile.h:248
llvm::object::XCOFFCsectAuxEnt32::StorageMappingClass
XCOFF::StorageMappingClass StorageMappingClass
Definition: XCOFFObjectFile.h:110
llvm::StringRef
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:58
llvm::object::XCOFFSymbolRef::getStorageClass
XCOFF::StorageClass getStorageClass() const
Definition: XCOFFObjectFile.h:521
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:958
llvm::object::XCOFFTracebackTable::hasControlledStorage
bool hasControlledStorage() const
Definition: XCOFFObjectFile.cpp:1083
llvm::object::XCOFFObjectFile::getSymbolValueImpl
uint64_t getSymbolValueImpl(DataRefImpl Symb) const override
Definition: XCOFFObjectFile.cpp:209
uint32_t
llvm::object::XCOFFTracebackTable::getParmsType
const Optional< SmallString< 32 > > & getParmsType() const
Definition: XCOFFObjectFile.h:623
llvm::object::XCOFFSymbolEntry64::SymbolType
support::ubig16_t SymbolType
Definition: XCOFFObjectFile.h:472
llvm::object::XCOFFObjectFile::getCFileName
Expected< StringRef > getCFileName(const XCOFFFileAuxEnt *CFileEntPtr) const
Definition: XCOFFObjectFile.cpp:195
llvm::object::XCOFFObjectFile::sections32
ArrayRef< XCOFFSectionHeader32 > sections32() const
Definition: XCOFFObjectFile.cpp:650
llvm::object::XCOFFObjectFile::getSymbolNameByIndex
Expected< StringRef > getSymbolNameByIndex(uint32_t SymbolTableIndex) const
Definition: XCOFFObjectFile.cpp:611
llvm::object::XCOFFCsectAuxEnt64::SymbolAlignmentAndType
uint8_t SymbolAlignmentAndType
Definition: XCOFFObjectFile.h:119
llvm::object::DataRefImpl
Definition: SymbolicFile.h:33
llvm::object::XCOFFSectionHeader32::FileOffsetToLineNumberInfo
support::ubig32_t FileOffsetToLineNumberInfo
Definition: XCOFFObjectFile.h:80
llvm::XCOFF::SymbolAuxType
SymbolAuxType
Definition: XCOFF.h:282
llvm::object::XCOFFFileAuxEnt::NameInStrTbl
NameInStrTblType NameInStrTbl
Definition: XCOFFObjectFile.h:217
llvm::object::XCOFFFileHeader64::NumberOfSections
support::ubig16_t NumberOfSections
Definition: XCOFFObjectFile.h:42
llvm::object::TBVectorExt::getNumberOfVRSaved
uint8_t getNumberOfVRSaved() const
Definition: XCOFFObjectFile.cpp:935
llvm::object::XCOFFObjectFile::getSymbolAuxType
const XCOFF::SymbolAuxType * getSymbolAuxType(uintptr_t AuxEntryAddress) const
Definition: XCOFFObjectFile.cpp:93
llvm::object::XCOFFSectionHeader64::NumberOfRelocations
support::ubig32_t NumberOfRelocations
Definition: XCOFFObjectFile.h:94
llvm::object::XCOFFObjectFile::classof
static bool classof(const Binary *B)
Definition: XCOFFObjectFile.h:435
llvm::object::XCOFFCsectAuxEnt32
Definition: XCOFFObjectFile.h:105
llvm::object::XCOFFTracebackTable::getNumOfCtlAnchors
const Optional< uint32_t > & getNumOfCtlAnchors()
Definition: XCOFFObjectFile.h:628
llvm::object::XCOFFSectionHeader::getName
StringRef getName() const
Definition: XCOFFObjectFile.cpp:57
llvm::object::XCOFFCsectAuxRef::getEntryAddress
uintptr_t getEntryAddress() const
Definition: XCOFFObjectFile.h:167
llvm::object::XCOFFObjectFile::sections64
ArrayRef< XCOFFSectionHeader64 > sections64() const
Definition: XCOFFObjectFile.cpp:643
llvm::object::XCOFFSymbolRef::getValue32
uint32_t getValue32() const
Definition: XCOFFObjectFile.h:499
llvm::object::XCOFFFileHeader32::Flags
support::ubig16_t Flags
Definition: XCOFFObjectFile.h:37
llvm::object::XCOFFObjectFile::getNumberOfSections
uint16_t getNumberOfSections() const
Definition: XCOFFObjectFile.cpp:534
llvm::object::XCOFFTracebackTable::isAllocaUsed
bool isAllocaUsed() const
Definition: XCOFFObjectFile.cpp:1107
llvm::object::XCOFFSectionHeader64::FileOffsetToLineNumberInfo
support::big64_t FileOffsetToLineNumberInfo
Definition: XCOFFObjectFile.h:93
llvm::GraphProgram::Name
Name
Definition: GraphWriter.h:52
llvm::object::XCOFFSectionHeader32::SectionSize
support::ubig32_t SectionSize
Definition: XCOFFObjectFile.h:77
llvm::object::XCOFFObjectFile::getBytesInAddress
uint8_t getBytesInAddress() const override
The number of bytes used to represent an address in this object file format.
Definition: XCOFFObjectFile.cpp:436
uint16_t
llvm::object::XCOFFObjectFile::getSectionContents
Expected< ArrayRef< uint8_t > > getSectionContents(DataRefImpl Sec) const override
Definition: XCOFFObjectFile.cpp:276
llvm::object::XCOFFObjectFile::getTimeStamp
int32_t getTimeStamp() const
Definition: XCOFFObjectFile.cpp:539
llvm::object::XCOFFTracebackTable::getNumberOfFixedParms
uint8_t getNumberOfFixedParms() const
Definition: XCOFFObjectFile.cpp:1148
llvm::object::XCOFFObjectFile::getFileFormatName
StringRef getFileFormatName() const override
Definition: XCOFFObjectFile.cpp:438
llvm::object::XCOFFTracebackTable::hasExtensionTable
bool hasExtensionTable() const
Definition: XCOFFObjectFile.cpp:1136
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:1079
llvm::object::XCOFFFileHeader64::Flags
support::ubig16_t Flags
Definition: XCOFFObjectFile.h:50
llvm::object::XCOFFTracebackTable::getNumOfFPRsSaved
uint8_t getNumOfFPRsSaved() const
Definition: XCOFFObjectFile.cpp:1132
llvm::object::XCOFFObjectFile::isSectionData
bool isSectionData(DataRefImpl Sec) const override
Definition: XCOFFObjectFile.cpp:308
llvm::object::XCOFFObjectFile::getLogicalNumberOfSymbolTableEntries32
uint32_t getLogicalNumberOfSymbolTableEntries32() const
Definition: XCOFFObjectFile.cpp:559
llvm::object::XCOFFObjectFile::toSymbolRef
XCOFFSymbolRef toSymbolRef(DataRefImpl Ref) const
Definition: XCOFFObjectFile.cpp:131
llvm::object::XCOFFRelocation32
Definition: XCOFFObjectFile.h:231
llvm::XCOFF::RelocationType
RelocationType
Definition: XCOFF.h:203
llvm::object::XCOFFSectionHeader64::FileOffsetToRawData
support::big64_t FileOffsetToRawData
Definition: XCOFFObjectFile.h:91
llvm::object::XCOFFObjectFile::relocations
Expected< ArrayRef< XCOFFRelocation32 > > relocations(const XCOFFSectionHeader32 &) const
Definition: XCOFFObjectFile.cpp:677
llvm::object::XCOFFSectionHeader64::VirtualAddress
support::ubig64_t VirtualAddress
Definition: XCOFFObjectFile.h:89
llvm::object::XCOFFSymbolEntry64::CFileLanguageIdAndTypeId
CFileLanguageIdAndTypeIdType CFileLanguageIdAndTypeId
Definition: XCOFFObjectFile.h:473
llvm::object::XCOFFCsectAuxRef::getStabInfoIndex32
uint32_t getStabInfoIndex32() const
Definition: XCOFFObjectFile.h:183
llvm::object::XCOFFCsectAuxEnt64::AuxType
XCOFF::SymbolAuxType AuxType
Definition: XCOFFObjectFile.h:123
llvm::object::XCOFFCsectAuxEnt64::Pad
uint8_t Pad
Definition: XCOFFObjectFile.h:122
llvm::object::TBVectorExt::isVRSavedOnStack
bool isVRSavedOnStack() const
Definition: XCOFFObjectFile.cpp:939
llvm::object::XCOFFTracebackTable::getControlledStorageInfoDisp
const Optional< SmallVector< uint32_t, 8 > > & getControlledStorageInfoDisp()
Definition: XCOFFObjectFile.h:629
llvm::object::XCOFFSectionHeader64
Definition: XCOFFObjectFile.h:86
llvm::object::XCOFFObjectFile::isSectionText
bool isSectionText(DataRefImpl Sec) const override
Definition: XCOFFObjectFile.cpp:304
llvm::object::XCOFFFileHeader64::TimeStamp
support::big32_t TimeStamp
Definition: XCOFFObjectFile.h:46
llvm::object::XCOFFSymbolEntry32::SymbolName
char SymbolName[XCOFF::NameSize]
Definition: XCOFFObjectFile.h:450
llvm::object::XCOFFObjectFile::getArch
Triple::ArchType getArch() const override
Definition: XCOFFObjectFile.cpp:442
llvm::object::XCOFFTracebackTable::getOnConditionDirective
uint8_t getOnConditionDirective() const
Definition: XCOFFObjectFile.cpp:1111
llvm::object::XCOFFCsectAuxEnt64::TypeChkSectNum
support::ubig16_t TypeChkSectNum
Definition: XCOFFObjectFile.h:118
llvm::object::XCOFFSymbolRef::NAME_IN_STR_TBL_MAGIC
@ NAME_IN_STR_TBL_MAGIC
Definition: XCOFFObjectFile.h:482
llvm::object::XCOFFFileAuxEnt::Type
XCOFF::CFileStringType Type
Definition: XCOFFObjectFile.h:219
SmallVector.h
llvm::object::XCOFFTracebackTable::isFloatingPointOperationLogOrAbortEnabled
bool isFloatingPointOperationLogOrAbortEnabled() const
Definition: XCOFFObjectFile.cpp:1095
llvm::object::XCOFFSectionHeader32::PhysicalAddress
support::ubig32_t PhysicalAddress
Definition: XCOFFObjectFile.h:75
llvm::object::XCOFFSymbolRef::isCsectSymbol
bool isCsectSymbol() const
Definition: XCOFFObjectFile.cpp:831
llvm::object::XCOFFRelocation32::Info
uint8_t Info
Definition: XCOFFObjectFile.h:251
llvm::object::XCOFFObjectFile
Definition: XCOFFObjectFile.h:265
llvm::object::XCOFFRelocation32::VirtualAddress
support::ubig32_t VirtualAddress
Definition: XCOFFObjectFile.h:247
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:562
llvm::object::XCOFFCsectAuxEnt32::StabInfoIndex
support::ubig32_t StabInfoIndex
Definition: XCOFFObjectFile.h:111
llvm::object::XCOFFObjectFile::getSymbolFlags
Expected< uint32_t > getSymbolFlags(DataRefImpl Symb) const override
Definition: XCOFFObjectFile.cpp:404
llvm::object::XCOFFObjectFile::moveSymbolNext
void moveSymbolNext(DataRefImpl &Symb) const override
Definition: XCOFFObjectFile.cpp:161
llvm::SmallVectorImpl< char >
llvm::object::XCOFFSymbolRef::getSymbolType
uint16_t getSymbolType() const
Definition: XCOFFObjectFile.h:507
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::XCOFF::CFileStringType
CFileStringType
Definition: XCOFF.h:264
llvm::object::XCOFFFileAuxEnt::ReservedZeros
uint8_t ReservedZeros[2]
Definition: XCOFFObjectFile.h:220
llvm::object::XCOFFSymbolRef::getEntryAddress
uintptr_t getEntryAddress() const
Definition: XCOFFObjectFile.h:527
llvm::object::XCOFFFileAuxEnt::AuxType
XCOFF::SymbolAuxType AuxType
Definition: XCOFFObjectFile.h:221
llvm::object::XCOFFCsectAuxRef::getSectionOrLength32
uint32_t getSectionOrLength32() const
Definition: XCOFFObjectFile.h:144
llvm::object::XCOFFSymbolRef::getValue
uint64_t getValue() const
Definition: XCOFFObjectFile.h:497
llvm::object::XCOFFCsectAuxRef::getSectionOrLength64
uint64_t getSectionOrLength64() const
Definition: XCOFFObjectFile.h:149
llvm::object::XCOFFSectionHeader::getSectionType
uint16_t getSectionType() const
Definition: XCOFFObjectFile.cpp:62
Endian.h
llvm::object::XCOFFSymbolEntry32::NameInStrTbl
NameInStrTblType NameInStrTbl
Definition: XCOFFObjectFile.h:451
llvm::object::XCOFFSymbolEntry32::Value
support::ubig32_t Value
Definition: XCOFFObjectFile.h:454
llvm::object::XCOFFFileAuxEnt
Definition: XCOFFObjectFile.h:209
llvm::object::XCOFFSymbolEntry32
Definition: XCOFFObjectFile.h:443
llvm::object::XCOFFCsectAuxEnt64::SectionOrLengthHighByte
support::ubig32_t SectionOrLengthHighByte
Definition: XCOFFObjectFile.h:121
llvm::object::XCOFFObjectFile::getNumberOfSymbolTableEntries
uint32_t getNumberOfSymbolTableEntries() const
Definition: XCOFFObjectFile.cpp:573
llvm::object::XCOFFObjectFile::getSymbolSection
Expected< section_iterator > getSymbolSection(DataRefImpl Symb) const override
Definition: XCOFFObjectFile.cpp:226
llvm::object::XCOFFObjectFile::moveSectionNext
void moveSectionNext(DataRefImpl &Sec) const override
Definition: XCOFFObjectFile.cpp:239
llvm::object::doesXCOFFTracebackTableBegin
bool doesXCOFFTracebackTableBegin(ArrayRef< uint8_t > Bytes)
Definition: XCOFFObjectFile.cpp:900
llvm::object::XCOFFTracebackTable::hasVectorInfo
bool hasVectorInfo() const
Definition: XCOFFObjectFile.cpp:1140
llvm::object::XCOFFObjectFile::section_rel_begin
relocation_iterator section_rel_begin(DataRefImpl Sec) const override
Definition: XCOFFObjectFile.cpp:328
llvm::object::XCOFFSectionHeader32::Flags
support::big32_t Flags
Definition: XCOFFObjectFile.h:83
llvm::object::XCOFFSymbolEntry32::NameInStrTblType::Magic
support::big32_t Magic
Definition: XCOFFObjectFile.h:445
llvm::object::XCOFFSymbolEntry32::NumberOfAuxEntries
uint8_t NumberOfAuxEntries
Definition: XCOFFObjectFile.h:463
llvm::object::XCOFFRelocation32::XR_BIASED_LENGTH_MASK
static constexpr uint8_t XR_BIASED_LENGTH_MASK
Definition: XCOFFObjectFile.h:244
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:1063