* elflink.c (elf_link_add_object_symbols): Don't create .tcommon

section for relocatable link.

	* ld-elf/tls_common.exp: New test.
	* ld-elf/tls_common.s: New file.
This commit is contained in:
Jakub Jelinek 2006-06-20 16:36:18 +00:00
parent e36284abcf
commit 6a4a0940e5
5 changed files with 93 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2006-06-20 Jakub Jelinek <jakub@redhat.com>
* elflink.c (elf_link_add_object_symbols): Don't create .tcommon
section for relocatable link.
2006-06-21 Alan Modra <amodra@bigpond.net.au>
* elf-bfd.h (struct elf_backend_data): Add

View File

@ -3621,7 +3621,8 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
goto error_free_vers;
if (isym->st_shndx == SHN_COMMON
&& ELF_ST_TYPE (isym->st_info) == STT_TLS)
&& ELF_ST_TYPE (isym->st_info) == STT_TLS
&& !info->relocatable)
{
asection *tcomm = bfd_get_section_by_name (abfd, ".tcommon");

View File

@ -1,3 +1,8 @@
2006-06-20 Jakub Jelinek <jakub@redhat.com>
* ld-elf/tls_common.exp: New test.
* ld-elf/tls_common.s: New file.
2006-06-20 Alan Modra <amodra@bigpond.net.au>
* ld-elf/eh1.d: Update for fewer program headers.

View File

@ -0,0 +1,70 @@
# Expect script for .tls_common tests
# Copyright 2006 Free Software Foundation, Inc.
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
#
# Written by Jakub Jelinek (jakub@redhat.com)
#
# Make sure that binutils can correctly handle ld output in ELF.
# Run on Linux only.
if { ![istarget *-*-linux*] } {
return
}
if { [istarget *-*-linux*aout*]
|| [istarget *-*-linux*oldld*] } {
return
}
global as
global ld
global READELF
global srcdir
global subdir
global link_output
if { ![ld_assemble $as $srcdir/$subdir/tls_common.s tmpdir/tls_common.o ] } {
unresolved "tls_common"
return
}
if { ![ld_simple_link $ld tmpdir/tls_common1.o "-r tmpdir/tls_common.o"] } {
fail "tls_common"
return
}
if { ![ld_simple_link $ld tmpdir/tls_common "tmpdir/tls_common1.o"] } {
if { [string match "*not supported*" $link_output]
|| [string match "*unrecognized option*" $link_output] } {
unsupported "$ld_options is not supported by this target"
} elseif { [string match "*Warning*alignment*of common symbol*" $link_output] } {
fail "tls_common"
} else {
unresolved "tls_common"
}
return
}
send_log "$READELF -l --wide tmpdir/tls_common\n"
catch "exec $READELF -l --wide tmpdir/tls_common" readelf_output
if ![string match "*TLS*0x000000 0x000004 R *" $readelf_output] then {
send_log "$readelf_output\n"
fail "tls_common"
return
}
pass "tls_common"

View File

@ -0,0 +1,11 @@
.globl main
.globl start
.globl _start
.globl __start
.text
main:
start:
_start:
__start:
.byte 0
.tls_common foo,4,4