# Expect script for various AARCH64 ELF tests.
# Copyright 2009-2012 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.

# Exclude non-aarch64-ELF targets.
if { ![is_elf_format] || ![istarget "aarch64*-*-*"] } {
    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 aarch64elftests {
    {"EH Frame merge" "-Ttext 0x8000" "" "" {eh-frame-bar.s eh-frame-foo.s}
	{{objdump --dwarf=frames eh-frame.d}} "eh-frame"}
}

run_ld_link_tests $aarch64elftests

# Relocation Tests
run_dump_test "weak-undefined"
run_dump_test "emit-relocs-257"
run_dump_test "emit-relocs-257-be"
# 258 is tested in 257
# 259 is tested in 257
run_dump_test "emit-relocs-260"
run_dump_test "emit-relocs-260-be"
# 261 is tested by 260
run_dump_test "emit-relocs-262"
run_dump_test "emit-relocs-263"
run_dump_test "emit-relocs-264"
run_dump_test "emit-relocs-265"
run_dump_test "emit-relocs-266"
run_dump_test "emit-relocs-267"
run_dump_test "emit-relocs-268"
run_dump_test "emit-relocs-269"
run_dump_test "emit-relocs-270"
run_dump_test "emit-relocs-270-bad"
run_dump_test "emit-relocs-271"
run_dump_test "emit-relocs-272"
run_dump_test "emit-relocs-273"
run_dump_test "emit-relocs-274"
run_dump_test "emit-relocs-275"
run_dump_test "emit-relocs-276"
run_dump_test "emit-relocs-277"
run_dump_test "emit-relocs-278"
run_dump_test "emit-relocs-279"
run_dump_test "emit-relocs-279-bad"
run_dump_test "emit-relocs-280"
# 281 is unused
run_dump_test "emit-relocs-282"
run_dump_test "emit-relocs-283"
run_dump_test "emit-relocs-284"
run_dump_test "emit-relocs-285"
run_dump_test "emit-relocs-286"
run_dump_test "emit-relocs-286-bad"
# 287-298 are not done yet
run_dump_test "emit-relocs-299"
# 300-308 are not done yet
run_dump_test "emit-relocs-309-up"
run_dump_test "emit-relocs-309-low"
run_dump_test "emit-relocs-309-up-bad"
run_dump_test "emit-relocs-309-low-bad"
# 310 not done yet
run_dump_test "emit-relocs-311"
run_dump_test "emit-relocs-312"


run_dump_test "limit-b"
run_dump_test "limit-bl"
run_dump_test "farcall-section"
run_dump_test "farcall-back"
run_dump_test "farcall-bl"
run_dump_test "farcall-b"
run_dump_test "farcall-b-none-function"
run_dump_test "farcall-bl-none-function"

run_dump_test "tls-relax-all"
run_dump_test "tls-relax-gd-le"
run_dump_test "tls-relax-gdesc-le"
run_dump_test "tls-relax-gd-ie"
run_dump_test "tls-relax-gdesc-ie"
run_dump_test "tls-relax-ie-le"
run_dump_test "tls-desc-ie"
run_dump_test "tls-relax-gdesc-ie-2"
run_dump_test "tls-relax-gdesc-le-2"
run_dump_test "tls-relax-ie-le-2"
run_dump_test "tls-relax-ie-le-3"
run_dump_test "tlsle-symbol-offset"
