From c91a930cb775123c1dcdfc3f9366bd3e21d2c5e5 Mon Sep 17 00:00:00 2001 From: Kai Tietz Date: Tue, 21 Dec 2010 15:24:39 +0000 Subject: [PATCH] 2010-12-21 Kai Tietz * peXXigen.c (_bfd_XXi_final_link_postscript): Use bfd_get_symbol_leading_char to determine "_tls_used" name. 2010-12-21 Kai Tietz * ld-pe/pe.exp: Add TLS directory test. * ld-pe/tlssec.s: New. * ld-pe/tlssec64.d: New. * ld-pe/tlssec32.d: New. --- bfd/ChangeLog | 5 +++++ bfd/peXXigen.c | 4 +++- ld/testsuite/ChangeLog | 7 +++++++ ld/testsuite/ld-pe/pe.exp | 6 ++++++ ld/testsuite/ld-pe/tlssec.s | 20 ++++++++++++++++++++ ld/testsuite/ld-pe/tlssec32.d | 3 +++ ld/testsuite/ld-pe/tlssec64.d | 3 +++ 7 files changed, 47 insertions(+), 1 deletion(-) create mode 100755 ld/testsuite/ld-pe/tlssec.s create mode 100755 ld/testsuite/ld-pe/tlssec32.d create mode 100755 ld/testsuite/ld-pe/tlssec64.d diff --git a/bfd/ChangeLog b/bfd/ChangeLog index c863715..7b8ca30 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2010-12-21 Kai Tietz + + * peXXigen.c (_bfd_XXi_final_link_postscript): Use + bfd_get_symbol_leading_char to determine "_tls_used" name. + 2010-12-21 Pierre Muller * peXXigen.c (_bfd_XXi_final_link_postscript): Use correct size diff --git a/bfd/peXXigen.c b/bfd/peXXigen.c index 825229a..322c5ea 100644 --- a/bfd/peXXigen.c +++ b/bfd/peXXigen.c @@ -2418,7 +2418,9 @@ _bfd_XXi_final_link_postscript (bfd * abfd, struct coff_final_link_info *pfinfo) } 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 diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index 90ff589..78537d3 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2010-12-21 Kai Tietz + + * ld-pe/pe.exp: Add TLS directory test. + * ld-pe/tlssec.s: New. + * ld-pe/tlssec64.d: New. + * ld-pe/tlssec32.d: New. + 2010-12-20 Alan Modra * ld-bootstrap/bootstrap.exp: Fix misplaced comment. diff --git a/ld/testsuite/ld-pe/pe.exp b/ld/testsuite/ld-pe/pe.exp index dd4b9f7..183c5c6 100644 --- a/ld/testsuite/ld-pe/pe.exp +++ b/ld/testsuite/ld-pe/pe.exp @@ -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"} } } diff --git a/ld/testsuite/ld-pe/tlssec.s b/ld/testsuite/ld-pe/tlssec.s new file mode 100755 index 0000000..ba14881 --- /dev/null +++ b/ld/testsuite/ld-pe/tlssec.s @@ -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 + diff --git a/ld/testsuite/ld-pe/tlssec32.d b/ld/testsuite/ld-pe/tlssec32.d new file mode 100755 index 0000000..0114064 --- /dev/null +++ b/ld/testsuite/ld-pe/tlssec32.d @@ -0,0 +1,3 @@ +#... +Entry 9 00003000 00000018 Thread Storage Directory \[\.tls\] +#... diff --git a/ld/testsuite/ld-pe/tlssec64.d b/ld/testsuite/ld-pe/tlssec64.d new file mode 100755 index 0000000..692d9e4 --- /dev/null +++ b/ld/testsuite/ld-pe/tlssec64.d @@ -0,0 +1,3 @@ +#... +Entry 9 0000000000003000 00000028 Thread Storage Directory \[\.tls\] +#... -- 2.7.4