# Expect script for ld-x86_64 tests
#   Copyright (C) 2002-2014 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.
#

# Test x86_64 linking; all types of relocs.  This tests the assembler and
# tools like objdump as well as the linker.

if { !([istarget "x86_64-*-elf*"]
       || [istarget "x86_64-*-nacl*"]
       || [istarget "x86_64-*-linux*"]) } {
    return
}

if [istarget "*-*-nacl*"] {
    set emul "elf_x86_64_nacl"
} else {
    set emul "elf_x86_64"
}

# List contains test-items with 3 items followed by 2 lists:
# 0:name 1:ld early options 2:ld late options 3:assembler options
# 4:filenames of assembler files 5: action and options. 6: name of output file

# Actions:
# objdump: Apply objdump options on result.  Compare with regex (last arg).
# nm: Apply nm options on result.  Compare with regex (last arg).
# readelf: Apply readelf options on result.  Compare with regex (last arg).

set x86_64tests {
    {"Helper shared library (basic PLT test)"
      "-shared -melf_x86_64" "" "--64" {pltlib.s} {} "libpltlib.so"}
    {"basic PLT generation"
     "-melf_x86_64 tmpdir/libpltlib.so" "" "--64" {plt.s}
     {{objdump -drj.plt plt.pd}} "plt"}
    {"TLS -fpic -shared transitions"
     "-shared -melf_x86_64 --no-ld-generated-unwind-info" ""
     "--64" {tlspic1.s tlspic2.s}
     {{readelf -WSsrl tlspic.rd} {objdump -drj.text tlspic.dd}
      {objdump -sj.got tlspic.sd} {objdump -sj.tdata tlspic.td}}
      "libtlspic.so"}
    {"TLS descriptor -fpic -shared transitions"
     "-shared -melf_x86_64 --no-ld-generated-unwind-info" ""
     "--64" {tlsdesc.s tlspic2.s}
     {{readelf -WSsrld tlsdesc.rd} {objdump -drj.text tlsdesc.dd}
      {objdump "-s -j.got -j.got.plt" tlsdesc.sd} {objdump -sj.tdata tlsdesc.td}
      {objdump -drj.plt tlsdesc.pd}} "libtlsdesc.so"}
    {"Helper shared library" "-shared -melf_x86_64" ""
     "--64" {tlslib.s} {} "libtlslib.so"}
    {"TLS -fpic and -fno-pic exec transitions"
     "-melf_x86_64 tmpdir/libtlslib.so --no-ld-generated-unwind-info" ""
     "--64" {tlsbinpic.s tlsbin.s}
     {{readelf -WSsrl tlsbin.rd} {objdump -drj.text tlsbin.dd}
      {objdump -sj.got tlsbin.sd} {objdump -sj.tdata tlsbin.td}}
      "tlsbin"}
    {"TLS descriptor -fpic and -fno-pic exec transitions"
     "-melf_x86_64 tmpdir/libtlslib.so --no-ld-generated-unwind-info" ""
     "--64" {tlsbindesc.s tlsbin.s}
     {{readelf -WSsrl tlsbindesc.rd} {objdump -drj.text tlsbindesc.dd}
      {objdump -sj.got tlsbindesc.sd} {objdump -sj.tdata tlsbindesc.td}}
      "tlsbindesc"}
    {"TLS with global dynamic and descriptors"
     "-shared -melf_x86_64 --no-ld-generated-unwind-info" ""
     "--64" {tlsgdesc.s}
     {{readelf -WSsrl tlsgdesc.rd} {objdump -drj.text tlsgdesc.dd}}
      "libtlsgdesc.so"}
    {"TLS in debug sections" "-melf_x86_64" ""
     "--64" {tlsg.s}
     {{objdump -sj.debug_foobar tlsg.sd}} "tlsg"}
    {"TLS GD->LE transition" "-melf_x86_64" ""
     "--64" {tlsgd1.s}
     {{objdump -dwr tlsgd1.dd}} "tlsgd1"}
    {"TLS LD->LE transition" "-melf_x86_64" ""
     "--64" {tlsld1.s}
     {{objdump -dwr tlsld1.dd}} "tlsld1"}
    {"TLS IE->LE transition" "-melf_x86_64" ""
     "--64" {tlsie1.s}
     {{objdump -dwr tlsie1.dd}} "tlsie1"}
    {"Helper 64bit object 1" "-r -melf_x86_64" ""
     "--64" {mixed1a.s} {} "libmixe1a.o"}
    {"Helper 32bit object 1" "-r -melf_i386" ""
     "--32" {mixed1b.s} {} "libmixe1b.o"}
    {"Helper 64bit object 2" "-r -melf_x86_64" ""
     "--64" {mixed2a.s} {} "libmixe2a.o"}
    {"Helper 32bit object 2" "-r -melf_i386" ""
     "--32" {mixed2b.s} {} "libmixe2b.o"}
    {"Split by file with 'l' flag on section."
     "-split-by-file -r -melf_x86_64" ""
     "--64" {split-by-file1.s split-by-file2.s}
     {{readelf -SW split-by-file.rd}} "split-by-file.o"}
    {"TLS X32 IE->LE transition" "-melf32_x86_64" ""
     "--x32" {tlsie4.s}
     {{objdump -dwr tlsie4.dd}} "tlsie4"}
    {"TLS X32 GD->LE transition" "-melf32_x86_64" ""
     "--x32" {tlsgd4.s}
     {{objdump -dwr tlsgd4.dd}} "tlsgd4"}
    {"Helper TLS GD->IE transition DSO" "-shared -melf_x86_64" ""
     "--64" {tlsgd5b.s} {} "libtlsgd5.so"}
    {"TLS GD->IE transition" "-melf_x86_64 tmpdir/libtlsgd5.so" ""
     "--64" {tlsgd5a.s}
     {{objdump -dwr tlsgd5.dd}} "tlsgd5"}
    {"Helper TLS X32 GD->IE transition DSO" "-shared -melf32_x86_64" ""
     "--x32" {tlsgd6b.s} {} "libtlsgd6.so"}
    {"TLS X32 GD->IE transition" "-melf32_x86_64 tmpdir/libtlsgd6.so" ""
     "--x32" {tlsgd6a.s}
     {{objdump -dwr tlsgd6.dd}} "tlsgd6"}
    {"TLS X32 LD->LE transition" "-melf32_x86_64" ""
     "--x32" {tlsld2.s}
     {{objdump -dwr tlsld2.dd}} "tlsld2"}
    {"TLS -mcmodel=large GD->LE transition" "-melf_x86_64" ""
     "--64" {tlsgd7.s}
     {{objdump -dwr tlsgd7.dd}} "tlsgd7"}
    {"TLS -mcmodel=large LD->LE transition" "-melf_x86_64" ""
     "--64" {tlsld3.s}
     {{objdump -dwr tlsld3.dd}} "tlsld3"}
    {"TLS -mcmodel=large GD->IE transition" "-melf_x86_64 tmpdir/libtlsgd5.so" ""
     "--64" {tlsgd8.s}
     {{objdump -dwrj.text tlsgd8.dd}} "tlsgd8"}

     {"build 32-bit object with 33 locals" "-melf_x86_64 -e 0" "" "--32" {32bit.s} {{ ld incompatible.l }} "dummy" }
     {"build 64-bit object" "-melf_x86_64 -e 0 --defsym foo=1" "" "--64" {64bit.s} {} "dummy" }
     {"link mixed objects"  "-melf_x86_64 -e 0 tmpdir/32bit.o tmpdir/64bit.o" "" "" {} { { ld incompatible.l } } "mixed"}
    {"PR ld/17313 (1)" "-melf_x86_64" ""
     "--64" {dummy.s} {} ""}
    {"PR ld/17313 (2)" "-melf_x86_64 -shared --just-symbols=tmpdir/dummy.o" ""
     "--64" {lea1.s} {} "libpr17313.so"}
    {"PR ld/17306 (1)" "-melf_x86_64" ""
     "--64" {pr17306b.s} {} ""}
    {"PR ld/17306 (2)" "-melf_x86_64 -shared -Bsymbolic --just-symbols=tmpdir/pr17306b.o" ""
     "--64" {pr17306a.s} {} "libpr17306.so"}
    {"PR ld/17709 (1)" "-melf_x86_64 -shared" ""
     "--64" {pr17709a.s} {} "libpr17709.so"}
    {"PR ld/17709 (2)" "-melf_x86_64 tmpdir/libpr17709.so" ""
     "--64" {pr17709b.s} {{readelf -rW pr17709.rd}} "pr17709"}
}

