# Expect script for simple native Linux/x86 tests.
#   Copyright (C) 2018-2021 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.
#

# Linux/x86 tests.
if { ![istarget "i?86-*-linux*"] \
       && ![istarget "x86_64-*-linux*"] \
       && ![istarget "amd64-*-linux*"] } {
    return
}

run_ld_link_tests [list \
    [list \
	"Build pr24920.so" \
	"-shared" \
	"" \
	"" \
	{dummy.s} \
	{} \
	"pr24920.so" \
    ] \
    [list \
	"Build pr24920" \
	"-static " \
	"-Bdynamic tmpdir/pr24920.so" \
	"" \
	{start.s} \
	{{ld pr24920.err}} \
	"pr24920" \
    ] \
]

# Test very simple native Linux/x86 programs with linux-x86.S.
run_ld_link_exec_tests [list \
    [list \
	"Run PR ld/23428 test" \
	"--no-dynamic-linker -z separate-code" \
	"" \
	{ linux-x86.S pr23428.c dummy.s } \
	"pr23428" \
	"pass.out" \
	"$NOPIE_CFLAGS $NOSANITIZE_CFLAGS -fno-asynchronous-unwind-tables" \
	"asm" \
    ] \
]

run_ld_link_tests [list \
    [list \
	"Build x86-feature-1" \
	"-z separate-code -z shstk" \
	"" \
	"-mx86-used-note=yes" \
	{ start.s } \
	{{readelf -n x86-feature-1a.rd}} \
	"x86-feature-1" \
    ] \
]

run_cc_link_tests [list \
    [list \
	"Build indirect-extern-access-1.so" \
	"-shared" \
	"-fPIC" \
	{ indirect-extern-access-1a.c } \
	{} \
	"indirect-extern-access-1.so" \
    ] \
    [list \
	"Build indirect-extern-access-1a without PIE" \
	"$NOPIE_LDFLAGS -Wl,--no-as-needed  \
	 tmpdir/indirect-extern-access-1.so" \
	"$NOPIE_CFLAGS" \
	{ indirect-extern-access.S indirect-extern-access-1b.c } \
	{{readelf -rn indirect-extern-access-1.rd}} \
	"indirect-extern-access-1a" \
    ] \
    [list \
	"Build indirect-extern-access-2.so" \
	"-shared" \
	"-fPIC" \
	{ indirect-extern-access-2a.c } \
	{} \
	"indirect-extern-access-2.so" \
    ] \
    [list \
	"Build indirect-extern-access-2a without PIE" \
	"$NOPIE_LDFLAGS -Wl,--no-as-needed  \
	 tmpdir/indirect-extern-access-2.so" \
	"$NOPIE_CFLAGS" \
	{ indirect-extern-access.S indirect-extern-access-1b.c } \
	{{readelf -rn indirect-extern-access-2.rd}} \
	"indirect-extern-access-2a" \
    ] \
    [list \
	"Build indirect-extern-access-2b with PIE" \
	"-pie -Wl,--no-as-needed  \
	 tmpdir/indirect-extern-access-2.so" \
	"-fpie" \
	{ indirect-extern-access.S indirect-extern-access-2b.c } \
	{{readelf -rn indirect-extern-access-3.rd}} \
	"indirect-extern-access-2b" \
    ] \
    [list \
	"Build pr28158.so" \
	"-shared -Wl,-version-script,pr27128.t" \
	"-fPIC" \
	{ pr28158-1.c } \
	{} \
	"pr28158.so" \
    ] \
    [list \
	"Build pr28158" \
	"$NOPIE_LDFLAGS -Wl,--no-as-needed  \
	 tmpdir/pr28158.so" \
	"" \
	{ pr28158-2.S } \
	{{readelf {--dyn-syms -W} pr28158.rd} {nm -D pr28158.nd}} \
	"pr28158" \
    ] \
]

