# Expect script for ld-s390 tests
#   Copyright (C) 2003-2016 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.
#

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

if { !([istarget "s390-*-*"] || [istarget "s390x-*-*"]) } {
    return
}

# List contains test-items with 3 items followed by 2 lists:
# 0:name 1:ld early options 2:ld late options 3:assembler options
# 4:filenames of assembler files 5: action and options. 6: 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 s390tests {
    {"TLS -fpic -shared transitions" "-shared -melf_s390" ""
     "-m31" {tlspic1.s tlspic2.s}
     {{readelf -Ssrl tlspic.rd} {objdump -dzrj.text tlspic.dd}
      {objdump -sj.got tlspic.sd} {objdump -sj.tdata tlspic.td}}
     "libtlspic.so"}
    {"Helper shared library" "-shared -melf_s390" ""
     "-m31" {tlslib.s} {} "libtlslib.so"}
    {"TLS -fpic and -fno-pic exec transitions"
     "-melf_s390 tmpdir/libtlslib.so" "" "-m31" {tlsbinpic.s tlsbin.s}
     {{readelf -Ssrl tlsbin.rd} {objdump -dzrj.text tlsbin.dd}
      {objdump -sj.got tlsbin.sd} {objdump -sj.tdata tlsbin.td}}
     "tlsbin"}
    {"GOT: symbol address load from got to larl"
     "-shared -melf_s390 --version-script=gotreloc-1.ver" ""
     "-m31" {gotreloc-1.s}
     {{objdump -dzrj.text gotreloc_31-1.dd}}
     "gotreloc_31-1"}
}

set s390xtests {
    {"TLS -fpic -shared transitions" "-shared -melf64_s390" ""
     "-m64 -Aesame" {tlspic1_64.s tlspic2_64.s}
     {{readelf -WSsrl tlspic_64.rd} {objdump -dzrj.text tlspic_64.dd}
      {objdump -sj.got tlspic_64.sd} {objdump -sj.tdata tlspic_64.td}}
     "libtlspic_64.so"}
    {"Helper shared library" "-shared -melf64_s390" ""
     "-m64 -Aesame" {tlslib_64.s} {} "libtlslib_64.so"}
    {"TLS -fpic and -fno-pic exec transitions"
     "-melf64_s390 tmpdir/libtlslib_64.so" "" "-m64 -Aesame"
     {tlsbinpic_64.s tlsbin_64.s}
     {{readelf -WSsrl tlsbin_64.rd} {objdump -dzrj.text tlsbin_64.dd}
      {objdump -sj.got tlsbin_64.sd} {objdump -sj.tdata tlsbin_64.td}}
     "tlsbin_64"}
    {"GOT: symbol address load from got to larl"
     "-shared -melf64_s390 --version-script=gotreloc-1.ver" ""
     "-m64" {gotreloc-1.s}
     {{objdump -dzrj.text gotreloc_64-1.dd}}
     "gotreloc_64-1"}
    {"PLT: offset test"
     "-shared -m elf64_s390 -dT pltoffset-1.ld" ""
     "-m64" {pltoffset-1.s}
     {{objdump "-dzrj.text --stop-address=16" pltoffset-1.dd}}
     "pltoffset-1"}
}

if [istarget "s390-*-*"] {
    run_ld_link_tests $s390tests
}

if [istarget "s390x-*-*"] {
    run_ld_link_tests $s390tests
    run_ld_link_tests $s390xtests
}
