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

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

if {[istarget "i?86-*-vxworks"]} {
    set i386tests {
	{"VxWorks shared library test 1" "-shared -Tvxworks1.ld" ""
	 "" {vxworks1-lib.s}
	 {{readelf --relocs vxworks1-lib.rd} {objdump -dr vxworks1-lib.dd}
	  {readelf --symbols vxworks1-lib.nd} {readelf -d vxworks1-lib.td}}
	 "libvxworks1.so"}
	{"VxWorks executable test 1 (dynamic)" \
	 "tmpdir/libvxworks1.so -Tvxworks1.ld -q --force-dynamic" ""
	 "" {vxworks1.s}
	 {{readelf --relocs vxworks1.rd} {objdump -dr vxworks1.dd}}
	 "vxworks1"}
	{"VxWorks executable test 2 (dynamic)" \
	 "-Tvxworks1.ld -q --force-dynamic" ""
	 "" {vxworks2.s}
	 {{readelf --segments vxworks2.sd}}
	 "vxworks2"}
	{"VxWorks executable test 2 (static)"
	 "-Tvxworks1.ld" ""
	 "" {vxworks2.s}
	 {{readelf --segments vxworks2-static.sd}}
	 "vxworks2"}
    }
    run_ld_link_tests $i386tests
    run_dump_test "vxworks1-static"
}

if [istarget "*-*-go32*"] {
    run_ld_link_tests {{"go32 stub" "" "" "" {zero.s} {} "go32stub"}}

    set src "tmpdir/go32stub"
    set dest "tmpdir/go32stub-copy"

    set test "go32 stub patch the source"
    set fi [open $src r+]
    fconfigure $fi -translation binary
    if {[read $fi 2] != "MZ"} {
	fail $test
    } else {
	pass $test
	seek $fi 0x40
	puts -nonewline $fi "objcopy-test-go32stub"
    }
    close $fi

    set test "go32 stub objcopy"
    set status [remote_exec build $OBJCOPY "$OBJCOPYFLAGS $src $dest"]
    set exec_output [lindex $status 1]
    set exec_output [prune_warnings $exec_output]
    if [string match "" $exec_output] then {
	pass $test
    } else {
	send_log "$exec_output\n"
	verbose "$exec_output" 1
	fail $test
    }

    # cmp would compare the whole files and some data after the initial exe
    # stub could differ.
    set test "go32 stub comparison after objcopy"
    set fi [open $src]
    fconfigure $fi -translation binary
    set src_stub [read $fi 2048]
    close $fi
    set fi [open $dest]
    fconfigure $fi -translation binary
    set dest_stub [read $fi 2048]
    close $fi
    if {$src_stub == $dest_stub} {
	pass $test
    } else {
	fail $test
    }
}

if { !([istarget "i?86-*-elf*"]
       || (([istarget "i?86-*-linux*"]
	    || [istarget "i?86-*-gnu*"])
	   && ![istarget "*-*-*aout*"]
	   && ![istarget "*-*-*oldld*"])
       || [istarget "i?86-*-nacl*"]
       || [istarget "x86_64-*-nacl*"]
       || [istarget "x86_64-*-linux*"]
       || [istarget "amd64-*-linux*"]) } {
    return
}

