x86: Check static link of dynamic objects
[deliverable/binutils-gdb.git] / ld / testsuite / ld-elf / linux-x86.exp
index f6f5a80853f662f5db51a184e3e28cbd324d90f4..63a321b9668469b9dff7e997641c13b338b6299a 100644 (file)
@@ -1,5 +1,5 @@
 # Expect script for simple native Linux/x86 tests.
-#   Copyright (C) 2018 Free Software Foundation, Inc.
+#   Copyright (C) 2018-2020 Free Software Foundation, Inc.
 #
 # This file is part of the GNU Binutils.
 #
 # MA 02110-1301, USA.
 #
 
+# Linux/x86 tests.
+if { ![istarget "i?86-*-linux*"] \
+       && ![istarget "x86_64-*-linux*"] \
+       && ![istarget "amd64-*-linux*"] } {
+    return
+}
+
+run_ld_link_tests [list \
+    [list \
+       "Build pr24920.so" \
+       "-shared" \
+       "" \
+       "" \
+       {dummy.s} \
+       {} \
+       "pr24920.so" \
+    ] \
+    [list \
+       "Build pr24920" \
+       "-static " \
+       "-Bdynamic tmpdir/pr24920.so" \
+       "" \
+       {start.s} \
+       {{ld pr24920.err}} \
+       "pr24920" \
+    ] \
+]
+
 # Test very simple native Linux/x86 programs with linux-x86.S.
-if { ![isnative] || [which $CC] == 0 \
-     || (![istarget "i?86-*-linux*"] \
-         && ![istarget "x86_64-*-linux*"] \
-         && ![istarget "amd64-*-linux*"]) } {
+if { ![isnative] || ![check_compiler_available] } {
     return
 }
 
@@ -44,3 +69,49 @@ run_ld_link_exec_tests [list \
        "asm" \
     ] \
 ]
+
+run_ld_link_tests [list \
+    [list \
+       "Build x86-feature-1" \
+       "-z separate-code -z shstk" \
+       "" \
+       "-mx86-used-note=yes" \
+       { start.s } \
+       {{readelf -n x86-feature-1a.rd}} \
+       "x86-feature-1" \
+    ] \
+]
+
+proc elfedit_test { options test output } {
+    global ELFEDIT
+    global READELF
+    global srcdir
+    global subdir
+
+    set test_name "elfedit $options"
+    send_log "$ELFEDIT $options tmpdir/$test\n"
+    set got [remote_exec host "$ELFEDIT $options tmpdir/$test" "" "/dev/null"]
+    if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then {
+       send_log "$got\n"
+       unresolved "$test_name"
+    }
+    send_log "$READELF -n $options tmpdir/$test > tmpdir/$output.out\n"
+    set got [remote_exec host "$READELF -n tmpdir/$test" "" "/dev/null" "tmpdir/$output.out"]
+    if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then {
+       send_log "$got\n"
+       unresolved "$test_name"
+}
+    if { [regexp_diff tmpdir/$output.out $srcdir/$subdir/$output.rd] } then {
+       fail "$test_name"
+    } else {
+       pass "$test_name"
+    }
+}
+
+elfedit_test "--enable-x86-feature ibt --disable-x86-feature shstk" \
+               x86-feature-1 x86-feature-1b
+elfedit_test "--enable-x86-feature ibt" x86-feature-1 x86-feature-1b
+elfedit_test "--disable-x86-feature shstk" x86-feature-1 x86-feature-1c
+elfedit_test "--disable-x86-feature ibt" x86-feature-1 x86-feature-1d
+elfedit_test "--enable-x86-feature ibt --enable-x86-feature shstk" \
+               x86-feature-1 x86-feature-1e
This page took 0.038889 seconds and 4 git commands to generate.