run_ld_link_exec_tests [list \
    [list \
	"Run indirect-extern-access-1a without PIE" \
	"$NOPIE_LDFLAGS" \
	"" \
	{ indirect-extern-access.S indirect-extern-access-1b.c } \
	"indirect-extern-access-1a" \
	"pass.out" \
	"$NOPIE_CFLAGS" \
	"" \
	"" \
	"tmpdir/indirect-extern-access-1.so" \
    ] \
    [list \
	"Run indirect-extern-access-1b with PIE" \
	"-pie" \
	"" \
	{ indirect-extern-access.S indirect-extern-access-1b.c } \
	"indirect-extern-access-1b" \
	"pass.out" \
	"-fpie" \
	"" \
	"" \
	"tmpdir/indirect-extern-access-1.so" \
    ] \
    [list \
	"Run indirect-extern-access-2a without PIE" \
	"$NOPIE_LDFLAGS" \
	"" \
	{ indirect-extern-access.S indirect-extern-access-2b.c } \
	"indirect-extern-access-2a" \
	"pass.out" \
	"$NOPIE_CFLAGS" \
	"" \
	"" \
	"tmpdir/indirect-extern-access-2.so" \
    ] \
    [list \
	"Run indirect-extern-access-2b with PIE" \
	"-pie" \
	"" \
	{ indirect-extern-access.S indirect-extern-access-2b.c } \
	"indirect-extern-access-2b" \
	"pass.out" \
	"-fpie" \
	"" \
	"" \
	"tmpdir/indirect-extern-access-2.so" \
    ] \
]

proc elfedit_test { options test output } {
    global ELFEDIT
    global READELF
    global srcdir
    global subdir

    set test_name "elfedit $options"
    send_log "$ELFEDIT $options tmpdir/$test\n"
    set got [remote_exec host "$ELFEDIT $options tmpdir/$test" "" "/dev/null"]
    if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then {
	send_log "$got\n"
	fail "$test_name"
    }
    send_log "$READELF -n $options tmpdir/$test > tmpdir/$output.out\n"
    set got [remote_exec host "$READELF -n tmpdir/$test" "" "/dev/null" "tmpdir/$output.out"]
    if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then {
	send_log "$got\n"
	fail "$test_name"
}
    if { [regexp_diff tmpdir/$output.out $srcdir/$subdir/$output.rd] } then {
	fail "$test_name"
    } else {
	pass "$test_name"
    }
}

elfedit_test "--enable-x86-feature ibt --disable-x86-feature shstk" \
		x86-feature-1 x86-feature-1b
elfedit_test "--enable-x86-feature ibt" x86-feature-1 x86-feature-1b
elfedit_test "--disable-x86-feature shstk" x86-feature-1 x86-feature-1c
elfedit_test "--disable-x86-feature ibt" x86-feature-1 x86-feature-1d
elfedit_test "--enable-x86-feature ibt --enable-x86-feature shstk" \
		x86-feature-1 x86-feature-1e

proc check_pr25749a {testname srcfilea srcfileb cflags ldflags lderror} {
    global objcopy
    global srcdir
    global subdir

    if { [istarget "i?86-*-linux*"] } {
	set output_arch "i386:i386"
	set output_target "elf32-i386"
    } else {
	set output_arch "i386:x86-64"
	if {[istarget "x86_64-*-linux*-gnux32"]} {
	    set output_target "elf32-x86-64"
	} else {
	    set output_target "elf64-x86-64"
	}
    }

    # Suppress warning for unsupported attribute from older GCC.
    append cflags " -w"

    exec cp $srcdir/$subdir/$srcfilea $srcfilea
    exec chmod +w $srcfilea
    set pr25749_bin "$objcopy -B $output_arch -I binary -O $output_target $srcfilea tmpdir/pr25749-bin.o"
    send_log "$pr25749_bin\n"
    set got [remote_exec host "$pr25749_bin"]
    if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then {
	send_log "$got\n"
	fail "Convert $srcfilea to $output_target"
	return
    }

    if {"$lderror" == ""} {
	run_cc_link_tests [list \
	    [list \
		"Build $testname ($ldflags $cflags)" \
		"$ldflags tmpdir/pr25749-bin.o" \
		"$cflags -I../bfd" \
		[list $srcfilea $srcfileb]\
		{{readelf {-Wr} pr25749.rd}}  \
		"${testname}a" \
	    ] \
	]
	run_ld_link_exec_tests [list \
	    [list \
		"Run ${testname}a ($ldflags $cflags)" \
		"$ldflags tmpdir/pr25749-bin.o" \
		"" \
		[list $srcfilea $srcfileb]\
		"${testname}a" \
		"pass.out" \
		"$cflags -I../bfd" \
	    ] \
	]
    } else {
	run_cc_link_tests [list \
	    [list \
		"Build $testname ($ldflags $cflags)" \
		"$ldflags tmpdir/pr25749-bin.o" \
		"$cflags -I../bfd" \
		[list $srcfilea $srcfileb]\
		[list [list error_output $lderror]] \
		"$testname" \
	    ] \
	]
    }
}