# 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 i386tests {
    {"Helper shared library (basic PLT test)"
      "-shared -melf_i386" "" "--32" {pltlib.s} {} "libpltlib.so"}
    {"basic PLT generation (non-PIC)"
     "-melf_i386 tmpdir/libpltlib.so" "" "--32" {plt.s}
     {{objdump -drj.plt plt.pd}} "plt"}
    {"basic PLT generation (PIC)"
     "-shared -melf_i386 tmpdir/libpltlib.so" "" "--32" {plt-pic.s}
     {{objdump -drj.plt plt-pic.pd}} "libplt-pic.so"}
    {"TLS -fpic -shared transitions"
     "-shared -melf_i386 --no-ld-generated-unwind-info" ""
     "--32" {tlspic1.s tlspic2.s}
     {{readelf -Ssrl tlspic.rd} {objdump -drj.text tlspic.dd}
      {objdump -sj.got tlspic.sd} {objdump -sj.tdata tlspic.td}}
      "libtlspic.so"}
    {"TLS -fpic -shared transitions without PLT"
     "-shared -melf_i386 --no-ld-generated-unwind-info" ""
     "-mrelax-relocations=yes --32"
     {tlspic3.s tlspic2.s}
     {{readelf -Ssrl tlspic2.rd} {objdump -drj.text tlspic2.dd}
      {objdump -sj.got tlspic2.sd} {objdump -sj.tdata tlspic2.td}}
      "libtlspic2.so"}
    {"TLS descriptor -fpic -shared transitions"
     "-shared -melf_i386 --no-ld-generated-unwind-info" ""
     "--32" {tlsdesc.s tlspic2.s}
     {{readelf -Ssrl tlsdesc.rd} {objdump -drj.text tlsdesc.dd}
      {objdump "-s -j.got -j.got.plt" tlsdesc.sd} {objdump -sj.tdata tlsdesc.td}}
      "libtlsdesc.so"}
    {"Helper shared library" "-shared -melf_i386" ""
     "--32" {tlslib.s} {} "libtlslib.so"}
    {"TLS -fpic and -fno-pic exec transitions"
     "-melf_i386 tmpdir/libtlslib.so --no-ld-generated-unwind-info" ""
     "--32" {tlsbinpic.s tlsbin.s}
     {{readelf -Ssrl tlsbin.rd} {objdump -drj.text tlsbin.dd}
      {objdump -sj.got tlsbin.sd} {objdump -sj.tdata tlsbin.td}}
      "tlsbin"}
    {"TLS -fpic and -fno-pic exec transitions without PLT"
     "-melf_i386 tmpdir/libtlslib.so --no-ld-generated-unwind-info" ""
     "-mrelax-relocations=yes --32"
     {tlsbinpic2.s tlsbin.s}
     {{readelf -Ssrl tlsbin2.rd} {objdump -drj.text tlsbin2.dd}
      {objdump -sj.got tlsbin2.sd} {objdump -sj.tdata tlsbin2.td}}
      "tlsbin2"}
    {"TLS descriptor -fpic and -fno-pic exec transitions"
     "-melf_i386 tmpdir/libtlslib.so --no-ld-generated-unwind-info" ""
     "--32" {tlsbindesc.s tlsbin.s}
     {{readelf -Ssrl tlsbindesc.rd} {objdump -drj.text tlsbindesc.dd}
      {objdump -sj.got tlsbindesc.sd} {objdump -sj.tdata tlsbindesc.td}}
      "tlsbindesc"}
    {"TLS -fno-pic -shared"
     "-shared -melf_i386 --no-ld-generated-unwind-info" ""
     "--32" {tlsnopic1.s tlsnopic2.s}
     {{readelf -Ssrl tlsnopic.rd} {objdump -drj.text tlsnopic.dd}
      {objdump -sj.got tlsnopic.sd}} "libtlsnopic.so"}
    {"TLS with global dynamic and descriptors"
     "-shared -melf_i386 --no-ld-generated-unwind-info" ""
     "--32" {tlsgdesc.s}
     {{readelf -Ssrl tlsgdesc.rd} {objdump -drj.text tlsgdesc.dd}}
      "libtlsgdesc.so"}
    {"TLS in debug sections" "-melf_i386" ""
     "--32" {tlsg.s}
     {{objdump -sj.debug_foobar tlsg.sd}} "tlsg"}
    {"TLS @indntpoff with %eax" "-melf_i386" "" "--32" {tlsindntpoff.s}
     {{objdump -drj.text tlsindntpoff.dd}} "tlsindntpoff"}
    {"Reloc section order" "-shared -melf_i386 -z nocombreloc" "" "--32"
     {reloc.s} {{objdump -hw reloc.d}} "reloc.so"}
    {"Basic --emit-relocs support" "-shared -melf_i386 --emit-relocs" "" "--32"
     {emit-relocs.s} {{readelf --relocs emit-relocs.rd}} "emit-relocs.so"}
    {"-z combreloc relocation sections" "-shared -melf_i386 -z combreloc" ""
     "--32" {combreloc.s} {{readelf -r combreloc.d}} "combreloc.so"}
    {"TLS GD->LE transition" "-melf_i386" ""
     "--32" {tlsgd1.s}
     {{objdump -dwr tlsgd1.dd}} "tlsgd1"}
    {"TLS GD->LE transition without PLT" "-melf_i386" ""
     "-mrelax-relocations=yes --32"
     {tlsgd3.s}
     {{objdump -dwr tlsgd3.dd}} "tlsgd3"}
    {"TLS LD->LE transition" "-melf_i386" ""
     "--32" {tlsld1.s}
     {{objdump -dwr tlsld1.dd}} "tlsld1"}
    {"TLS LD->LE transition without PLT" "-melf_i386" ""
     "-mrelax-relocations=yes --32"
     {tlsld2.s}
     {{objdump -dwr tlsld2.dd}} "tlsld2"}
    {"TLS IE->LE transition" "-melf_i386" ""
     "--32" {tlsie1.s}
     {{objdump -dwr tlsie1.dd}} "tlsie1"}
    {"PR ld/17313 (1)" "-melf_i386" ""
     "--32" {zero.s} {} ""}
    {"PR ld/17313 (2)" "-melf_i386 -shared --just-symbols=tmpdir/zero.o" ""
     "--32" {lea1.s} {} "libpr17313.so"}
    {"PR ld/17306 (1)" "-melf_i386" ""
     "--32" {pr17306b.s} {} ""}
    {"PR ld/17306 (2)" "-melf_i386 -shared -Bsymbolic --just-symbols=tmpdir/pr17306b.o" ""
     "--32" {pr17306a.s} {} "libpr17306.so"}
    {"PR ld/17709 (1)" "-melf_i386 -shared" ""
     "--32" {pr17709a.s} {} "libpr17709.so"}
    {"PR ld/17709 (2)" "-melf_i386 tmpdir/libpr17709.so" ""
     "--32" {pr17709b.s} {{readelf -r pr17709.rd}} "pr17709"}
    {"Build pr19827a.o" "" ""
     "--32" { pr19827a.S }}
    {"Build pr19827b.so" "-melf_i386 -shared" ""
     "--32" { pr19827b.S } {} "pr19827b.so"}
    {"Build pr19827" "-melf_i386 -pie tmpdir/pr19827a.o tmpdir/pr19827b.so" ""
     "--32" { dummy.s } {{readelf {-rW} pr19827.rd}} "pr19827"}
    {"Build pr19827.so" "-melf_i386 -shared -Bsymbolic" ""
     "--32" { pr19827a.S }  {{readelf {-rW} pr19827.rd}} "pr19827.so"}
}

