#   Copyright (C) 2009-2025 Free Software Foundation, Inc.
#   Contributed by Kalray SA.

#   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/>.  */

if {!([istarget "kvx*-*-*"])
    || ![is_elf_format]
    || [is_remote host]} then {
    return
}

global tempfile
global copyfile
set tempfile tmpdir/kvxtemp.o
set copyfile tmpdir/kvxcopy

## binutils test framework does not support the 'dump' EXTRA args to
## simply share a single .s for 32 and 64bits test.
# So we duplicate the source .s

# 32bits test
run_dump_test "pcrel_bundle32bits"

# 64bits test
run_dump_test "pcrel_bundle"
