# Expect script for various ELF tests.
#   Copyright (C) 2006-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.
#

# Exclude non-ELF targets.

# The following tests require running the executable generated by ld,
# or enough of a build environment to create a fully linked executable.
# This is not commonly available when testing a cross-built linker.
if ![isnative] {
    return
}

if ![is_elf_format] {
    return
}

# Check to see if the C compiler works
if { [which $CC] == 0 } {
    return
}

# Add -ldl to extralibs if needed
if { ![istarget *-*-freebsd*]} {
    set extralibs "-ldl"
}

set build_tests {
  {"Build libfoo.so"
   "-shared" "-fPIC"
   {foo.c} {} "libfoo.so"}
  {"Build versioned libfoo.so"
   "-shared -Wl,--version-script=foo.map" "-fPIC"
   {foo.c} {} "libfoov.so"}
  {"Build libbar.so"
   "-shared" "-fPIC"
   {begin.c end.c} {} "libbar.so"}
  {"Build warn libbar.so"
   "-shared" "-fPIC"
   {beginwarn.c end.c} {{readelf {-S --wide} libbarw.rd}} "libbarw.so"
    "C" "^.*\\\): warning: function foo is deprecated$"}
  {"Build hidden libbar.so"
   "-shared" "-fPIC"
   {begin.c endhidden.c} {} "libbarh.so"}
  {"Build protected libbar.so"
   "-shared" "-fPIC"
   {begin.c endprotected.c} {} "libbarp.so"}
  {"Build libbar.so with libfoo.so"
   "-shared tmpdir/begin.o tmpdir/libfoo.so" "-fPIC"
   {end.c} {} "libbarfoo.so"}
  {"Build libar.so with versioned libfoo.so"
   "-shared tmpdir/begin.o tmpdir/libfoov.so" "-fPIC"
   {end.c} {} "libbarfoov.so"}
  {"Build hidden libbar.so with libfoo.so"
   "-shared tmpdir/begin.o tmpdir/libfoo.so" "-fPIC"
   {endhidden.c} {} "libbarhfoo.so"}
  {"Build hidden libar.so with versioned libfoo.so"
   "-shared tmpdir/begin.o tmpdir/libfoov.so" "-fPIC"
   {endhidden.c} {} "libbarhfoov.so"}
  {"Build protected libbar.so with libfoo.so"
   "-shared tmpdir/begin.o tmpdir/libfoo.so" "-fPIC"
   {endprotected.c} {} "libbarpfoo.so"}
  {"Build protected libbar.so with versioned libfoo.so"
   "-shared tmpdir/begin.o tmpdir/libfoov.so" "-fPIC"
   {endprotected.c} {} "libbarpfoov.so"}
  {"Build libdl1.so"
   "-shared" "-fPIC"
   {dl1.c} {} "libdl1.so"}
  {"Build libdl2a.so with --dynamic-list=dl2.list"
   "-shared -Wl,--dynamic-list=dl2.list" "-fPIC"
   {dl2.c dl2xxx.c} {} "libdl2a.so"}
  {"Build libdl2a.so with --dynamic-list=dl2a.list"
   "-shared -Wl,--dynamic-list=dl2a.list" "-fPIC"
   {dl2.c dl2xxx.c} {} "libdl2a.so"}
  {"Build libdl2a.so with --dynamic-list-data"
   "-shared -Wl,--dynamic-list-data" "-fPIC"
   {dl2.c dl2xxx.c} {} "libdl2a.so"}
  {"Build libdl2b.so with --dynamic-list=dl2.list and dl2xxx.list"
   "-shared -Wl,--dynamic-list=dl2.list,--dynamic-list=dl2xxx.list" "-fPIC"
   {dl2.c dl2xxx.c} {} "libdl2b.so"}
  {"Build libdl2c.so with --dynamic-list-data and dl2xxx.list"
   "-shared -Wl,--dynamic-list-data,--dynamic-list=dl2xxx.list" "-fPIC"
   {dl2.c dl2xxx.c} {} "libdl2c.so"}
  {"Build libdl4a.so with --dynamic-list=dl4.list"
   "-shared -Wl,--dynamic-list=dl4.list" "-fPIC"
   {dl4.c dl4xxx.c} {} "libdl4a.so"}
  {"Build libdl4b.so with --dynamic-list-data"
   "-shared -Wl,--dynamic-list-data" "-fPIC"
   {dl4.c dl4xxx.c} {} "libdl4b.so"}
  {"Build libdl4c.so with --dynamic-list=dl4.list and dl4xxx.list"
   "-shared -Wl,--dynamic-list=dl4.list,--dynamic-list=dl4xxx.list" "-fPIC"
   {dl4.c dl4xxx.c} {} "libdl4c.so"}
  {"Build libdl4d.so with --dynamic-list-data and dl4xxx.list"
   "-shared -Wl,--dynamic-list-data,--dynamic-list=dl4xxx.list" "-fPIC"
   {dl4.c dl4xxx.c} {} "libdl4d.so"}
  {"Build libdl4e.so with -Bsymbolic-functions --dynamic-list-cpp-new"
   "-shared -Wl,-Bsymbolic-functions,--dynamic-list-cpp-new" "-fPIC"
   {dl4.c dl4xxx.c} {} "libdl4e.so"}
  {"Build libdl4f.so with --dynamic-list-cpp-new -Bsymbolic-functions"
   "-shared -Wl,--dynamic-list-cpp-new,-Bsymbolic-functions" "-fPIC"
   {dl4.c dl4xxx.c} {} "libdl4f.so"}
  {"Build libdl6a.so"
   "-shared" "-fPIC"
   {dl6.c} {} "libdl6a.so"}
  {"Build libdl6b.so with -Bsymbolic --dynamic-list-data"
   "-shared -Wl,-Bsymbolic,--dynamic-list-data" "-fPIC"
   {dl6.c} {} "libdl6b.so"}
  {"Build libdl6c.so with -Bsymbolic"
   "-shared -Wl,-Bsymbolic" "-fPIC"
   {dl6.c} {} "libdl6c.so"}
  {"Build libdl6d.so with --dynamic-list-data -Bsymbolic"
   "-shared -Wl,--dynamic-list-data,-Bsymbolic" "-fPIC"
   {dl6.c} {} "libdl6d.so"}
  {"Build libdata1.so"
   "-shared" "-fPIC"
   {data1.c} {} "libdata1.so"}
  {"Build libdata2.so"
   "-shared" "-fPIC"
   {data2.c} {} "libdata2.so"}
  {"Build libcomm1.o"
   "-r -nostdlib" ""
   {comm1.c} {} "libcomm1.o"}
  {"Build libfunc1.so"
   "-shared" "-fPIC"
   {func1.c} {} "libfunc1.so"}
  {"Build libpr9676-1.a"
   "" "-fPIC"
   {pr9676-1.c} {} "libpr9676-1.a"}
  {"Build libpr9676-2.a"
   "" "-fPIC"
   {pr9676-2.c} {} "libpr9676-2.a"}
  {"Build libpr9676-3.so"
   "-shared" "-fPIC"
   {pr9676-3.c} {} "libpr9676-3.so"}
  {"Build libpr9676-4.so"
   "-shared" "-fPIC"
   {pr9676-4.c} {} "libpr9676-4.so"}
  {"Build libpr9676-4a.so"
   "-shared tmpdir/pr9676-4.o -Ltmpdir -lpr9676-3 -Wl,--start-group -lpr9676-1 -lpr9676-2 -Wl,--end-group"
   "-fPIC"
   {dummy.c} {{readelf {-s} pr9676.rd}} "libpr9676-4a.so"}
  {"Build libpr9679.so"
   "-shared" "-fPIC -O0"
   {pr9679-1.c pr9679-2.c} {{readelf {-s} pr9679.rd}} "libpr9679.so"}
  {"Build libpr11138-1.so"
   "-shared -Wl,--version-script=pr11138-1.map" "-fPIC"
   {pr11138-1.c} {} "libpr11138-1.so"}
  {"Build libpr11138-2.o"
   "-r -nostdlib" ""
   {pr11138-2.c} {} "libpr11138-2.o"}
  {"Build pr13250-1.so"
   "-shared" "-fPIC"
   {pr13250-1.c} {} "libpr13250-1.so"}
  {"Build pr13250-2.so with libpr13250-1.so"
   "-shared -Wl,--no-as-needed tmpdir/libpr13250-1.so" "-fPIC"
   {pr13250-2.c} {} "libpr13250-2.so"}
  {"Build libpr13250-3.o"
   "-r -nostdlib" ""
   {pr13250-3.c} {} "libpr13250-3.o"}
  {"Build libpr14323-2.so"
   "-shared" "-fPIC"
   {pr14323-2.c} {} "libpr14323-2.so"}
  {"Build pr14862-1.o"
   "-r -nostdlib" ""
   {pr14862-1.c} {} "libpr14862-1.o"}
  {"Build libpr14862.so"
   "-shared -Wl,--version-script=pr11138-1.map" "-fPIC"
   {pr14862-2.c} {} "libpr14862.so"}
  {"Build libneeded1b.so"
   "-shared" "-fPIC"
   {needed1b.c} {} "libneeded1b.so"}
  {"Build libneeded1a.so"
   "-shared -Wl,--add-needed,--no-as-needed -Ltmpdir -lneeded1b" "-fPIC"
   {needed1a.c} {} "libneeded1a.so"}
  {"Build libneeded1c.o"
   "-r -nostdlib" ""
   {needed1c.c} {} "libneeded1c.o"}
  {"Build libneeded1pic.o"
   "-r -nostdlib" "-fPIC"
   {needed1c.c} {} "libneeded1pic.o"}
  {"Build needed1a.so with --add-needed"
   "-shared tmpdir/libneeded1pic.o -Wl,--add-needed,-rpath=tmpdir,-z,defs -Ltmpdir -lneeded1a" ""
   {dummy.c} {} "needed1a.so"}
  {"Build needed1b.so with --copy-dt-needed-entries"
   "-shared tmpdir/libneeded1pic.o -Wl,--copy-dt-needed-entries,-rpath=tmpdir,-z,defs -Ltmpdir -lneeded1a" ""
   {dummy.c} {} "needed1b.so"}
  {"Build needed1a.so with --no-add-needed"
   "-shared tmpdir/libneeded1pic.o -Wl,--no-add-needed -Ltmpdir -lneeded1a" ""
   {dummy.c} {} "needed1c.so"}
  {"Build needed1b.so with --no-copy-dt-needed-entries"
   "-shared tmpdir/libneeded1pic.o -Wl,--no-copy-dt-needed-entries -Ltmpdir -lneeded1a" ""
   {dummy.c} {} "needed1d.so"}
  {"Build librel.so"
   "-shared" "-fPIC"
   {rel.c} {} "librel.so"}
  {"Build libneeded2a.so"
   "-shared" "-fPIC"
   {needed2a.c} {} "libneeded2a.so"}
  {"Build libneeded2b.so"
   "-shared -Wl,--version-script,needed2.ver" "-fPIC"
   {needed2b.c} {} "libneeded2b.so"}
  {"Build libneeded2c.o"
   "-r -nostdlib" ""
   {needed2c.c} {} "libneeded2c.o"}
  {"Build needed2"
   "tmpdir/libneeded2c.o -Wl,--as-needed tmpdir/libneeded2a.so tmpdir/libneeded2b.so" ""
   {dummy.c} {} "needed2"}
  {"Build libneeded3a.so"
   "-shared -Wl,--no-add-needed" "-fPIC"
   {needed1a.c} {} "libneeded3a.so"}
  {"Build libneeded3b.so"
   "-shared -Wl,--no-as-needed,--add-needed -Ltmpdir -lneeded1b" "-fPIC"
   {dummy.c} {} "libneeded3b.so"}
  {"Build needed3.o"
   "-r -nostdlib" ""
   {needed3.c} {} "libneeded3.so"}
  {"Build needed3"
   "tmpdir/needed3.o -Wl,--as-needed -Ltmpdir -lneeded3a -lneeded3b -lneeded1b" ""
   {dummy.c} {} "needed3"}
  {"Build libpr2404a.so"
   "-shared" "-fPIC"
   {pr2404a.c} {} "libpr2404a.so"}
  {"Build libpr2404b.a"
   "" ""
   {pr2404b.c} {} "libpr2404b.a"}
  {"Build rdynamic-1"
   "-rdynamic -Wl,--gc-sections" "-ffunction-sections"
   {rdynamic-1.c} {{readelf {-s} rdynamic-1.rd}} "rdynamic-1"}
  {"Build dynamic-1"
   "-Wl,--dynamic-list,dynamic-1.syms -Wl,--gc-sections" "-ffunction-sections"
   {dynamic-1.c} {{readelf {-s} dynamic-1.rd}} "dynamic-1"}
  {"Build libpr16496a.so"
   "-shared -Wl,--version-script=pr16496a.map" "-fPIC"
   {pr16496a.c} {} "libpr16496a.so"}
  {"Build libpr16496b.a"
   "" "-fPIC"
   {pr16496b.c} {} "libpr16496b.a"}
  {"Build libpr16496b.so"
   "-shared tmpdir/pr16496b.o tmpdir/libpr16496a.so" ""
   {dummy.c} {{objdump {-R} pr16496b.od}} "libpr16496b.so"}
  {"Build libpr16452a.so"
   "-shared -Wl,-soname,libpr16452a.so,--version-script=pr16452.map" "-fPIC"
   {pr16452a.c} {} "libpr16452a.so"}
  {"Build libpr16452b.so"
   "-shared -Wl,-soname,libpr16452b.so,--no-as-needed tmpdir/libpr16452a.so" "-fPIC"
   {dummy.c} {} "libpr16452b.so"}
  {"Build pr16452"
   "tmpdir/libpr16452b.so -Wl,-rpath=tmpdir" ""
   {pr16452b.c} {{objdump {-p} pr16452.od}} "pr16452"}
  {"Build pr16457"
   "tmpdir/libpr16452b.so -Wl,-rpath=tmpdir" ""
   {pr16452b.c} {{objdump {-p} pr16457.od}} "pr16457"}
  {"Build libpr18458a.so"
   "-shared -Wl,-z,now" "-fPIC"
   {pr18458a.c} {} "libpr18458a.so"}
  {"Build libpr18458b.so"
   "-shared -Wl,-z,now tmpdir/libpr18458a.so" "-fPIC"
   {pr18458b.c} {} "libpr18458b.so"}
  {"Build pr19073a.o"
   "-r -nostdlib" ""
   {pr19073.s} {} "pr19073a.o"}
  {"Build libpr19073.so"
   "-shared -Wl,--version-script=pr19073.map tmpdir/pr19073a.o" "-fPIC"
   {dummy.c} {{readelf {--dyn-syms --wide} pr19073.rd}} "libpr19073.so"}
}