# 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*"] {
    # Change all the -melf_i386 to -melf_i386_nacl so linking can succeed.
    regsub -all elf_i386 $i386tests elf_i386_nacl i386tests

    # Same, applied to all the run_dump_test cases.
    set options_regsub(ld) {elf_i386 elf_i386_nacl}

    # 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} $i386tests {\1-nacl.rd} i386tests

    # Likewise for PLTs.
    regsub -all -- {([a-z0-9]+)\.pd} $i386tests {\1-nacl.pd} i386tests
}

proc iamcu_tests {} {
    if {[istarget "*-*-nacl*"]} then {
	return
    }

    global as
    global srcdir
    global subdir

    if ![ld_assemble $as "--32 -march=iamcu $srcdir/$subdir/start.s" tmpdir/startiamcu.o] {
	unresolved "Build Intel MCU 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 "--32 -march=iamcu $srcdir/$subdir/foo.s" tmpdir/fooiamcu.o] {
	unresolved "Build Intel MCU foo.o"
	return
    }

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

    run_dump_test "abs-iamcu"
    run_dump_test "iamcu-1"
    run_dump_test "iamcu-2"
    run_dump_test "iamcu-3"
    run_dump_test "iamcu-4"
}

iamcu_tests

run_ld_link_tests $i386tests

