[RFA] tls directory entry size for windows 64-bit

Pierre Muller pierre.muller@ics-cnrs.unistra.fr
Sat Dec 18 04:17:00 GMT 2010


  The DataDirectory entry for TLS table is supposed to give
the size of the IMAGE_TLS_DIRECTORY structure for
the current executable.
  This size is different for 32-bit and 64-bit windows executables.

  I tried to find out the correct conditionals to
to insure the system uses 64-bit addresses,
the same condition is used several times in the same
source code already.

  Is this patch OK?


Pierre Muller


2010-12-17  Pierre Muller  <muller@ics.u-strasbg.fr>

        * peXXigen.c (_bfd_XXi_final_link_postscript): Use correct size
        for windows 64-bit TLS table size.

Index: peXXigen.c
===================================================================
RCS file: /cvs/src/src/bfd/peXXigen.c,v
retrieving revision 1.67
diff -u -p -r1.67 peXXigen.c
--- peXXigen.c  22 Sep 2010 08:01:56 -0000      1.67
+++ peXXigen.c  17 Dec 2010 18:24:47 -0000
@@ -2437,8 +2437,15 @@ _bfd_XXi_final_link_postscript (bfd * ab
             abfd);
          result = FALSE;
        }
-
+     /* According to PECOFF specifications 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
~



More information about the Binutils mailing list