Run PR ld/19784 tests only if ifunc attribute works
authorH.J. Lu <hjl.tools@gmail.com>
Mon, 29 Aug 2016 16:09:14 +0000 (09:09 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Mon, 29 Aug 2016 16:09:14 +0000 (09:09 -0700)
* testsuite/ld-x86-64/x86-64.exp: Run PR ld/19784 tests only
if ifunc attribute works.

ld/ChangeLog
ld/testsuite/ld-x86-64/x86-64.exp

index 69e018c..654605b 100644 (file)
@@ -1,5 +1,10 @@
 2016-08-29  H.J. Lu  <hongjiu.lu@intel.com>
 
+       * testsuite/ld-x86-64/x86-64.exp: Run PR ld/19784 tests only
+       if ifunc attribute works.
+
+2016-08-29  H.J. Lu  <hongjiu.lu@intel.com>
+
        PR ld/14961
        PR ld/20515
        * testsuite/ld-i386/i386.exp: Run pr20515.
index 01b6a49..c24eeea 100644 (file)
@@ -822,28 +822,6 @@ if { [isnative] && [which $CC] != 0 } {
            {{objdump {-dw} pr19319.dd}} \
            "pr19319" \
        ] \
-       [list \
-           "Build libpr19784a.so" \
-           "-shared -Wl,-Bsymbolic-functions" \
-           "-fPIC -O2 -g" \
-           { pr19784b.c pr19784c.c } \
-           {} \
-           "libpr19784a.so" \
-       ] \
-       [list \
-           "Build libpr19784b.so" \
-           "-shared -Wl,-Bsymbolic-functions" \
-           "-fPIC -O2 -g" \
-           { pr19784c.c pr19784b.c } \
-           {} \
-           "libpr19784b.so" \
-       ] \
-       [list \
-          "Build pr19784a.o" \
-          "" \
-          "" \
-          { pr19784a.c } \
-       ] \
     ]
 
     run_ld_link_exec_tests [list \
@@ -914,24 +892,55 @@ if { [isnative] && [which $CC] != 0 } {
            "gotpcrel1" \
            "gotpcrel1.out" \
        ] \
-       [list \
-           "Run pr19784a" \
-           "tmpdir/pr19784a.o tmpdir/libpr19784a.so" \
-           "" \
-           { dummy.s } \
-           "pr19784a" \
-           "pass.out" \
-       ] \
-       [list \
-           "Run pr19784b" \
-           "--as-needed tmpdir/pr19784a.o tmpdir/libpr19784b.so" \
-           "" \
-           { dummy.s } \
-           "pr19784b" \
-           "pass.out" \
-       ] \
     ]
 
+    # Run-time tests which require working ifunc attribute support.
+    if { [check_ifunc_attribute_available] } {
+       run_cc_link_tests [list \
+           [list \
+               "Build libpr19784a.so" \
+               "-shared -Wl,-Bsymbolic-functions" \
+               "-fPIC -O2 -g" \
+               { pr19784b.c pr19784c.c } \
+               {} \
+               "libpr19784a.so" \
+           ] \
+           [list \
+               "Build libpr19784b.so" \
+               "-shared -Wl,-Bsymbolic-functions" \
+               "-fPIC -O2 -g" \
+               { pr19784c.c pr19784b.c } \
+               {} \
+               "libpr19784b.so" \
+           ] \
+           [list \
+               "Build pr19784a.o" \
+               "" \
+               "" \
+               { pr19784a.c } \
+           ] \
+       ]
+
+       run_ld_link_exec_tests [list \
+           [list \
+               "Run pr19784a" \
+               "tmpdir/pr19784a.o tmpdir/libpr19784a.so" \
+               "" \
+               { dummy.s } \
+               "pr19784a" \
+               "pass.out" \
+           ] \
+           [list \
+               "Run pr19784b" \
+               "--as-needed tmpdir/pr19784a.o tmpdir/libpr19784b.so" \
+               "" \
+               { dummy.s } \
+               "pr19784b" \
+               "pass.out" \
+           ] \
+       ]
+    }
+
     if { [istarget "x86_64-*-linux*"] \
         && ![istarget "x86_64-*-linux*-gnux32"]} {