# Expect script for various ELF tests.
#   Copyright 2006, 2007, 2008, 2009, 2010, 2011, 2012
#   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
}

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} {} "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"}
}

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 -ldl" ""
     {dl1main.c} "dl1a" "dl1.out"}
    {"Run dl1b with --dynamic-list-data and dlopen on libdl1.so"
     "--dynamic-list-data -ldl" ""
     {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 -ldl" ""
     {dl6amain.c} "dl6a1" "dl6a.out"}
    {"Run dl6a2 with -Bsymbolic-functions and dlopen on libdl6a.so"
     "-Bsymbolic-functions -ldl" ""
     {dl6amain.c} "dl6a2" "dl6b.out"}
    {"Run dl6a3 with -Bsymbolic and dlopen on libdl6a.so"
     "-Bsymbolic -ldl" ""
     {dl6amain.c} "dl6a3" "dl6b.out"}
    {"Run dl6a4 with -Bsymbolic --dynamic-list-data and dlopen on libdl6a.so"
     "-Bsymbolic --dynamic-list-data -ldl" ""
     {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 -ldl" ""
     {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 -ldl" ""
     {dl6amain.c} "dl6a6" "dl6b.out"}
    {"Run dl6a7 with --dynamic-list-data -Bsymbolic and dlopen on libdl6a.so"
     "--dynamic-list-data -Bsymbolic -ldl" ""
     {dl6amain.c} "dl6a7" "dl6a.out"}
    {"Run dl6b1 with --dynamic-list-data and dlopen on libdl6b.so"
     "--dynamic-list-data -ldl" ""
     {dl6bmain.c} "dl6b1" "dl6a.out"}
    {"Run dl6b2 with dlopen on libdl6b.so"
     "-ldl" ""
     {dl6bmain.c} "dl6b2" "dl6b.out"}
    {"Run dl6c1 with --dynamic-list-data and dlopen on libdl6c.so"
     "--dynamic-list-data -ldl" ""
     {dl6cmain.c} "dl6c1" "dl6b.out"}
    {"Run dl6d1 with --dynamic-list-data and dlopen on libdl6d.so"
     "--dynamic-list-data -ldl" ""
     {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"}
}

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

# 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++"}
}

set run_cxx_tests {
    {"Run with libdl3a.so"
     "-Wl,--no-as-needed tmpdir/libdl3a.so" ""
     {dl3main.cc} "dl3a" "dl3a.out" "" "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++"}
    {"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