# So as to avoid rewriting every last test case here in a nacl variant,
# we use black magic to massage the generic cases into nacl-variant cases.
if [istarget "*-*-nacl*"] {
    set emul elf_x86_64_nacl

    set lhs {elf(32)?_(i386|x86_64)[[:>:]]}
    set rhs {&_nacl}

    # Change all the -melf_x86_64 to -melf_x86_64_nacl so linking can succeed.
    regsub -all -- $lhs $x86_64tests $rhs x86_64tests

    # Same, applied to all the run_dump_test cases.
    set options_regsub(ld) [list $lhs $rhs]

    # The section/segment layout differs too much for the vanilla
    # readelf output files to match.  So massage the cases so that
    # they refer to a foo-nacl.rd file instead of a foo.rd file.
    regsub -all -- {([a-z0-9]+)\.rd} $x86_64tests {\1-nacl.rd} x86_64tests

    # Likewise for PLTs.
    regsub -all -- {([a-z0-9]+)\.pd} $x86_64tests {\1-nacl.pd} x86_64tests
} else {
    set emul elf_x86_64
}

run_ld_link_tests $x86_64tests

global link_output
global ld

set test_name "Mixed x86_64 and i386 input test 1"
set test mixed1
if { ![ld_simple_link $ld tmpdir/$test "-m$emul tmpdir/${test}a.o tmpdir/${test}b.o"] } {
    if [string match "*i386* architecture of input file `tmpdir/${test}b.o' is incompatible with i386:x86-64* output*" $link_output] {
	pass "$test_name"
    } {
	fail "$test_name"
    }
}

