aboutsummaryrefslogtreecommitdiff
path: root/ld/testsuite/ld-ifunc
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2020-07-31 07:40:27 -0700
committerH.J. Lu <hjl.tools@gmail.com>2020-07-31 07:57:04 -0700
commite6a6c7676a7df49cfbbffda26eadd2032dbc2bbe (patch)
tree7399b145a808662b9c4b49959ba9c14a381f0c0c /ld/testsuite/ld-ifunc
parenta896df97b952d4f3feed8068eaa70147d12e0e28 (diff)
downloadgdb-e6a6c7676a7df49cfbbffda26eadd2032dbc2bbe.zip
gdb-e6a6c7676a7df49cfbbffda26eadd2032dbc2bbe.tar.gz
gdb-e6a6c7676a7df49cfbbffda26eadd2032dbc2bbe.tar.bz2
ld: Add -fno-lto to linker tests
LTO can be used to build binutils with $ CC="gcc -flto -ffat-lto-objects -Wl,--as-needed" CXX="g++ -flto -ffat-lto-objects -Wl,--as-needed" .../configure But not all linker tests are compatible with LTO. Pass -fno-lto to CC to disable LTO on linker tests by default. -flto is passed explicitly to CC in linker LTO tests. * testsuite/ld-elf/indirect.exp: Append -fno-lto to CC. * testsuite/ld-elfvers/vers.exp: Likewise. * testsuite/ld-elfweak/elfweak.exp: Likewise. * testsuite/ld-ifunc/ifunc.exp: Likewise. * testsuite/ld-plugin/lto.exp (no_lto): New. Add $no_lto to build pr15146c.so. * testsuite/lib/ld-lib.exp (at_least_gcc_version): Filter out -Wl,xxx options. (check_gcc_plugin_enabled): Likewise. (run_ld_link_exec_tests): Prepend -fno-lto to $cflags. (run_cc_link_tests): Likewise.
Diffstat (limited to 'ld/testsuite/ld-ifunc')
-rw-r--r--ld/testsuite/ld-ifunc/ifunc.exp20
1 files changed, 13 insertions, 7 deletions
diff --git a/ld/testsuite/ld-ifunc/ifunc.exp b/ld/testsuite/ld-ifunc/ifunc.exp
index f67808c..63ab18d 100644
--- a/ld/testsuite/ld-ifunc/ifunc.exp
+++ b/ld/testsuite/ld-ifunc/ifunc.exp
@@ -182,24 +182,30 @@ proc contains_ifunc_reloc { binary_file } {
set fails 0
+# Disable LTO for these tests.
+set cc_cmd "$CC"
+if {[check_lto_available]} {
+ append cc_cmd " -fno-lto"
+}
+
# Create the object files, libraries and executables.
-if ![ld_compile "$CC -c -fPIC" "$srcdir/$subdir/prog.c" "tmpdir/shared_prog.o"] {
+if ![ld_compile "$cc_cmd -c -fPIC" "$srcdir/$subdir/prog.c" "tmpdir/shared_prog.o"] {
fail "Could not create a PIC object file"
set fails [expr $fails + 1]
}
-if ![ld_compile "$CC -c $NOPIE_CFLAGS" "$srcdir/$subdir/prog.c" "tmpdir/static_prog.o"] {
+if ![ld_compile "$cc_cmd -c $NOPIE_CFLAGS" "$srcdir/$subdir/prog.c" "tmpdir/static_prog.o"] {
fail "Could not create a non-PIC object file"
set fails [expr $fails + 1]
}
-if ![ld_compile "$CC -c -fPIC -DWITH_IFUNC" "$srcdir/$subdir/lib.c" "tmpdir/shared_ifunc.o"] {
+if ![ld_compile "$cc_cmd -c -fPIC -DWITH_IFUNC" "$srcdir/$subdir/lib.c" "tmpdir/shared_ifunc.o"] {
fail "Could not create a PIC object file containing an IFUNC symbol"
set fails [expr $fails + 1]
}
-if ![ld_compile "$CC -c $NOPIE_CFLAGS -DWITH_IFUNC" "$srcdir/$subdir/lib.c" "tmpdir/static_ifunc.o"] {
+if ![ld_compile "$cc_cmd -c $NOPIE_CFLAGS -DWITH_IFUNC" "$srcdir/$subdir/lib.c" "tmpdir/static_ifunc.o"] {
fail "Could not create a non-PIC object file containing an IFUNC symbol"
set fails [expr $fails + 1]
}
-if ![ld_compile "$CC -c -DWITHOUT_IFUNC" "$srcdir/$subdir/lib.c" "tmpdir/static_noifunc.o"] {
+if ![ld_compile "$cc_cmd -c -DWITHOUT_IFUNC" "$srcdir/$subdir/lib.c" "tmpdir/static_noifunc.o"] {
fail "Could not create an ordinary non-PIC object file"
set fails [expr $fails + 1]
}
@@ -207,11 +213,11 @@ if ![ld_assemble $as "$srcdir/ld-elf/empty.s" "tmpdir/empty.o"] {
fail "Could not create an empty object file"
set fails [expr $fails + 1]
}
-if ![ld_compile "$CC -c" "$srcdir/$subdir/test-1.c" "tmpdir/test-1.o"] {
+if ![ld_compile "$cc_cmd -c" "$srcdir/$subdir/test-1.c" "tmpdir/test-1.o"] {
fail "Could not create test-1.o"
set fails [expr $fails + 1]
}
-if ![ld_compile "$CC -fPIC -c" "$srcdir/$subdir/test-2.c" "tmpdir/test-2.o"] {
+if ![ld_compile "$cc_cmd -fPIC -c" "$srcdir/$subdir/test-2.c" "tmpdir/test-2.o"] {
fail "Could not create test-2.o"
set fails [expr $fails + 1]
}