check_pr25749a "pr25749-1a" "pr25749-1.c" "pr25749-1a.c" "$NOPIE_CFLAGS" "$NOPIE_LDFLAGS" ""
check_pr25749a "pr25749-1a" "pr25749-1.c" "pr25749-1a.c" "-fPIE" "-pie" ""
check_pr25749a "pr25749-1b" "pr25749-1.c" "pr25749-1b.c" "$NOPIE_CFLAGS" "$NOPIE_LDFLAGS" ""
if { [istarget "i?86-*-linux*"] || ![at_least_gcc_version 5 1] } {
    check_pr25749a "pr25749-1b" "pr25749-1.c" "pr25749-1b.c" "-fPIE" "-pie" ""
} else {
    check_pr25749a "pr25749-1b" "pr25749-1.c" "pr25749-1b.c" "-fPIE" "-pie" "pr25749-1b.err"
}
check_pr25749a "pr25749-1c" "pr25749-1.c" "pr25749-1c.c" "-fPIC" "-shared" "pr25749-1b.err"
check_pr25749a "pr25749-2a" "pr25749-2.c" "pr25749-2a.s" "$NOPIE_CFLAGS" "$NOPIE_LDFLAGS" ""
check_pr25749a "pr25749-2a" "pr25749-2.c" "pr25749-2a.s" "-fPIE" "-pie" ""
check_pr25749a "pr25749-2b" "pr25749-2.c" "pr25749-2b.s" "$NOPIE_CFLAGS" "$NOPIE_LDFLAGS" ""
check_pr25749a "pr25749-2b" "pr25749-2.c" "pr25749-2b.s" "-fPIE" "-pie" ""
check_pr25749a "pr25754-1a" "pr25754-1a.c" "pr25754-1b.s" "$NOPIE_CFLAGS" "$NOPIE_LDFLAGS" ""
check_pr25749a "pr25754-1b" "pr25754-1a.c" "pr25754-1b.s" "-fPIE" "$NOPIE_LDFLAGS" ""
check_pr25749a "pr25754-1c" "pr25754-1a.c" "pr25754-1b.s" "-fPIC" "$NOPIE_LDFLAGS" ""
check_pr25749a "pr25754-1d" "pr25754-1a.c" "pr25754-1b.s" "-fPIC" "-pie" ""
if { [istarget "i?86-*-linux*"] || [istarget "x86_64-*-linux*-gnux32"]} {
    check_pr25749a "pr25754-2a" "pr25754-2a.c" "pr25754-2b.s" "-fPIC" "$NOPIE_LDFLAGS" ""
    check_pr25749a "pr25754-2b" "pr25754-2a.c" "pr25754-2b.s" "-fPIC" "-pie" ""
} else {
    check_pr25749a "pr25754-3a" "pr25754-3a.c" "pr25754-3b.s" "-fPIC" "$NOPIE_LDFLAGS" ""
    check_pr25749a "pr25754-3b" "pr25754-3a.c" "pr25754-3b.s" "-fPIC" "-pie" ""
}
if { [istarget "i?86-*-linux*"] } {
    check_pr25749a "pr25754-4a" "pr25754-4a.c" "pr25754-4b.s" "$NOPIE_CFLAGS" "$NOPIE_LDFLAGS" ""
    check_pr25749a "pr25754-4b" "pr25754-4a.c" "pr25754-4b.s" "-fpie" "-pie" ""
    check_pr25749a "pr25754-5a" "pr25754-5a.c" "pr25754-5b.s" "$NOPIE_CFLAGS" "$NOPIE_LDFLAGS" ""
    check_pr25749a "pr25754-5b" "pr25754-5a.c" "pr25754-5b.s" "-fpie" "-pie" ""
} else {
    check_pr25749a "pr25754-4a" "pr25754-4a.c" "pr25754-4c.s" "$NOPIE_CFLAGS" "$NOPIE_LDFLAGS" ""
    check_pr25749a "pr25754-4b" "pr25754-4a.c" "pr25754-4c.s" "-fpie" "-pie" ""
    check_pr25749a "pr25754-5a" "pr25754-5a.c" "pr25754-5c.s" "$NOPIE_CFLAGS" "$NOPIE_LDFLAGS" ""
    check_pr25749a "pr25754-5b" "pr25754-5a.c" "pr25754-5c.s" "-fpie" "-pie" ""
    if { ![istarget "x86_64-*-linux*-gnux32"]} {
	check_pr25749a "pr25754-6a" "pr25754-6a.c" "pr25754-6b.s" "$NOPIE_CFLAGS" "$NOPIE_LDFLAGS" ""
	check_pr25749a "pr25754-6b" "pr25754-6a.c" "pr25754-6b.s" "-fpie" "-pie" ""
    }
}