set test_name "Mixed x86_64 and i386 input test 2"
set test mixed2
if { ![ld_simple_link $ld tmpdir/$test "-m$emul tmpdir/${test}a.o tmpdir/${test}b.o"] } {
    if [string match "*i386* architecture of input file `tmpdir/${test}b.o' is incompatible with i386:x86-64* output*" $link_output] {
	pass "$test_name"
    } {
	fail "$test_name"
    }
}

run_dump_test "abs"
run_dump_test "abs-l1om"
run_dump_test "pcrel8"
run_dump_test "pcrel16"
run_dump_test "tlsgd2"
run_dump_test "tlsgd3"
run_dump_test "tlsie2"
run_dump_test "tlsie3"
run_dump_test "hidden1"
run_dump_test "hidden2"
run_dump_test "hidden3"
run_dump_test "protected1"
run_dump_test "protected2"
run_dump_test "protected2-l1om"
run_dump_test "protected3"
run_dump_test "protected3-l1om"
run_dump_test "protected4"
run_dump_test "protected5"
run_dump_test "tlsle1"
run_dump_test "tlspie1"
run_dump_test "unique1"
run_dump_test "nogot1"
run_dump_test "nogot2"
run_dump_test "discarded1"
run_dump_test "pr12718"
run_dump_test "pr12921"
run_dump_test "pr13947"
run_dump_test "pr12570a"
run_dump_test "pr12570b"
run_dump_test "pr14215"
run_dump_test "pr14207"

if { ![istarget "x86_64-*-linux*"] && ![istarget "x86_64-*-nacl*"]} {
    return
}

if ![ld_assemble $as "--x32 $srcdir/$subdir/start.s" tmpdir/startx32.o] {
    unresolved "Build ILP32 start.o"
    return
}

if ![ld_assemble $as "--32 $srcdir/$subdir/start.s" tmpdir/start32.o] {
    unresolved "Build ia32 start.o"
    return
}

if ![ld_assemble $as "--64 $srcdir/$subdir/start.s" tmpdir/start64.o] {
    unresolved "Build LP64 start.o"
    return
}

if ![ld_assemble $as "--x32 $srcdir/$subdir/foo.s" tmpdir/foox32.o] {
    unresolved "Build ILP32 foo.o"
    return
}

if ![ld_assemble $as "--32 $srcdir/$subdir/foo.s" tmpdir/foo32.o] {
    unresolved "Build ia32 foo.o"
    return
}

if ![ld_assemble $as "--64 $srcdir/$subdir/foo.s" tmpdir/foo64.o] {
    unresolved "Build LP64 foo.o"
    return
}