run_cc_link_tests $build_tests

set run_tests {
    {"Run normal with libfoo.so"
     "tmpdir/begin.o tmpdir/libfoo.so tmpdir/end.o" ""
     {main.c} "normal" "normal.out"}
    {"Run protected with libfoo.so"
     "tmpdir/begin.o tmpdir/libfoo.so tmpdir/endprotected.o" ""
     {main.c} "protected" "normal.out"}
    {"Run hidden with libfoo.so"
     "tmpdir/begin.o tmpdir/libfoo.so tmpdir/endhidden.o" ""
     {main.c} "hidden" "hidden.out"}
    {"Run normal with versioned libfoo.so"
     "tmpdir/begin.o tmpdir/libfoov.so tmpdir/end.o" ""
     {main.c} "normalv" "normal.out"}
    {"Run warn with versioned libfoo.so"
     "tmpdir/beginwarn.o tmpdir/libfoov.so" ""
     {main.c} "warn" "warn.out"
     "" "" "^.*\\\): warning: function foo is deprecated$"}
    {"Run protected with versioned libfoo.so"
     "tmpdir/begin.o tmpdir/libfoov.so tmpdir/endprotected.o" ""
     {main.c} "protected" "normal.out"}
    {"Run hidden with versioned libfoo.so"
     "tmpdir/begin.o tmpdir/libfoov.so tmpdir/endhidden.o" ""
     {main.c} "hiddenv" "hidden.out"}
    {"Run normal libbar.so with libfoo.so"
     "tmpdir/libbarfoo.so tmpdir/libfoo.so" ""
     {main.c} "normal" "normal.out"}
    {"Run protected libbar.so with libfoo.so"
     "tmpdir/libbarpfoo.so tmpdir/libfoo.so" ""
     {main.c} "protected" "normal.out"}
    {"Run hidden libbar.so with libfoo.so"
     "tmpdir/libbarhfoo.so tmpdir/libfoo.so" ""
     {main.c} "hidden" "hidden.out"}
    {"Run normal libbar.so with versioned libfoo.so"
     "tmpdir/libbarfoov.so tmpdir/libfoov.so" ""
     {main.c} "normal" "normal.out"}
    {"Run protected libbar.so with versioned libfoo.so"
     "tmpdir/libbarpfoov.so tmpdir/libfoov.so" ""
     {main.c} "protected" "normal.out"}
    {"Run hidden libbar.so with versioned libfoo.so"
     "tmpdir/libbarhfoov.so tmpdir/libfoov.so" ""
     {main.c} "hidden" "hidden.out"}
    {"Run dl1a with --dynamic-list=dl1.list and dlopen on libdl1.so"
     "--dynamic-list=dl1.list $extralibs" ""
     {dl1main.c} "dl1a" "dl1.out"}
    {"Run dl1b with --dynamic-list-data and dlopen on libdl1.so"
     "--dynamic-list-data $extralibs" ""
     {dl1main.c} "dl1b" "dl1.out"}
    {"Run with libdl2a.so"
     "tmpdir/libdl2a.so" ""
     {dl2main.c} "dl2a" "dl2a.out"}
    {"Run with libdl2b.so"
     "tmpdir/libdl2b.so" ""
     {dl2main.c} "dl2b" "dl2b.out"}
    {"Run with libdl2c.so"
     "tmpdir/libdl2c.so" ""
     {dl2main.c} "dl2c" "dl2b.out"}
    {"Run with libdl4a.so"
     "tmpdir/libdl4a.so" ""
     {dl4main.c} "dl4a" "dl4a.out"}
    {"Run with libdl4b.so"
     "tmpdir/libdl4b.so" ""
     {dl4main.c} "dl4b" "dl4a.out"}
    {"Run with libdl4c.so"
     "tmpdir/libdl4c.so" ""
     {dl4main.c} "dl4c" "dl4b.out"}
    {"Run with libdl4d.so"
     "tmpdir/libdl4d.so" ""
     {dl4main.c} "dl4d" "dl4b.out"}
    {"Run with libdl4e.so"
     "tmpdir/libdl4e.so" ""
     {dl4main.c} "dl4e" "dl4a.out"}
    {"Run with libdl4f.so"
     "tmpdir/libdl4f.so" ""
     {dl4main.c} "dl4f" "dl4a.out"}
    {"Run dl6a1 with --dynamic-list-data and dlopen on libdl6a.so"
     "--dynamic-list-data $extralibs" ""
     {dl6amain.c} "dl6a1" "dl6a.out"}
    {"Run dl6a2 with -Bsymbolic-functions and dlopen on libdl6a.so"
     "-Bsymbolic-functions $extralibs" ""
     {dl6amain.c} "dl6a2" "dl6b.out"}
    {"Run dl6a3 with -Bsymbolic and dlopen on libdl6a.so"
     "-Bsymbolic $extralibs" ""
     {dl6amain.c} "dl6a3" "dl6b.out"}
    {"Run dl6a4 with -Bsymbolic --dynamic-list-data and dlopen on libdl6a.so"
     "-Bsymbolic --dynamic-list-data $extralibs" ""
     {dl6amain.c} "dl6a4" "dl6a.out"}
    {"Run dl6a5 with -Bsymbolic-functions --dynamic-list-cpp-new and dlopen on libdl6a.so"
     "-Bsymbolic-functions --dynamic-list-cpp-new $extralibs" ""
     {dl6amain.c} "dl6a5" "dl6b.out"}
    {"Run dl6a6 with --dynamic-list-cpp-new -Bsymbolic-functions and dlopen on libdl6a.so"
     "--dynamic-list-cpp-new -Bsymbolic-functions $extralibs" ""
     {dl6amain.c} "dl6a6" "dl6b.out"}
    {"Run dl6a7 with --dynamic-list-data -Bsymbolic and dlopen on libdl6a.so"
     "--dynamic-list-data -Bsymbolic $extralibs" ""
     {dl6amain.c} "dl6a7" "dl6a.out"}
    {"Run dl6b1 with --dynamic-list-data and dlopen on libdl6b.so"
     "--dynamic-list-data $extralibs" ""
     {dl6bmain.c} "dl6b1" "dl6a.out"}
    {"Run dl6b2 with dlopen on libdl6b.so"
     "$extralibs" ""
     {dl6bmain.c} "dl6b2" "dl6b.out"}
    {"Run dl6c1 with --dynamic-list-data and dlopen on libdl6c.so"
     "--dynamic-list-data $extralibs" ""
     {dl6cmain.c} "dl6c1" "dl6b.out"}
    {"Run dl6d1 with --dynamic-list-data and dlopen on libdl6d.so"
     "--dynamic-list-data $extralibs" ""
     {dl6dmain.c} "dl6d1" "dl6b.out"}
    {"Run with libdata1.so"
     "tmpdir/libdata1.so" ""
     {dynbss1.c} "dynbss1" "pass.out"}
    {"Run with libdata2.so"
     "tmpdir/libdata2.so" ""
     {weakdef1.c} "weakdef1" "pass.out"}
    {"Run with libfunc1.so comm1.o"
     "tmpdir/libfunc1.so tmpdir/comm1.o" ""
     {dummy.c} "comm1" "pass.out"}
    {"Run with comm1.o libfunc1.so"
     "tmpdir/comm1.o tmpdir/libfunc1.so" ""
     {dummy.c} "comm1" "pass.out"}
    {"Run with pr11138-2.c libpr11138-1.so"
     "--version-script=pr11138-2.map tmpdir/pr11138-2.o tmpdir/libpr11138-1.so" ""
     {dummy.c} "pr11138a" "pr11138.out"}
    {"Run with libpr11138-1.so pr11138-2.c"
     "--version-script=pr11138-2.map tmpdir/libpr11138-1.so tmpdir/pr11138-2.o" ""
     {dummy.c} "pr11138b" "pr11138.out"}
    {"Run with pr13250-3.c, libpr13250-1.so and libpr13250-2.so"
     "--as-needed tmpdir/pr13250-3.o tmpdir/libpr13250-1.so tmpdir/libpr13250-2.so" ""
     {dummy.c} "pr13250" "pass.out"}
    {"Run with pr14323-1.c pr14323-2.so"
     "tmpdir/libpr14323-2.so" ""
     {pr14323-1.c} "pr14323" "pass.out"}
    {"Run with pr14862-1.c libpr14862.so"
     "--as-needed tmpdir/libpr14862-1.o tmpdir/libpr14862.so" ""
     {dummy.c} "pr14862" "pr14862.out"}
    {"Link with --add-needed"
     "tmpdir/libneeded1c.o --add-needed -rpath=tmpdir -Ltmpdir -lneeded1a" ""
     {dummy.c} "needed1a" "needed1.out"}
    {"Link with --copy-dt-needed-entries"
     "tmpdir/libneeded1c.o --copy-dt-needed-entries -rpath=tmpdir -Ltmpdir -lneeded1a" ""
     {dummy.c} "needed1b" "needed1.out"}
    {"Run relmain"
     "--no-as-needed -rpath=tmpdir -Ltmpdir -lrel" ""
     {relmain.c} "relmain" "relmain.out"}
    {"Run pr2404"
     "tmpdir/pr2404b.o tmpdir/libpr2404a.so" ""
     {dummy.c} "pr2404" "pr2404.out"}
    {"Run pr18458"
     "tmpdir/libpr18458a.so tmpdir/libpr18458b.so -z now" ""
     {pr18458c.c} "pr18458" "pass.out"}
}

