COFF: Fix the import table Hint/Name field.

llvm-svn: 238719
diff --git a/lld/COFF/Chunks.cpp b/lld/COFF/Chunks.cpp
index 9e12338..184c44d 100644
--- a/lld/COFF/Chunks.cpp
+++ b/lld/COFF/Chunks.cpp
@@ -171,8 +171,11 @@
   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 0556147..ade6a8a 100644
--- a/lld/COFF/Chunks.h
+++ b/lld/COFF/Chunks.h
@@ -194,14 +194,13 @@
 // 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.