proc check_pr25749b {testname srcfilea srcfileb cflags ldflags dsoldflags args} {
    global objcopy
    global srcdir
    global subdir

    if { [istarget "i?86-*-linux*"] } {
	set output_arch "i386:i386"
	set output_target "elf32-i386"
    } else {
	set output_arch "i386:x86-64"
	if {[istarget "x86_64-*-linux*-gnux32"]} {
	    set output_target "elf32-x86-64"
	} else {
	    set output_target "elf64-x86-64"
	}
    }

    exec cp $srcdir/$subdir/$srcfilea $srcfilea
    exec chmod +w $srcfilea
    set pr25749_bin "$objcopy -B $output_arch -I binary -O $output_target $srcfilea tmpdir/pr25749-bin.o"
    send_log "$pr25749_bin\n"
    set got [remote_exec host "$pr25749_bin"]
    if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then {
	send_log "$got\n"
	fail "Convert $srcfilea to $output_target"
	return
    }

    run_cc_link_tests [list \
	[list \
	    "Build lib${testname}.so ($dsoldflags)" \
	    "-shared $dsoldflags tmpdir/pr25749-bin.o" \
	    "-fPIC -I../bfd" \
	    [list $srcfileb] \
	    {{readelf {-Wr} pr25749.rd}}  \
	    "lib${testname}.so" \
	] \
    ]

    set pass "pass.out"
    if { [llength $args] > 0 } {
	set pass [lindex $args 0]
    }

    run_ld_link_exec_tests [list \
	[list \
	    "Run ${testname}b ($ldflags $cflags)" \
	    "$ldflags -Wl,--no-as-needed tmpdir/lib${testname}.so" \
	    "" \
	    [list $srcfilea]\
	    "${testname}b" \
	    "$pass" \
	    "$cflags -I../bfd" \
	] \
    ]
}

check_pr25749b "pr25749-1a" "pr25749-1.c" "pr25749-1a.c" "$NOPIE_CFLAGS" "$NOPIE_LDFLAGS" ""
check_pr25749b "pr25749-1a" "pr25749-1.c" "pr25749-1a.c" "-fPIE" "-pie" ""
check_pr25749b "pr25749-1a" "pr25749-1.c" "pr25749-1a.c" "-fPIE" "-pie" "-Wl,-Bsymbolic"
check_pr25749b "pr25749-1b" "pr25749-1.c" "pr25749-1b.c" "$NOPIE_CFLAGS" "$NOPIE_LDFLAGS" "" "passall.out"
check_pr25749b "pr25749-1b" "pr25749-1.c" "pr25749-1b.c" "-fPIE" "-pie" "" "passall.out"
check_pr25749b "pr25749-1b" "pr25749-1.c" "pr25749-1b.c" "-fPIE" "-pie" "-Wl,-Bsymbolic"
check_pr25749b "pr25749-1d" "pr25749-1.c" "pr25749-1d.c" "$NOPIE_CFLAGS" "$NOPIE_LDFLAGS" "-Wl,-defsym=_begin=0"
check_pr25749b "pr25749-1d" "pr25749-1.c" "pr25749-1d.c" "-fPIE" "-pie" "-Wl,-defsym=_begin=0"
check_pr25749b "pr25749-1d" "pr25749-1.c" "pr25749-1d.c" "-fPIE" "-pie" "-Wl,-Bsymbolic -Wl,-defsym=_begin=0"
check_pr25749b "pr25749-2a" "pr25749-2.c" "pr25749-2a.s" "$NOPIE_CFLAGS" "$NOPIE_LDFLAGS" "" "passall.out"
check_pr25749b "pr25749-2a" "pr25749-2.c" "pr25749-2a.s" "-fPIE" "-pie" "" "passall.out"
check_pr25749b "pr25749-2b" "pr25749-2.c" "pr25749-2b.s" "$NOPIE_CFLAGS" "$NOPIE_LDFLAGS" ""
check_pr25749b "pr25749-2b" "pr25749-2.c" "pr25749-2b.s" "-fPIE" "-pie" ""
