# Test SORT_BY_NAME/SORT_BY_ALIGNMENT/SORT in a linker script.
# By H.J. Lu  <hongjiu.lu@intel.com>
#   Copyright 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

# FIXME: The expected outputs are correct only for ELF.
if ![is_elf_format] {
    return
}

load_lib ld-lib.exp

set sort_test_list [lsort [glob -nocomplain $srcdir/$subdir/sort*.d]]
for { set i 0 } { $i < [llength $sort_test_list] } { incr i } {
    verbose [file rootname [lindex $sort_test_list $i]]
    run_dump_test [file rootname [lindex $sort_test_list $i]]
}