# NetBSD ELF systems do not currently support the .*_array sections.
run_ld_link_exec_tests [list "*-*-netbsdelf*"] $run_tests

# Check --no-add-needed and --no-copy-dt-needed-entries
set testname "--no-add-needed"
set exec_output [run_host_cmd "$CC" "tmpdir/libneeded1c.o -Wl,--no-add-needed,-rpath-link=tmpdir -Ltmpdir -lneeded1a"]
if { [ regexp "tmpdir/libneeded1b.so: .*: DSO missing" $exec_output ] } {
    pass $testname
} {
    fail $testname
}
set testname "--no-copy-dt-needed-entries"
set exec_output [run_host_cmd "$CC" "tmpdir/libneeded1c.o -Wl,--no-copy-dt-needed-entries,-rpath-link=tmpdir -Ltmpdir -lneeded1a"]
if { [ regexp "tmpdir/libneeded1b.so: .*: DSO missing" $exec_output ] } {
    pass $testname
} {
    fail $testname
}
set testname "--no-add-needed -shared"
set exec_output [run_host_cmd "$CC" "-shared tmpdir/libneeded1pic.o -Wl,--no-add-needed,-z,defs -Ltmpdir -lneeded1a"]
if { [ regexp "undefined reference to `bar'" $exec_output ] } {
    pass $testname
} {
    fail $testname
}
set testname "--no-copy-dt-needed-entries -shared"
set exec_output [run_host_cmd "$CC" "-shared tmpdir/libneeded1pic.o -Wl,--no-copy-dt-needed-entries,-z,defs -Ltmpdir -lneeded1a"]
if { [ regexp "undefined reference to `bar'" $exec_output ] } {
    pass $testname
} {
    fail $testname
}

