# Expect script for x86-64 TLS tests. # Copyright (C) 2016-2017 Free Software Foundation, Inc. # # This file is part of the GNU Binutils. # # This program 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 3 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. # # The following tests require running the executable generated by ld, # or enough of a build environment to create a fully linked executable. # This is not commonly available when testing a cross-built linker. if ![isnative] { return } # Only on Linux for now. if ![istarget "x86_64-*-linux*"] { return } # Check to see if the C compiler works if { [which $CC] == 0 } { return } run_cc_link_tests [list \ [list \ "Build tls-def1.o tls-main1.o" \ "" \ "-fPIE" \ {tls-def1.c tls-main1.c} \ ] \ [list \ "Build tls-gd1.o tls-ld1.o" \ "" \ "-fPIC -Wa,-mrelax-relocations=yes" \ {tls-gd1.S tls-ld1.S} \ ] \ [list \ "Build libtls-1a.so" \ "-shared tmpdir/tls-def1.o" \ "" \ {dummy.s} \ {} \ "libtls-1a.so" \ ] \ [list \ "Build libtls-1b.so" \ "-shared tmpdir/tls-gd1.o tmpdir/tls-ld1.o" \ "" \ {dummy.s} \ {} \ "libtls-1b.so" \ ] \ ] run_ld_link_exec_tests [list \ [list \ "TLS GD/LD -> LE transition without PLT (dynamic)" \ "tmpdir/tls-def1.o tmpdir/tls-main1.o tmpdir/tls-gd1.o \ tmpdir/tls-ld1.o" \ "" \ { dummy.s } \ "tls-1a" \ "pass.out" \ ] \ [list \ "TLS GD/LD -> LE transition without PLT (PIE)" \ "-pie tmpdir/tls-def1.o tmpdir/tls-main1.o tmpdir/tls-gd1.o \ tmpdir/tls-ld1.o" \ "" \ { dummy.s } \ "tls-1b" \ "pass.out" \ ] \ [list \ "TLS GD/LD -> LE transition without PLT (static)" \ "-static tmpdir/tls-def1.o tmpdir/tls-main1.o tmpdir/tls-gd1.o \ tmpdir/tls-ld1.o" \ "" \ { dummy.s } \ "tls-1c" \ "pass.out" \ ] \ [list \ "TLS GD/LD -> IE transition without PLT" \ "-Wl,--no-as-needed,-R,tmpdir tmpdir/tls-main1.o \ tmpdir/tls-gd1.o tmpdir/tls-ld1.o tmpdir/libtls-1a.so" \ "" \ { dummy.s } \ "tls-1d" \ "pass.out" \ ] \ [list \ "TLS without PLT (1)" \ "-Wl,--no-as-needed,-R,tmpdir tmpdir/tls-main1.o \ tmpdir/libtls-1a.so tmpdir/libtls-1b.so" \ "" \ { dummy.s } \ "tls-1e" \ "pass.out" \ ] \ [list \ "TLS without PLT (2)" \ "-Wl,--no-as-needed,-R,tmpdir tmpdir/tls-main1.o \ tmpdir/tls-def1.o tmpdir/libtls-1b.so" \ "" \ { dummy.s } \ "tls-1f" \ "pass.out" \ ] \ ]