# Expect script for ld selective linking tests running run_dump_test
#   Copyright 2002, 2004 Free Software Foundation, Inc.
#
# 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.

# Test for ELF here, so we don't have to qualify on ELF specifically
# in every .d-file.
if ![is_elf_format] {
    return
}

set test_list [lsort [glob -nocomplain $srcdir/$subdir/*.d]]
for { set i 0 } { $i < [llength $test_list] } { incr i } {
    # We need to strip the ".d", but can leave the dirname.
    verbose [file rootname [lindex $test_list $i]]
    setup_xfail "alpha*-*" "arc*-*" "d30v*-*" "dlx*-*" "hppa64-*-*"
    setup_xfail "i370*-*" "i860*-*" "i960*-*" "ia64*-*" "mn10200-*"
    setup_xfail  "or32-*" "pj-*"
    run_dump_test [file rootname [lindex $test_list $i]]
}
