#ifndef LLVM_OBJECT_ELFTYPES_H
#define LLVM_OBJECT_ELFTYPES_H
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/BinaryFormat/ELF.h"
#include "llvm/Object/Error.h"
#include "llvm/Support/BlockFrequency.h"
#include "llvm/Support/BranchProbability.h"
#include "llvm/Support/Endian.h"
#include "llvm/Support/Error.h"
#include "llvm/Support/MathExtras.h"
#include <cassert>
#include <cstdint>
#include <cstring>
#include <type_traits>
namespace llvm {
namespace object {
template <class ELFT> struct Elf_Ehdr_Impl;
template <class ELFT> struct Elf_Shdr_Impl;
template <class ELFT> struct Elf_Sym_Impl;
template <class ELFT> struct Elf_Dyn_Impl;
template <class ELFT> struct Elf_Phdr_Impl;
template <class ELFT, bool isRela> struct Elf_Rel_Impl;
template <bool Is64> struct Elf_Crel_Impl;
template <class ELFT> struct Elf_Verdef_Impl;
template <class ELFT> struct Elf_Verdaux_Impl;
template <class ELFT> struct Elf_Verneed_Impl;
template <class ELFT> struct Elf_Vernaux_Impl;
template <class ELFT> struct Elf_Versym_Impl;
template <class ELFT> struct Elf_Hash_Impl;
template <class ELFT> struct Elf_GnuHash_Impl;
template <class ELFT> struct Elf_Chdr_Impl;
template <class ELFT> struct Elf_Nhdr_Impl;
template <class ELFT> class Elf_Note_Impl;
template <class ELFT> class Elf_Note_Iterator_Impl;
template <class ELFT> struct Elf_CGProfile_Impl;
template <endianness E, bool Is64> struct ELFType { … };
ELF32LE;
ELF32BE;
ELF64LE;
ELF64BE;
#define LLVM_ELF_IMPORT_TYPES_ELFT(ELFT) …
#define LLVM_ELF_COMMA …
#define LLVM_ELF_IMPORT_TYPES(E, W) …
template <class ELFT> struct Elf_Shdr_Base;
Elf_Shdr_Base<ELFType<Endianness, false>>;
Elf_Shdr_Base<ELFType<Endianness, true>>;
template <class ELFT>
struct Elf_Shdr_Impl : Elf_Shdr_Base<ELFT> { … };
template <class ELFT> struct Elf_Sym_Base;
Elf_Sym_Base<ELFType<Endianness, false>>;
Elf_Sym_Base<ELFType<Endianness, true>>;
template <class ELFT>
struct Elf_Sym_Impl : Elf_Sym_Base<ELFT> { … };
template <class ELFT>
Expected<StringRef> Elf_Sym_Impl<ELFT>::getName(StringRef StrTab) const { … }
template <class ELFT>
struct Elf_Versym_Impl { … };
template <class ELFT>
struct Elf_Verdef_Impl { … };
template <class ELFT>
struct Elf_Verdaux_Impl { … };
template <class ELFT>
struct Elf_Verneed_Impl { … };
template <class ELFT>
struct Elf_Vernaux_Impl { … };
template <class ELFT> struct Elf_Dyn_Base;
Elf_Dyn_Base<ELFType<Endianness, false>>;
Elf_Dyn_Base<ELFType<Endianness, true>>;
template <class ELFT>
struct Elf_Dyn_Impl : Elf_Dyn_Base<ELFT> { … };
Elf_Rel_Impl<ELFType<Endianness, false>, false>;
Elf_Rel_Impl<ELFType<Endianness, false>, true>;
Elf_Rel_Impl<ELFType<Endianness, true>, false>;
Elf_Rel_Impl<ELFType<Endianness, true>, true>;
template <bool Is64> struct Elf_Crel_Impl { … };
template <class ELFT>
struct Elf_Ehdr_Impl { … };
Elf_Phdr_Impl<ELFType<Endianness, false>>;
Elf_Phdr_Impl<ELFType<Endianness, true>>;
template <class ELFT>
struct Elf_Hash_Impl { … };
template <class ELFT>
struct Elf_GnuHash_Impl { … };
Elf_Chdr_Impl<ELFType<Endianness, false>>;
Elf_Chdr_Impl<ELFType<Endianness, true>>;
template <class ELFT>
struct Elf_Nhdr_Impl { … };
template <class ELFT>
class Elf_Note_Impl { … };
template <class ELFT> class Elf_Note_Iterator_Impl { … };
template <class ELFT> struct Elf_CGProfile_Impl { … };
template <class ELFT>
struct Elf_Mips_RegInfo;
Elf_Mips_RegInfo<ELFType<Endianness, false>>;
Elf_Mips_RegInfo<ELFType<Endianness, true>>;
template <class ELFT> struct Elf_Mips_Options { … };
template <class ELFT> struct Elf_Mips_ABIFlags { … };
struct BBAddrMap { … };
struct PGOAnalysisMap { … };
}
}
#endif