# Expect script for ld-i386 tests
#   Copyright (C) 2002 Free Software Foundation
#
# 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.
#

# Test i386 linking; all types of relocs.  This tests the assembler and
# tools like objdump as well as the linker.

if { !([istarget "i?86-*-elf*"]		
       || ([istarget "i?86-*-linux*"]
	   && ![istarget "*-*-*aout*"]
	   && ![istarget "*-*-*oldld*"])) } {
    return
}

# List contains test-items with 3 items followed by 2 lists:
# 0:name 1:ld options 2:assembler options
# 3:filenames of assembler files 4: action and options. 5: name of output file

# Actions:
# objdump: Apply objdump options on result.  Compare with regex (last arg).
# nm: Apply nm options on result.  Compare with regex (last arg).
# readelf: Apply readelf options on result.  Compare with regex (last arg).

set i386tests {
    {"TLS -fpic -shared transitions" "-shared -melf_i386"
     "--32" {tlspic1.s tlspic2.s}
     {{readelf -Ssrl tlspic.rd} {objdump -drj.text tlspic.dd}
      {objdump -sj.got tlspic.sd} {objdump -sj.tdata tlspic.td}}
      "libtlspic.so"}
    {"Helper shared library" "-shared -melf_i386"
     "--32" {tlslib.s} {} "libtlslib.so"}
    {"TLS -fpic and -fno-pic exec transitions"
     "-melf_i386 tmpdir/libtlslib.so" "--32" {tlsbinpic.s tlsbin.s}
     {{readelf -Ssrl tlsbin.rd} {objdump -drj.text tlsbin.dd}
      {objdump -sj.got tlsbin.sd} {objdump -sj.tdata tlsbin.td}}
      "tlsbin"}
    {"TLS -fno-pic -shared" "-shared -melf_i386"
     "--32" {tlsnopic1.s tlsnopic2.s}
     {{readelf -Ssrl tlsnopic.rd} {objdump -drj.text tlsnopic.dd}
      {objdump -sj.got tlsnopic.sd}} "libtlsnopic.so"}
    {"TLS in debug sections" "-melf_i386"
     "--32" {tlsg.s}
     {{objdump -sj.debug_foobar tlsg.sd}} "tlsg"}
    {"TLS @indntpoff with %eax" "-melf_i386" "--32" {tlsindntpoff.s}
     {{objdump -drj.text tlsindntpoff.dd}} "tlsindntpoff"}
    {"Reloc section order" "-shared -melf_i386 -z nocombreloc" "--32"
     {reloc.s} {{objdump -hw reloc.d}} "reloc.so"}
    {"-z combreloc relocation sections" "-shared -melf_i386 -z combreloc"
     "--32" {combreloc.s} {{readelf -r combreloc.d}} "combreloc.so"}
}

run_ld_link_tests $i386tests