run_dump_test "abs"
run_dump_test "pcrel8"
run_dump_test "pcrel16"
run_dump_test "pcrel16abs"
run_dump_test "alloc"
run_dump_test "warn1"
run_dump_test "tlsgd2"
run_dump_test "tlsgd4"
run_dump_test "tlsie2"
run_dump_test "tlsie3"
run_dump_test "tlsie4"
run_dump_test "tlsie5"
run_dump_test "hidden1"
run_dump_test "hidden2"
run_dump_test "hidden3"
run_dump_test "protected1"
run_dump_test "protected2"
run_dump_test "protected3"
run_dump_test "protected4"
run_dump_test "protected5"
run_dump_test "protected6a"
run_dump_test "protected6b"
run_dump_test "tlspie1"
run_dump_test "tlspie2"
run_dump_test "tlspie3a"
run_dump_test "tlspie3b"
run_dump_test "tlspie3c"
run_dump_test "nogot1"
run_dump_test "nogot2"
run_dump_test "discarded1"
run_dump_test "pr12718"
run_dump_test "pr12921"
run_dump_test "pr12570a"
run_dump_test "pr12570b"
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 "mov1a"
run_dump_test "mov1b"
run_dump_test "mov2a"
run_dump_test "mov2b"
run_dump_test "mov3"
run_dump_test "branch1"
run_dump_test "call1"
run_dump_test "call2"
run_dump_test "call3a"
run_dump_test "call3b"
run_dump_test "call3c"
run_dump_test "call3d"
run_dump_test "call3e"
run_dump_test "call3f"
run_dump_test "call3g"
run_dump_test "call3h"
run_dump_test "jmp1"
run_dump_test "jmp2"
run_dump_test "load1"
run_dump_test "load1-nacl"
run_dump_test "load2"
run_dump_test "load3"
run_dump_test "load4a"
run_dump_test "load4b"
run_dump_test "load5a"
run_dump_test "load5b"
run_dump_test "load6"
run_dump_test "load7"
run_dump_test "pr19175"
run_dump_test "pr19615"
run_dump_test "pr19636-1a"
run_dump_test "pr19636-1b"
run_dump_test "pr19636-1c"
run_dump_test "pr19636-1d"
run_dump_test "pr19636-1d-nacl"
run_dump_test "pr19636-1e"
run_dump_test "pr19636-1f"
run_dump_test "pr19636-1g"
run_dump_test "pr19636-1h"
run_dump_test "pr19636-1i"
run_dump_test "pr19636-2a"
run_dump_test "pr19636-2b"
run_dump_test "pr19636-2c"
run_dump_test "pr19636-2c-nacl"
run_dump_test "pr19636-2d"
run_dump_test "pr19636-2d-nacl"
run_dump_test "pr19636-2e"
run_dump_test "pr19636-2e-nacl"
run_dump_test "pr19636-3a"
run_dump_test "pr19636-3b"
run_dump_test "pr19636-3c"
run_dump_test "pr19636-3d"
run_dump_test "pr19636-3e"
run_dump_test "pr19636-3f"
run_dump_test "pr19636-3g"
run_dump_test "pr19636-4a"
run_dump_test "pr19636-4b"
run_dump_test "pr19636-4c"
run_dump_test "pr19636-4d"
run_dump_test "pr19645"
run_dump_test "pr19609-1a"
run_dump_test "pr19609-1b"
run_dump_test "pr19609-1c"
run_dump_test "pr19609-1d"
run_dump_test "pr19609-1e"
run_dump_test "pr19609-1f"
run_dump_test "pr19609-1g"
run_dump_test "pr19609-1h"
run_dump_test "pr19609-1i"
run_dump_test "pr19609-2a"
run_dump_test "pr19609-2b"
run_dump_test "pr19609-2c"
run_dump_test "undefweaka"
run_dump_test "undefweakb"
run_dump_test "pr19539"
run_dump_test "pr20117"
run_dump_test "pr20244-1a"
run_dump_test "pr20244-1b"
run_dump_test "pr20244-1c"
run_dump_test "pr20244-2a"
run_dump_test "pr20244-2b"
run_dump_test "pr20244-2c"
run_dump_test "pr20244-2d"
run_dump_test "pr20253-3"
run_dump_test "pr20253-4a"
run_dump_test "pr20253-4b"
run_dump_test "pr20253-4c"
run_dump_test "pr20253-5"

