* peXXigen.c (_bfd_XXi_final_link_postscript): Use correct size
authorPierre Muller <muller@sourceware.org>
Tue, 21 Dec 2010 08:41:16 +0000 (08:41 +0000)
committerPierre Muller <muller@sourceware.org>
Tue, 21 Dec 2010 08:41:16 +0000 (08:41 +0000)
for windows 64-bit TLS table size.

bfd/ChangeLog
bfd/peXXigen.c

index 39524f6..c863715 100644 (file)
@@ -1,3 +1,8 @@
+2010-12-21  Pierre Muller  <muller@ics.u-strasbg.fr>
+
+       * peXXigen.c (_bfd_XXi_final_link_postscript): Use correct size
+       for windows 64-bit TLS table size.
+
 2010-12-16  DJ Delorie  <dj@redhat.com>
 
        * reloc.c (BFD_RELOC_RX_ABS16_REV): Add.
index a5b7f68..825229a 100644 (file)
@@ -2437,8 +2437,15 @@ _bfd_XXi_final_link_postscript (bfd * abfd, struct coff_final_link_info *pfinfo)
             abfd);
          result = FALSE;
        }
-
+     /* According to PECOFF sepcifications by Microsoft version 8.2
+       the TLS data directory consists of 4 pointers, followed
+       by two 4-byte integer. This implies that the total size
+       is different for 32-bit and 64-bit executables.  */ 
+#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64)
       pe_data (abfd)->pe_opthdr.DataDirectory[PE_TLS_TABLE].Size = 0x18;
+#else
+      pe_data (abfd)->pe_opthdr.DataDirectory[PE_TLS_TABLE].Size = 0x28;
+#endif
     }
 
 /* If there is a .pdata section and we have linked pdata finally, we