# Check to see if the C++ compiler works
if { [which $CXX] == 0 } {
    return
}

set build_cxx_tests {
  {"Build libdl3a.so with --dynamic-list=dl3.list"
   "-shared -Wl,--dynamic-list=dl3.list" "-fPIC"
   {dl3.cc} {} "libdl3a.so" "c++"}
  {"Build libdl3b.so with -Bsymbolic"
   "-shared -Wl,-Bsymbolic" "-fPIC"
   {dl3.cc} {} "libdl3b.so" "c++"}
  {"Build libdl3a.so with --dynamic-list-cpp-typeinfo"
   "-shared -Wl,--dynamic-list-cpp-typeinfo" "-fPIC"
   {dl3.cc} {} "libdl3c.so" "c++"}
  {"Build libdnew1a.so with --Bsymbolic-functions --dynamic-list-cpp-new"
   "-shared -Wl,-Bsymbolic-functions,--dynamic-list-cpp-new" "-fPIC"
   {del.cc new.cc} {} "libnew1a.so" "c++"}
  {"Build libdnew1b.so with --dynamic-list-data --dynamic-list-cpp-new"
   "-shared -Wl,--dynamic-list-data,--dynamic-list-cpp-new" "-fPIC"
   {del.cc new.cc} {} "libnew1b.so" "c++"}
}

