diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2016-07-23 20:48:50 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2016-07-23 20:48:50 +0000 |
commit | 1c98619801a5705c688e683be3ef9d70169a0686 (patch) | |
tree | 8422105cd1a94c368315f2db16b9ac746cf7c000 /lib/ReaderWriter/ELF/Chunk.h | |
parent | f4f3ce4613680903220815690ad79fc7ba0a2e26 (diff) |
Notes
Diffstat (limited to 'lib/ReaderWriter/ELF/Chunk.h')
-rw-r--r-- | lib/ReaderWriter/ELF/Chunk.h | 111 |
1 files changed, 0 insertions, 111 deletions
diff --git a/lib/ReaderWriter/ELF/Chunk.h b/lib/ReaderWriter/ELF/Chunk.h deleted file mode 100644 index f223b6c54163..000000000000 --- a/lib/ReaderWriter/ELF/Chunk.h +++ /dev/null @@ -1,111 +0,0 @@ -//===- lib/ReaderWriter/ELF/Chunks.h --------------------------------------===// -// -// The LLVM Linker -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef LLD_READER_WRITER_ELF_CHUNKS_H -#define LLD_READER_WRITER_ELF_CHUNKS_H - -#include "lld/Core/LLVM.h" -#include "llvm/ADT/StringRef.h" -#include "llvm/Object/ELF.h" -#include "llvm/Support/Allocator.h" -#include "llvm/Support/Debug.h" -#include "llvm/Support/ELF.h" -#include "llvm/Support/ErrorHandling.h" -#include "llvm/Support/FileOutputBuffer.h" -#include <memory> - -namespace lld { -class ELFLinkingContext; - -namespace elf { -class ELFWriter; -template <class ELFT> class TargetLayout; - -/// \brief A chunk is a contiguous region of space -template <class ELFT> class Chunk { -public: - /// \brief Describes the type of Chunk - enum Kind : uint8_t { - ELFHeader, ///< ELF Header - ProgramHeader, ///< Program Header - SectionHeader, ///< Section header - ELFSegment, ///< Segment - ELFSection, ///< Section - AtomSection, ///< A section containing atoms - Expression ///< A linker script expression - }; - - /// \brief the ContentType of the chunk - enum ContentType : uint8_t { Unknown, Header, Code, Data, Note, TLS }; - - Chunk(StringRef name, Kind kind, const ELFLinkingContext &ctx) - : _name(name), _kind(kind), _ctx(ctx) {} - - virtual ~Chunk() {} - - // The name of the chunk - StringRef name() const { return _name; } - - // Kind of chunk - Kind kind() const { return _kind; } - virtual uint64_t fileSize() const { return _fsize; } - virtual void setFileSize(uint64_t sz) { _fsize = sz; } - virtual void setAlign(uint64_t align) { _alignment = align; } - virtual uint64_t alignment() const { return _alignment; } - - // The ordinal value of the chunk - uint64_t ordinal() const { return _ordinal; } - void setOrdinal(uint64_t newVal) { _ordinal = newVal; } - - // The order in which the chunk would appear in the output file - uint64_t order() const { return _order; } - void setOrder(uint32_t order) { _order = order; } - - // Output file offset of the chunk - uint64_t fileOffset() const { return _fileoffset; } - void setFileOffset(uint64_t offset) { _fileoffset = offset; } - - // Output start address of the chunk - virtual void setVirtualAddr(uint64_t start) { _start = start; } - virtual uint64_t virtualAddr() const { return _start; } - - // Memory size of the chunk - uint64_t memSize() const { return _msize; } - void setMemSize(uint64_t msize) { _msize = msize; } - - // Returns the ContentType of the chunk - virtual int getContentType() const = 0; - - // Writer the chunk - virtual void write(ELFWriter *writer, TargetLayout<ELFT> &layout, - llvm::FileOutputBuffer &buffer) = 0; - - // Finalize the chunk before assigning offsets/virtual addresses - virtual void doPreFlight() {} - - // Finalize the chunk before writing - virtual void finalize() {} - -protected: - StringRef _name; - Kind _kind; - const ELFLinkingContext &_ctx; - uint64_t _fsize = 0; - uint64_t _msize = 0; - uint64_t _alignment = 1; - uint32_t _order = 0; - uint64_t _ordinal = 1; - uint64_t _start = 0; - uint64_t _fileoffset = 0; -}; - -} // end namespace elf -} // end namespace lld - -#endif |