summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierre Muller <muller@ics.u-strasbg.fr>2010-12-21 08:41:15 +0000
committerPierre Muller <muller@ics.u-strasbg.fr>2010-12-21 08:41:15 +0000
commit64995ef9bafb6ff67fe9f2c8c6b8a8f557fbd139 (patch)
treef3dc9434b9c57f2a80666b3d7a2cddc8557a6ae9
parent51774f2bf511346b140979c7f7a74a7ee06438bf (diff)
downloadbinutils-redhat-64995ef9bafb6ff67fe9f2c8c6b8a8f557fbd139.tar.gz
* peXXigen.c (_bfd_XXi_final_link_postscript): Use correct size
for windows 64-bit TLS table size.
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/peXXigen.c9
2 files changed, 13 insertions, 1 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 39524f6ceb..c86371552b 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -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.
diff --git a/bfd/peXXigen.c b/bfd/peXXigen.c
index a5b7f68b90..825229aab9 100644
--- a/bfd/peXXigen.c
+++ b/bfd/peXXigen.c
@@ -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