# "-shared -Bsymbolic" only works with gcc 4.5.0 and newer.
#    {"Run with libdl3b.so"
#     "tmpdir/libdl3b.so" ""
#     {dl3main.cc} "dl3b" "dl3b.out" "" "c++"}
set run_cxx_tests {
    {"Run with libdl3a.so"
     "-Wl,--no-as-needed tmpdir/libdl3a.so" ""
     {dl3main.cc} "dl3a" "dl3a.out" "" "c++"}
    {"Run with libdl3c.so"
     "-Wl,--no-as-needed tmpdir/libdl3c.so" ""
     {dl3main.cc} "dl3c" "dl3a.out" "" "c++"}
    {"Run with libnew1a.so"
     "tmpdir/libnew1a.so" ""
     {dl5.cc} "dl5a" "dl5.out" "" "c++"}
    {"Run with libnew1b.so"
     "tmpdir/libnew1b.so" ""
     {dl5.cc} "dl5b" "dl5.out" "" "c++"}
}

run_cc_link_tests $build_cxx_tests
run_ld_link_exec_tests [] $run_cxx_tests

if { [istarget *-*-linux*]
     || [istarget *-*-nacl*]
     || [istarget *-*-gnu*] } {
    run_cc_link_tests [list \
	[list \
	    "Build libpr2404b.a with PIE" \
	    "" \
	    "-fPIE" \
	    { pr2404b.c } \
	    {} \
	    "libpr2404b.a" \
	] \
	[list \
	    "Build pr19579a.o" \
	    "" "-fPIE" \
	    {pr19579a.c} \
	    {} \
	    "libpr19579a.a" \
	] \
	[list \
	    "Build libpr19579.so" \
	    "-shared" \
	    "-fPIC" \
	    {pr19579b.c} \
	    {} \
	    "libpr19579.so" \
	] \
    ]
    run_ld_link_exec_tests [] [list \
	[list \
	    "Run pr2404 with PIE" \
	    "-pie tmpdir/pr2404b.o tmpdir/libpr2404a.so" \
	    "" \
	    { dummy.c } \
	    "pr2404pie" \
	    "pr2404.out" \
	    "-fPIE" \
	] \
	[list \
	    "Run pr18718" \
	    "" \
	    "" \
	    { pr18718.c check-ptr-eq.c } \
	    "pr18718" \
	    "pass.out" \
	    "-O2 -I../bfd" \
	] \
	[list \
	    "Run pr18718 with PIE (1)" \
	    "-pie" \
	    "" \
	    { pr18718.c check-ptr-eq.c } \
	    "pr18718pie1" \
	    "pass.out" \
	    "-O2 -fPIE -I../bfd" \
	] \
	[list \
	    "Run pr18718 with PIE (2)" \
	    "" \
	    "" \
	    { pr18718.c check-ptr-eq.c } \
	    "pr18718pie2" \
	    "pass.out" \
	    "-O2 -fPIE -I../bfd" \
	] \
	[list \
	    "Run pr18718 with PIC (1)" \
	    "" \
	    "" \
	    { pr18718.c check-ptr-eq.c } \
	    "pr18718pic1" \
	    "pass.out" \
	    "-O2 -fPIC -I../bfd" \
	] \
	[list \
	    "Run pr18718 with PIC (2)" \
	    "-pie" \
	    "" \
	    { pr18718.c check-ptr-eq.c } \
	    "pr18718pic2" \
	    "pass.out" \
	    "-O2 -fPIC -I../bfd" \
	] \
	[list \
	    "Run pr19579" \
	    "-pie -z text tmpdir/pr19579a.o tmpdir/libpr19579.so" \
	    "" \
	    {dummy.c} \
	    "pr19579" \
	    "pass.out" \
	    "-fPIE" \
	] \
    ]
}

