diff options
-rw-r--r-- | lld/COFF/Writer.cpp | 4 | ||||
-rw-r--r-- | lld/test/COFF/tls32.test | 2 |
2 files changed, 4 insertions, 2 deletions
diff --git a/lld/COFF/Writer.cpp b/lld/COFF/Writer.cpp index a3e5c203700..5f5adaad8ea 100644 --- a/lld/COFF/Writer.cpp +++ b/lld/COFF/Writer.cpp @@ -596,7 +596,9 @@ template <typename PEHeaderTy> void Writer::writeHeader() { if (Symbol *Sym = Symtab->findUnderscore("_tls_used")) { if (Defined *B = dyn_cast<Defined>(Sym->Body)) { Dir[TLS_TABLE].RelativeVirtualAddress = B->getRVA(); - Dir[TLS_TABLE].Size = 40; + Dir[TLS_TABLE].Size = Config->is64() + ? sizeof(object::coff_tls_directory64) + : sizeof(object::coff_tls_directory32); } } if (Symbol *Sym = Symtab->findUnderscore("_load_config_used")) { diff --git a/lld/test/COFF/tls32.test b/lld/test/COFF/tls32.test index 4fe020eb9e1..a16af052a76 100644 --- a/lld/test/COFF/tls32.test +++ b/lld/test/COFF/tls32.test @@ -3,7 +3,7 @@ # RUN: llvm-readobj -file-headers %t.exe | FileCheck %s # CHECK: TLSTableRVA: 0x1000 -# CHECK: TLSTableSize: 0x28 +# CHECK: TLSTableSize: 0x18 --- header: |