# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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
