* hppa.h (pa_opcodes): Use "cX" completer instead of "cx" in fstqx
[external/binutils.git] / ld / testsuite / ld-elf / shared.exp
index 4f45bdd..c9f2056 100644 (file)
@@ -1,5 +1,6 @@
 # Expect script for various ELF tests.
-#   Copyright 2006, 2007 Free Software Foundation, Inc.
+#   Copyright 2006, 2007, 2008, 2009, 2010, 2011, 2012
+#   Free Software Foundation, Inc.
 #
 # This file is part of the GNU Binutils.
 #
 
 # Exclude non-ELF targets.
 
-if ![is_elf_format] {
+# 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
 }
 
-# The following tests require running the executable generated by ld.
-if ![isnative] {
+if ![is_elf_format] {
     return
 }
 
-# Check if compiler works
+# Check to see if the C compiler works
 if { [which $CC] == 0 } {
     return
 }
@@ -47,7 +50,8 @@ set build_tests {
    {begin.c end.c} {} "libbar.so"}
   {"Build warn libbar.so"
    "-shared" "-fPIC"
-   {beginwarn.c end.c} {} "libbarw.so"}
+   {beginwarn.c end.c} {} "libbarw.so"
+    "C" "^.*\\\): warning: function foo is deprecated$"}
   {"Build hidden libbar.so"
    "-shared" "-fPIC"
    {begin.c endhidden.c} {} "libbarh.so"}
@@ -123,6 +127,9 @@ set build_tests {
   {"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"}
@@ -148,8 +155,28 @@ set build_tests {
   {"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" ""
@@ -260,19 +287,33 @@ set run_tests {
     {"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_cc_link_tests $build_tests
 # NetBSD ELF systems do not currently support the .*_array sections.
 run_ld_link_exec_tests [list "*-*-netbsdelf*"] $run_tests
 
-# Check if compiler works
+# Check to see if the C++ compiler works
 if { [which $CXX] == 0 } {
     return
 }
@@ -295,15 +336,16 @@ set build_cxx_tests {
    {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"
-     "tmpdir/libdl3a.so" ""
+     "-Wl,--no-as-needed tmpdir/libdl3a.so" ""
      {dl3main.cc} "dl3a" "dl3a.out" "" "c++"}
-    {"Run with libdl3b.so"
-     "tmpdir/libdl3b.so" ""
-     {dl3main.cc} "dl3b" "dl3b.out" "" "c++"}
     {"Run with libdl3c.so"
-     "tmpdir/libdl3c.so" ""
+     "-Wl,--no-as-needed tmpdir/libdl3c.so" ""
      {dl3main.cc} "dl3c" "dl3a.out" "" "c++"}
     {"Run with libnew1a.so"
      "tmpdir/libnew1a.so" ""