if { !([istarget "i?86-*-linux*"]
       || [istarget "i?86-*-gnu*"]
       || [istarget "i?86-*-nacl*"]
       || [istarget "x86_64-*-nacl*"]
       || [istarget "x86_64-*-linux*"]) } {
    return
}

run_dump_test "compressed1"
run_dump_test "pr12627"
run_dump_test "pr13302"
run_dump_test "pr14215"
run_dump_test "pr17057"
run_dump_test "pr17935-1"
run_dump_test "pr17935-2"
run_dump_test "pr18801"
run_dump_test "pr18815"
run_dump_test "pr19939a"
run_dump_test "pr19939b"

proc undefined_weak {cflags ldflags} {
    set testname "Undefined weak symbol"
    if { ![ string match "" $cflags$ldflags] } {
	set testname "$testname ($cflags $ldflags)"
    }

    if { [ regexp "\-fPIE" $cflags]
	 && ![ regexp "\-z nodynamic-undefined-weak" $ldflags] } {
	set weak_symbol "Weak defined"
    } else {
	set weak_symbol "Weak undefined"
    }

    run_cc_link_tests [list \
	[list \
	    "Build libpr19704a.so" \
	    "-shared -Wl,-soname,libpr19704.so" \
	    "" \
	    { dummy.s } \
	    {} \
	    "libpr19704a.so" \
	] \
	[list \
	    "Build libpr19704b.so" \
	    "-shared -Wl,-soname,libpr19704.so" \
	    "-fPIC" \
	    { pr19704b.c } \
	    {} \
	    "libpr19704b.so" \
	] \
    ]

    exec cp tmpdir/libpr19704a.so tmpdir/libpr19704.so

    run_ld_link_exec_tests [] [list \
	[list \
	    "Run pr19704" \
	    "$ldflags tmpdir/libpr19704.so -R tmpdir" \
	    "" \
	    { pr19704a.c } \
	    "pr19704" \
	    "pr19704.out" \
	    "$cflags" \
	] \
    ]

    exec cp tmpdir/libpr19704b.so tmpdir/libpr19704.so

    set exec_output [run_host_cmd tmpdir/pr19704 ""]
    if {![string match $weak_symbol $exec_output]} {
	fail $testname
    } else {
	pass $testname
    }
}

# Add $PLT_CFLAGS if PLT is expected.
global PLT_CFLAGS

