# Expect script for various KVX ELF tests.
# Copyright (C) 2009-2026 Free Software Foundation, Inc.
#   Contributed by Kalray 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; see the file COPYING3. If not,
# see <http://www.gnu.org/licenses/>.
#

# Exclude non-kvx-ELF targets.
if { ![istarget "kvx-*-*"] } {
    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).

# 64bits tests
run_dump_test "limit-call"
run_dump_test "limit-goto"
run_dump_test "farcall-back"
run_dump_test "farcall-goto-defsym"
run_dump_test "farcall-call-defsym"
run_dump_test "farcall-goto-gsym"
run_dump_test "farcall-goto-plt"
run_dump_test "farcall-call-plt"
run_dump_test "farcall-call"
run_dump_test "farcall-goto"
run_dump_test "farcall-goto-none-function"
run_dump_test "farcall-call-none-function"
run_dump_test "farcall-goto-section"
run_dump_test "farcall-call-section"
run_dump_test "pcrel-reloc"

## 32bits tests
if { ![istarget "kvx*-linux-*"] } {
  set extra_32bits [list [list as -m32] [list ld -melf32kvx]]
    run_dump_test "limit-call" $extra_32bits
    run_dump_test "limit-goto" $extra_32bits
    run_dump_test "farcall-back" $extra_32bits
    run_dump_test "farcall-goto-defsym" $extra_32bits
    run_dump_test "farcall-call-defsym" $extra_32bits
    run_dump_test "farcall-goto-gsym" $extra_32bits
    run_dump_test "farcall-goto-plt" $extra_32bits
    run_dump_test "farcall-call-plt" $extra_32bits
    run_dump_test "farcall-call" $extra_32bits
    run_dump_test "farcall-goto" $extra_32bits
    run_dump_test "farcall-goto-none-function" $extra_32bits
    run_dump_test "farcall-call-none-function" $extra_32bits
    run_dump_test "farcall-goto-section" $extra_32bits
    run_dump_test "farcall-call-section" $extra_32bits
    run_dump_test "pcrel-reloc" [list [list as -m32] [list ld -melf32kvx] [list dump pcrel-reloc-32bits.d]]
}

# Tidy up, to not leave huge intermediate files.
remote_file host delete tmpdir/farcall-call-plt.o
remote_file host delete tmpdir/farcall-goto-gsym.o
remote_file host delete tmpdir/farcall-goto-plt.o
