From 9eae5acd8cbf611e3f2fe496d241d224fd462ecd Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Tue, 7 Aug 2012 13:47:13 +0000 Subject: * config/tc-i386.c (lex_got): Provide implementation for PE format. * gas/i386/secrel.s: Add test of @SECREL32. * gas/i386/secrel.d: Add expected disassembly. * scripttempl/pe.sc (R_TLS): Add .tls$AAA and .tls$ZZZ. * scripttempl/pep.sc (R_TLS): Add .tls$AAA and .tls$ZZZ. * archive.c (_bfd_delete_archive_data): New function. * libbfd-in.h (_bfd_delete_archive_data): Declare. * libbfd.h: Rebuild. * opncls.c (_bfd_delete_bfd): Call _bfd_delete_archive_data. --- ld/scripttempl/pe.sc | 8 +++++++- ld/scripttempl/pep.sc | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) (limited to 'ld/scripttempl') diff --git a/ld/scripttempl/pe.sc b/ld/scripttempl/pe.sc index 3a27952fe1..5b9bd6147a 100644 --- a/ld/scripttempl/pe.sc +++ b/ld/scripttempl/pe.sc @@ -39,9 +39,11 @@ if test "${RELOCATING}"; then R_CRT_XP='*(SORT(.CRT$XP*)) /* Pre-termination */' R_CRT_XT='*(SORT(.CRT$XT*)) /* Termination */' R_TLS=' + *(.tls$AAA) *(.tls) *(.tls$) - *(SORT(.tls$*))' + *(SORT(.tls$*)) + *(.tls$ZZZ)' R_RSRC='*(SORT(.rsrc$*))' else R_TEXT= @@ -179,6 +181,10 @@ SECTIONS ${RELOCATING+___crt_xt_end__ = . ;} } + /* Windows TLS expects .tls\$AAA to be at the start and .tls\$ZZZ to be + at the end of section. This is important because _tls_start MUST + be at the beginning of the section to enable SECREL32 relocations with TLS + data. */ .tls ${RELOCATING+BLOCK(__section_alignment__)} : { ${RELOCATING+___tls_start__ = . ;} diff --git a/ld/scripttempl/pep.sc b/ld/scripttempl/pep.sc index b2113fe227..ff11153054 100644 --- a/ld/scripttempl/pep.sc +++ b/ld/scripttempl/pep.sc @@ -39,9 +39,11 @@ if test "${RELOCATING}"; then R_CRT_XP='*(SORT(.CRT$XP*)) /* Pre-termination */' R_CRT_XT='*(SORT(.CRT$XT*)) /* Termination */' R_TLS=' + *(.tls$AAA) *(.tls) *(.tls$) - *(SORT(.tls$*))' + *(SORT(.tls$*)) + *(.tls$ZZZ)' R_RSRC='*(SORT(.rsrc$*))' else R_TEXT= @@ -185,6 +187,10 @@ SECTIONS ${RELOCATING+___crt_xt_end__ = . ;} } + /* Windows TLS expects .tls\$AAA to be at the start and .tls\$ZZZ to be + at the end of the .tls section. This is important because _tls_start MUST + be at the beginning of the section to enable SECREL32 relocations with TLS + data. */ .tls ${RELOCATING+BLOCK(__section_alignment__)} : { ${RELOCATING+___tls_start__ = . ;} -- cgit v1.2.1