# Must be Linux native with the C compiler
if { [isnative]
     && [istarget "i?86-*-linux*"]
     && [which $CC] != 0 } {
    run_cc_link_tests [list \
	[list \
	    "Build plt-lib.so" \
	    "-shared" \
	    "-fPIC" \
	    { plt-lib.c } \
	    {} \
	    "libplt-lib.so" \
	] \
	[list \
	    "Build libplt-main1.a" \
	    "" \
	    "-fPIC -Wa,-mrelax-relocations=yes" \
	    { plt-main1.c } \
	    {{readelf {-Wr} plt-main1.rd}} \
	    "libplt-main1.a" \
	] \
	[list \
	    "Build libplt-main2.a" \
	    "" \
	    "-fPIC -Wa,-mrelax-relocations=yes" \
	    { plt-main2.c } \
	    {{readelf {-Wr} plt-main2.rd}} \
	    "libplt-main2.a" \
	] \
	[list \
	    "Build libplt-main3.a" \
	    "" \
	    "-fPIC -Wa,-mrelax-relocations=yes $PLT_CFLAGS" \
	    { plt-main3.c } \
	    {{readelf {-Wr} plt-main3.rd}} \
	    "libplt-main3.a" \
	] \
	[list \
	    "Build libplt-main4.a" \
	    "" \
	    "-fPIC -Wa,-mrelax-relocations=yes $PLT_CFLAGS" \
	    { plt-main4.c } \
	    {{readelf {-Wr} plt-main4.rd}} \
	    "libplt-main4.a" \
	] \
	[list \
	    "Build plt-main" \
	    "tmpdir/plt-main1.o tmpdir/plt-main2.o tmpdir/plt-main3.o \
	     tmpdir/plt-main4.o tmpdir/libplt-lib.so" \
	    "" \
	    { plt-main5.c } \
	    {{readelf {-Wr} plt-main.rd}} \
	    "plt-main" \
	] \
	[list \
	    "Build plt-main with PIE" \
	    "tmpdir/plt-main1.o tmpdir/plt-main2.o tmpdir/plt-main3.o \
	     tmpdir/plt-main4.o tmpdir/libplt-lib.so -pie" \
	    "-fPIC" \
	    { plt-main5.c } \
	    {{readelf {-Wr} plt-main.rd}} \
	    "plt-main" \
	] \
	[list \
	    "Build copyreloc-lib.so" \
	    "-shared" \
	    "-fPIC" \
	    { copyreloc-lib.c } \
	    {} \
	    "copyreloc-lib.so" \
	] \
	[list \
	    "Build libcopyreloc-main.a" \
	    "" \
	    "" \
	    { copyreloc-main.S } \
	    {} \
	    "libcopyreloc-main.a" \
	] \
	[list \
	    "Build copyreloc-main with PIE and GOTOFF (1)" \
	    "tmpdir/copyreloc-main.o tmpdir/copyreloc-lib.so -pie" \
	    "" \
	    { dummy.s } \
	    {{readelf {-Wr} copyreloc-main1.rd}} \
	    "copyreloc-main" \
	] \
	[list \
	    "Build copyreloc-main with PIE and GOTOFF (2)" \
	    "tmpdir/copyreloc-main.o tmpdir/copyreloc-lib.so -pie" \
	    "" \
	    { dummy.s } \
	    {{readelf {-Wr} copyreloc-main2.rd}} \
	    "copyreloc-main" \
	] \
	[list \
	    "Build pr17689.so" \
	    "-shared" \
	    "-fPIC" \
	    { pr17689a.c } \
	    {} \
	    "pr17689.so" \
	] \
	[list \
	    "Build pr17689.so with -z now" \
	    "-shared -Wl,-z,now" \
	    "-fPIC" \
	    { pr17689a.c } \
	    {{readelf {-Wr} pr17689now.rd}} \
	    "pr17689now.so" \
	] \
	[list \
	    "Build pr17689ver.so" \
	    "-shared -Wl,--version-script,pr17689a.t" \
	    "-fPIC" \
	    { pr17689a.c } \
	    {} \
	    "pr17689ver.so" \
	] \
	[list \
	    "Build pr17689.a" \
	    "" \
	    "" \
	    { pr17689b.S } \
	    {} \
	    "pr17689.a" \
	] \
	[list \
	    "Build pr17689 with PIE and GOTOFF" \
	    "tmpdir/pr17689b.o tmpdir/pr17689.so -pie" \
	    "" \
	    { dummy.c } \
	    {{readelf {-Wr} pr17689.rd}} \
	    "pr17689" \
	] \
	[list \
	    "Build pr17689 with PIE, -z now and GOTOFF" \
	    "tmpdir/pr17689b.o tmpdir/pr17689.so -pie -Wl,-z,now" \
	    "" \
	    { dummy.c } \
	    {{readelf {-Wr} pr17689now.rd}} \
	    "pr17689now" \
	] \
	[list \
	    "Build pr17689ver with PIE and GOTOFF" \
	    "tmpdir/pr17689b.o tmpdir/pr17689ver.so -pie" \
	    "" \
	    { dummy.c } \
	    {{readelf {-Wr} pr17689ver.rd}} \
	    "pr17689ver" \
	] \
	[list \
	    "Build pr17827 with PIE and GOTOFF" \
	    "tmpdir/pr17689b.o tmpdir/pr17689.so -pie" \
	    "" \
	    { dummy.c } \
	    {{readelf {-Wr} pr17827.rd}} \
	    "pr17827" \
	] \
	[list \
	    "Build pr18900.so" \
	    "-shared" \
	    "-fPIC" \
	    { pr18900a.c } \
	    "" \
	    "pr18900.so" \
	] \
	[list \
	    "Build pr18900.o" \
	    "-r -nostdlib" \
	    "" \
	    { pr18900b.c pr18900c.c } \
	    "" \
	    "pr18900.o" \
	] \
	[list \
	    "Build pr18900a" \
	    "tmpdir/pr18900.o tmpdir/pr18900.so" \
	    "" \
	    { dummy.s } \
	    {{readelf {-Wrd} pr18900a.rd}} \
	    "pr18900a" \
	] \
	[list \
	    "Build pr18900b" \
	    "-Wl,--as-needed tmpdir/pr18900.o tmpdir/pr18900.so" \
	    "" \
	    { dummy.s } \
	    {{readelf {-Wrd} pr18900b.rd}} \
	    "pr18900b" \
	] \
	[list \
	    "Build pr19031.so" \
	    "-shared" \
	    "-fPIC" \
	    { pr19031a.c } \
	    "" \
	    "pr19031.so" \
	] \
	[list \
	    "Build got1d.so" \
	    "-shared" \
	    "" \
	    { got1d.S } \
	    "" \
	    "got1d.so" \
	] \
	[list \
	    "Build gotpc1.o" \
	    "-r -nostdlib" \
	    "-Wa,-mrelax-relocations=yes" \
	    { got1a.S got1b.c got1c.c } \
	    "" \
	    "gotpc1.o" \
	] \
	[list \
	    "Build gotpc1" \
	    "-Wl,--as-needed tmpdir/gotpc1.o tmpdir/got1d.so" \
	    "" \
	    { dummy.s } \
	    {{objdump {-dw} got1.dd}} \
	    "got1" \
	] \
	[list \
	    "Build pr19319.so" \
	    "-shared" \
	    "" \
	    { pr19319a.S } \
	    "" \
	    "pr19319.so" \
	] \
	[list \
	    "Build pr19319" \
	    "-pie -nostdlib -nostartfiles tmpdir/pr19319.so" \
	    "-Wa,-mrelax-relocations=yes" \
	    { pr19319b.S } \
	    {{objdump {-dw} pr19319.dd}} \
	    "pr19319" \
	] \
    ]

    run_ld_link_exec_tests [] [list \
	[list \
	    "Run plt-main" \
	    "tmpdir/plt-main1.o tmpdir/plt-main2.o tmpdir/plt-main3.o \
	     tmpdir/plt-main4.o tmpdir/libplt-lib.so" \
	    "" \
	    { plt-main5.c } \
	    "plt-main" \
	    "plt-main.out" \
	] \
	[list \
	    "Run plt-main with PIE" \
	    "tmpdir/plt-main1.o tmpdir/plt-main2.o tmpdir/plt-main3.o \
	     tmpdir/plt-main4.o tmpdir/libplt-lib.so -pie" \
	    "" \
	    { plt-main5.c } \
	    "plt-main-pie" \
	    "plt-main.out" \
	    "-fPIC" \
	] \
	[list \
	    "Run copyreloc-main with PIE and GOTOFF" \
	    "--as-needed tmpdir/copyreloc-main.o tmpdir/copyreloc-lib.so -pie" \
	    "" \
	    { dummy.s } \
	    "copyreloc-main" \
	    "copyreloc-main.out" \
	] \
	[list \
	    "Run pr17689 with PIE and GOTOFF" \
	    "tmpdir/pr17689b.o tmpdir/pr17689.so -pie" \
	    "" \
	    { dummy.c } \
	    "pr17689" \
	    "pr17689.out" \
	] \
	[list \
	    "Run pr17689 with PIE, -z now and GOTOFF" \
	    "tmpdir/pr17689b.o tmpdir/pr17689.so -pie -z now" \
	    "" \
	    { dummy.c } \
	    "pr17689now" \
	    "pr17689.out" \
	] \
	[list \
	    "Run pr17689ver with PIE and GOTOFF" \
	    "tmpdir/pr17689b.o tmpdir/pr17689ver.so -pie" \
	    "" \
	    { dummy.c } \
	    "pr17689ver" \
	    "pr17689.out" \
	] \
	[list \
	    "Run pr18900" \
	    "tmpdir/pr18900.o tmpdir/pr18900.so" \
	    "" \
	    { dummy.s } \
	    "pr18900" \
	    "pr18900.out" \
	] \
	[list \
	    "Run pr19031" \
	    "tmpdir/pr19031.so" \
	    "" \
	    { pr19031b.S pr19031c.c } \
	    "pr19031" \
	    "pr19031.out" \
	] \
	[list \
	    "Run got1" \
	    "tmpdir/got1d.so" \
	    "" \
	    { got1a.S got1b.c got1c.c } \
	    "got1" \
	    "got1.out" \
	] \
    ]

    undefined_weak "" ""
    undefined_weak "-fPIE" ""
    undefined_weak "-fPIE" "-pie"
    undefined_weak "-fPIE" "-z nodynamic-undefined-weak"
    undefined_weak "-fPIE" "-pie -z nodynamic-undefined-weak"
}

