# Test PROVIDE in a linker script.
# By Nathan Sidwell, CodeSourcery LLC
#   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.

# AIX maps .text and .data to other sections.
# a.out objdump displays the file header inside the text segment,
# confusing run_dump_test.

if {[istarget "rs6000-*-aix*"] || [is_aout_format]} {
    unsupported provide-1
    unsupported provide-2
    unsupported provide-3
    return
}

global LDFLAGS
set saved_LDFLAGS "$LDFLAGS"
if [istarget "x86_64-*-mingw*"] then {
  set LDFLAGS "$LDFLAGS --image-base 0"
}

run_dump_test provide-1
run_dump_test provide-2
setup_xfail *-*-*
run_dump_test provide-3
run_dump_test provide-4
run_dump_test provide-5

set LDFLAGS "$saved_LDFLAGS"
