# Test DEFINED in a linker script.
# By Ian Lance Taylor, Cygnus Support.
#   Copyright 2001, 2003. 2006, 2007
#   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.

set testname "DEFINED"
set prms_id 5699

if ![ld_assemble $as $srcdir/$subdir/defined.s tmpdir/def.o] {
    unresolved $testname
    return
}

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

if ![ld_simple_link $ld tmpdir/def "$LDFLAGS -T $srcdir/$subdir/defined.t tmpdir/def.o"] {
    fail $testname
} else {
    if ![ld_nm $nm "" tmpdir/def] {
	unresolved $testname
    } else {
	if {![info exists nm_output(value1)] \
	     || ![info exists nm_output(value2)]} {
	    send_log "bad output from nm\n"
	    verbose "bad output from nm"
	    fail $testname
	} else {
	    if {$nm_output(value1) != 1} {
		send_log "value1 == $nm_output(value1)\n"
		verbose "value1 == $nm_output(value1)"
		fail $testname
	    } else {
		if {$nm_output(value2) != 2} {
		    send_log "value2 == $nm_output(value2)\n"
		    verbose "value2 == $nm_output(value2)"
		    fail $testname
		} else {
		    pass $testname
		}
	    }
	}
    }
}

set prms_id 0
run_dump_test "defined2"
run_dump_test "defined3"
set LDFLAGS "$saved_LDFLAGS"