# Must be native with the C compiler and working IFUNC support,
if { [isnative]
     && [check_ifunc_available]
     && [istarget "i?86-*-*"]
     && [which $CC] != 0 } {
    run_cc_link_tests [list \
	[list \
	    "Build ifunc-1a.o ifunc-1b.o ifunc-1c.o ifunc-1d.o" \
	    "" \
	    "-fPIC -O2 -g" \
	    { ifunc-1a.c ifunc-1b.S ifunc-1c.S ifunc-1d.S } \
	] \
	[list \
	    "Build pr21168a.o" \
	    "" \
	    "" \
	    { pr21168a.c } \
	] \
	[list \
	    "Build pr21168.so" \
	    "-shared" \
	    "" \
	    { pr21168b.S } \
	    "" \
	    "pr21168.so" \
	] \
    ]

    run_ld_link_exec_tests [] [list \
	[list \
	    "Run ifunc-1a" \
	    "tmpdir/ifunc-1a.o tmpdir/ifunc-1b.o \
	     tmpdir/ifunc-1c.o tmpdir/ifunc-1d.o" \
	    "" \
	    { dummy.c } \
	    "ifunc-1a" \
	    "pass.out" \
	] \
	[list \
	    "Run ifunc-1b" \
	    "--static tmpdir/ifunc-1a.o tmpdir/ifunc-1b.o \
	    tmpdir/ifunc-1c.o tmpdir/ifunc-1d.o" \
	    "" \
	    { dummy.c } \
	    "ifunc-1b" \
	    "pass.out" \
	] \
	[list \
	    "Run pr21168" \
	    "tmpdir/pr21168a.o tmpdir/pr21168.so" \
	    "" \
	    { dummy.c } \
	    "pr21168" \
	    "pass.out" \
	] \
    ]
}

if { !([istarget "i?86-*-linux*"]
       || [istarget "x86_64-*-linux*"]) } {
    return
}

# Linux only tests
run_dump_test "pltgot-1"
run_dump_test "pltgot-2"