proc mix_pic_and_non_pic {xfails cflags ldflags exe} {
    run_cc_link_tests [list \
	[list \
	    "Build libpr19719a.so" \
	    "-shared -Wl,-soname,libpr19719.so" \
	    "-fPIC" \
	    { pr19719d.c } \
	    {} \
	    "libpr19719a.so" \
	] \
	[list \
	    "Build libpr19719b.so" \
	    "-shared -Wl,-soname,libpr19719.so" \
	    "-fPIC" \
	    { dummy.c } \
	    {} \
	    "libpr19719b.so" \
	] \
	[list \
	    "Build libpr19719b.o" \
	    "-r -nostdlib" \
	    "-fPIC" \
	    { pr19719b.c } \
	    {} \
	    "libpr19719b.o" \
	] \
    ]

    send_log "cp tmpdir/libpr19719b.so tmpdir/libpr19719.so\n"
    exec cp tmpdir/libpr19719b.so tmpdir/libpr19719.so

    run_ld_link_exec_tests [] [list \
	[list \
	    "Run $exe fun defined" \
	    "$ldflags tmpdir/libpr19719b.o tmpdir/libpr19719.so -rpath tmpdir" \
	    "" \
	    { pr19719a.c pr19719c.c } \
	    $exe \
	    "pass.out" \
	    "$cflags" \
	] \
    ]

    send_log "cp tmpdir/libpr19719a.so tmpdir/libpr19719.so\n"
    exec cp tmpdir/libpr19719a.so tmpdir/libpr19719.so

    foreach targ $xfails {
	setup_xfail $targ
    }

    set exec_output [run_host_cmd "tmpdir/$exe" ""]
    if {![string match "PASS" $exec_output]} {
	fail "Run $exe fun undefined"
    } else {
	pass "Run $exe fun undefined"
    }
}

mix_pic_and_non_pic [list "arm*-*-*" "aarch64*-*-*"] "" "" "pr19719"
mix_pic_and_non_pic [] "-fPIE" "-pie" "pr19719pie"
