#include "DLL.h"
#include "COFFLinkerContext.h"
#include "Chunks.h"
#include "SymbolTable.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/Object/COFF.h"
#include "llvm/Support/Endian.h"
#include "llvm/Support/Path.h"
usingnamespacellvm;
usingnamespacellvm::object;
usingnamespacellvm::support::endian;
usingnamespacellvm::COFF;
namespace lld::coff {
namespace {
class HintNameChunk : public NonSectionChunk { … };
class LookupChunk : public NonSectionChunk { … };
class OrdinalOnlyChunk : public NonSectionChunk { … };
class ImportDirectoryChunk : public NonSectionChunk { … };
class NullChunk : public NonSectionChunk { … };
static std::vector<std::vector<DefinedImportData *>>
binImports(COFFLinkerContext &ctx,
const std::vector<DefinedImportData *> &imports) { … }
class DelayDirectoryChunk : public NonSectionChunk { … };
static const uint8_t thunkX64[] = …;
static const uint8_t tailMergeX64[] = …;
static const uint8_t tailMergeUnwindInfoX64[] = …;
static const uint8_t thunkX86[] = …;
static const uint8_t tailMergeX86[] = …;
static const uint8_t thunkARM[] = …;
static const uint8_t tailMergeARM[] = …;
static const uint8_t thunkARM64[] = …;
static const uint8_t tailMergeARM64[] = …;
class ThunkChunkX64 : public NonSectionCodeChunk { … };
class TailMergeChunkX64 : public NonSectionCodeChunk { … };
class TailMergePDataChunkX64 : public NonSectionChunk { … };
class TailMergeUnwindInfoX64 : public NonSectionChunk { … };
class ThunkChunkX86 : public NonSectionCodeChunk { … };
class TailMergeChunkX86 : public NonSectionCodeChunk { … };
class ThunkChunkARM : public NonSectionCodeChunk { … };
class TailMergeChunkARM : public NonSectionCodeChunk { … };
class ThunkChunkARM64 : public NonSectionCodeChunk { … };
class TailMergeChunkARM64 : public NonSectionCodeChunk { … };
class DelayAddressChunk : public NonSectionChunk { … };
class ExportDirectoryChunk : public NonSectionChunk { … };
class AddressTableChunk : public NonSectionChunk { … };
class NamePointersChunk : public NonSectionChunk { … };
class ExportOrdinalChunk : public NonSectionChunk { … };
}
void IdataContents::create(COFFLinkerContext &ctx) { … }
std::vector<Chunk *> DelayLoadContents::getChunks() { … }
std::vector<Chunk *> DelayLoadContents::getDataChunks() { … }
uint64_t DelayLoadContents::getDirSize() { … }
void DelayLoadContents::create(Defined *h) { … }
Chunk *DelayLoadContents::newTailMergeChunk(Chunk *dir) { … }
Chunk *DelayLoadContents::newTailMergeUnwindInfoChunk() { … }
Chunk *DelayLoadContents::newTailMergePDataChunk(Chunk *tm, Chunk *unwind) { … }
Chunk *DelayLoadContents::newThunkChunk(DefinedImportData *s,
Chunk *tailMerge) { … }
EdataContents::EdataContents(COFFLinkerContext &ctx) : … { … }
}