diff options
-rw-r--r-- | lld/COFF/Chunks.cpp | 7 | ||||
-rw-r--r-- | lld/COFF/Chunks.h | 5 |
2 files changed, 7 insertions, 5 deletions
diff --git a/lld/COFF/Chunks.cpp b/lld/COFF/Chunks.cpp index 9e123384a1f..184c44d2ff5 100644 --- a/lld/COFF/Chunks.cpp +++ b/lld/COFF/Chunks.cpp @@ -171,8 +171,11 @@ void ImportThunkChunk::applyRelocations(uint8_t *Buf) { write32le(Buf + FileOff + 2, Operand); } -HintNameChunk::HintNameChunk(StringRef N, uint16_t H) - : Name(N), Hint(H), Size(RoundUpToAlignment(Name.size() + 4, 2)) {} +size_t HintNameChunk::getSize() const { + // Starts with 2 byte Hint field, followed by a null-terminated string, + // ends with 0 or 1 byte padding. + return RoundUpToAlignment(Name.size() + 3, 2); +} void HintNameChunk::writeTo(uint8_t *Buf) { write16le(Buf + FileOff, Hint); diff --git a/lld/COFF/Chunks.h b/lld/COFF/Chunks.h index 05561477b72..ade6a8a6f49 100644 --- a/lld/COFF/Chunks.h +++ b/lld/COFF/Chunks.h @@ -194,14 +194,13 @@ private: // A chunk for the import descriptor table. class HintNameChunk : public Chunk { public: - HintNameChunk(StringRef Name, uint16_t Hint); - size_t getSize() const override { return Size; } + HintNameChunk(StringRef N, uint16_t H) : Name(N), Hint(H) {} + size_t getSize() const override; void writeTo(uint8_t *Buf) override; private: StringRef Name; uint16_t Hint; - size_t Size; }; // A chunk for the import descriptor table. |