#ifndef LLD_ELF_INPUT_FILES_H
#define LLD_ELF_INPUT_FILES_H
#include "Config.h"
#include "Symbols.h"
#include "lld/Common/ErrorHandler.h"
#include "lld/Common/LLVM.h"
#include "lld/Common/Reproduce.h"
#include "llvm/ADT/DenseSet.h"
#include "llvm/BinaryFormat/Magic.h"
#include "llvm/Object/ELF.h"
#include "llvm/Support/MemoryBufferRef.h"
#include "llvm/Support/Threading.h"
namespace llvm {
struct DILineInfo;
class TarWriter;
namespace lto {
class InputFile;
}
}
namespace lld {
class DWARFCache;
std::string toString(const elf::InputFile *f);
namespace elf {
class InputSection;
class Symbol;
std::optional<MemoryBufferRef> readFile(Ctx &, StringRef path);
void parseFile(Ctx &, InputFile *file);
void parseFiles(Ctx &, const std::vector<InputFile *> &files);
class InputFile { … };
class ELFFileBase : public InputFile { … };
template <class ELFT> class ObjFile : public ELFFileBase { … };
class BitcodeFile : public InputFile { … };
class SharedFile : public ELFFileBase { … };
class BinaryFile : public InputFile { … };
InputFile *createInternalFile(Ctx &, StringRef name);
ELFFileBase *createObjFile(Ctx &, MemoryBufferRef mb,
StringRef archiveName = "", bool lazy = false);
std::string replaceThinLTOSuffix(Ctx &, StringRef path);
}
}
#endif