run_dump_test "compressed1"
run_dump_test "ilp32-1"
run_dump_test "ilp32-2"
run_dump_test "ilp32-3"
run_dump_test "ilp32-4"
run_dump_test "ilp32-4-nacl"
run_dump_test "ilp32-5"
run_dump_test "ilp32-6"
run_dump_test "ilp32-7"
run_dump_test "ilp32-8"
run_dump_test "ilp32-9"
run_dump_test "ilp32-10"
run_dump_test "ilp32-11"
run_dump_test "ia32-1"
run_dump_test "ia32-2"
run_dump_test "ia32-3"
run_dump_test "lp64-1"
run_dump_test "lp64-2"
run_dump_test "lp64-3"
run_dump_test "pr13082-1a"
run_dump_test "pr13082-1b"
run_dump_test "pr13082-2a"
run_dump_test "pr13082-2b"
run_dump_test "pr13082-3a"
run_dump_test "pr13082-3b"
run_dump_test "pr13082-4a"
run_dump_test "pr13082-4b"
run_dump_test "pr13082-5a"
run_dump_test "pr13082-5b"
run_dump_test "pr13082-6a"
run_dump_test "pr13082-6b"
run_dump_test "lea1a"
run_dump_test "lea1b"
run_dump_test "lea1c"
run_dump_test "lea1d"
run_dump_test "lea1e"
run_dump_test "lea1f"
run_dump_test "lea1g"
run_dump_test "lea1h"
run_dump_test "lea1i"
run_dump_test "lea1j"
run_dump_test "lea1k"
run_dump_test "lea1l"
run_dump_test "mov1a"
run_dump_test "mov1b"
run_dump_test "mov1c"
run_dump_test "mov1d"
run_dump_test "pr18176"

# Must be native with the C compiler
if { [isnative] && [which $CC] != 0 } {
    run_cc_link_tests {
	{"Helper X32 DSO from x86-64 object" "" "-m64 -fPIC -g"
	 {simple.c} {} "libsimple.a"}
    }

    set convertx32 "$objcopy -O elf32-x86-64 tmpdir/simple.o tmpdir/simple-x32.o"
    send_log "$convertx32\n"
    set got [remote_exec host "$convertx32"]
    if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then {
	send_log "$got\n"
	fail "Convert x86-64 object to x32"
	return
    }

    run_ld_link_tests {
	{"X32 DSO from x86-64 object"
	 "-shared -melf32_x86_64 tmpdir/simple-x32.o" "" "--x32"
	{dummy.s} {{readelf {-s --wide} x86-64-x32.rd}} "x86-64-x32"}
    }

    run_cc_link_tests [list \
	[list \
	    "Build copyreloc-lib.so" \
	    "-shared" \
	    "-fPIC" \
	    { copyreloc-lib.c } \
	    {} \
	    "copyreloc-lib.so" \
	] \
	[list \
	    "Build copyreloc-main with PIE without -fPIE (1)" \
	    "tmpdir/copyreloc-lib.so -pie" \
	    "" \
	    { copyreloc-main.S } \
	    {{readelf {-Wr} copyreloc-main1.rd}} \
	    "copyreloc-main" \
	] \
	[list \
	    "Build copyreloc-main with PIE without -fPIE (2)" \
	    "tmpdir/copyreloc-lib.so -pie" \
	    "" \
	    { copyreloc-main.S } \
	    {{readelf {-Wr} copyreloc-main2.rd}} \
	    "copyreloc-main" \
	] \
	[list \
	    "Build pr17689.so" \
	    "-shared" \
	    "-fPIC" \
	    { pr17689a.c } \
	    {} \
	    "pr17689.so" \
	] \
	[list \
	    "Build pr17689 with PIE without -fPIE" \
	    "tmpdir/pr17689.so -pie" \
	    "" \
	    { pr17689b.S } \
	    {{readelf {-Wr} pr17689.rd}} \
	    "pr17689" \
	] \
	[list \
	    "Build pr17827 with PIE without -fPIE" \
	    "tmpdir/pr17689.so -pie" \
	    "" \
	    { pr17689b.S } \
	    {{readelf {-Wr} pr17827.rd}} \
	    "pr17827" \
	] \
    ]

    run_ld_link_exec_tests [] [list \
	[list \
	    "Run copyreloc-main with PIE without -fPIE" \
	    "tmpdir/copyreloc-lib.so -pie" \
	    "" \
	    { copyreloc-main.S } \
	    "copyreloc-main" \
	    "copyreloc-main.out" \
	] \
	[list \
	    "Run pr17689 with PIE without -fPIE" \
	    "tmpdir/pr17689.so -pie" \
	    "" \
	    { pr17689b.S } \
	    "pr17689" \
	    "pr17689.out" \
	] \
    ]
}
