# Test SORT_BY_NAME/SORT_BY_ALIGNMENT/SORT in a linker script.
# By H.J. Lu  <hongjiu.lu@intel.com>
#   Copyright (C) 2004-2016 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.

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

# The h8300 port issues a warning message for
# new sections created without atrributes.
if [istarget "h8300-*-*"] {
  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]]
}
