Index: src/bfd/peXXigen.c =================================================================== --- src.orig/bfd/peXXigen.c 2010-12-21 10:08:50.000000000 +0100 +++ src/bfd/peXXigen.c 2010-12-21 15:07:46.752622600 +0100 @@ -82,6 +82,11 @@ #include "libcoff.h" #include "libpei.h" +/* Make sure we have default definition. */ +#ifndef TARGET_UNDERSCORE +#define TARGET_UNDERSCORE 0 +#endif + #if defined COFF_WITH_pep || defined COFF_WITH_pex64 # undef AOUTSZ # define AOUTSZ PEPAOUTSZ @@ -2418,7 +2423,9 @@ _bfd_XXi_final_link_postscript (bfd * ab } h1 = coff_link_hash_lookup (coff_hash_table (info), - "__tls_used", FALSE, FALSE, TRUE); + (bfd_get_symbol_leading_char(abfd) != 0 + ? "__tls_used" : "_tls_used"), + FALSE, FALSE, TRUE); if (h1 != NULL) { if ((h1->root.type == bfd_link_hash_defined Index: src/ld/testsuite/ld-pe/pe.exp =================================================================== --- src.orig/ld/testsuite/ld-pe/pe.exp 2010-04-07 09:31:26.000000000 +0200 +++ src/ld/testsuite/ld-pe/pe.exp 2010-12-21 11:37:15.851325100 +0100 @@ -38,6 +38,8 @@ if {[istarget i*86-*-cygwin*] {{objdump -s secrel_64.d}} "secrel.x"} {"Empty export table" "" "" "exports.s" {{objdump -p exports64.d}} "exports.dll"} + {"TLS directory entry" "" "" "tlssec.s" + {{objdump -p tlssec64.d}} "tlssec.dll"} } } elseif {[istarget i*86-*-cygwin*] } { set pe_tests { @@ -45,6 +47,8 @@ if {[istarget i*86-*-cygwin*] {{objdump -s secrel.d}} "secrel.x"} {"Empty export table" "" "" "exports.s" {{objdump -p exports.d}} "exports.dll"} + {"TLS directory entry" "" "" "tlssec.s" + {{objdump -p tlssec32.d}} "tlssec.dll"} } } else { set pe_tests { @@ -52,6 +56,8 @@ if {[istarget i*86-*-cygwin*] {{objdump -s secrel.d}} "secrel.x"} {"Empty export table" "" "" "exports.s" {{objdump -p exports.d}} "exports.dll"} + {"TLS directory entry" "" "" "tlssec.s" + {{objdump -p tlssec32.d}} "tlssec.dll"} } } Index: src/ld/testsuite/ld-pe/tlssec.s =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ src/ld/testsuite/ld-pe/tlssec.s 2010-12-21 11:29:09.770089200 +0100 @@ -0,0 +1,20 @@ +.global _tls_used +.global __tls_used +.global _start +.global start +.global _mainCRTStartup +.global mainCRTStartup + +.text +_start: +mainCRTStartup: +_mainCRTStartup: + .byte 1 + +.section .tls +_tls_used: +__tls_used: +.long 1,2,3,4,5,6,7,8,9,10 +.long 11,12,13,14,15,16,17,18,19,20 +.long 21,22,23,24,25,26,27,28,29,30 + Index: src/ld/testsuite/ld-pe/tlssec32.d =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ src/ld/testsuite/ld-pe/tlssec32.d 2010-12-21 11:53:41.935250500 +0100 @@ -0,0 +1,3 @@ +#... +Entry 9 00003000 00000018 Thread Storage Directory \[\.tls\] +#... Index: src/ld/testsuite/ld-pe/tlssec64.d =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ src/ld/testsuite/ld-pe/tlssec64.d 2010-12-21 11:34:21.131456900 +0100 @@ -0,0 +1,3 @@ +#... +Entry 9 0000000000003000 00000028 Thread Storage Directory \[\.tls\] +#...