X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=ld%2Ftestsuite%2Fld-gc%2Fgc.exp;h=eaaa8e158ab29c78698a5084dc67c378762c5008;hb=219d1afa89d0d53ca93a684cac341f16470f3ca0;hp=68a0ba11642d451392d4aeb94e990c83b337242e;hpb=ac69cbc672a0702152d34bac2da436dcee2e5346;p=deliverable%2Fbinutils-gdb.git diff --git a/ld/testsuite/ld-gc/gc.exp b/ld/testsuite/ld-gc/gc.exp index 68a0ba1164..eaaa8e158a 100644 --- a/ld/testsuite/ld-gc/gc.exp +++ b/ld/testsuite/ld-gc/gc.exp @@ -1,6 +1,5 @@ # Expect script for ld-gc tests -# Copyright 2008 -# Free Software Foundation, Inc. +# Copyright (C) 2008-2018 Free Software Foundation, Inc. # # This file is part of the GNU Binutils. # @@ -27,7 +26,22 @@ if ![check_gc_sections_available] { set cflags "-ffunction-sections -fdata-sections" set objfile "tmpdir/gc.o" -ld_compile "$CC -c $CFLAGS $cflags" $srcdir/$subdir/gc.c $objfile +# Add $NOPIE_CFLAGS and $NOPIE_LDFLAGS if non-PIE is required. +global NOPIE_CFLAGS NOPIE_LDFLAGS + +if [istarget powerpc64*-*-*] { + # otherwise with -mcmodel=medium gcc we get XPASSes. + set cflags "$cflags -mminimal-toc" +} + +if { [istarget m681*-*-*] || [istarget m68hc1*-*-*] } { + # Otherwise tests FAIL due to _.frame + set cflags "$cflags -fomit-frame-pointer -mshort" +} + +if { [is_remote host] || [which $CC] != 0 } { + ld_compile "$CC -c $CFLAGS $cflags" $srcdir/$subdir/gc.c $objfile +} proc test_gc { testname filename linker ldflags} { global nm @@ -36,10 +50,26 @@ proc test_gc { testname filename linker ldflags} { global nm_output global objfile + if ![file readable $objfile ] { + untested $testname + return + } + set outfile "tmpdir/$filename" + set options "-L$srcdir/$subdir" + append options " " $ldflags " " [ld_link_defsyms] " " $objfile + + # SH64 targets needs an extra ld option for this test. + if [istarget sh64*-*-*] { + if [istarget sh64*l*-*-*] { + set options "-mshlelf32 $options" + } else { + set options "-mshelf32 $options" + } + } - if ![ld_simple_link $linker $outfile "-L$srcdir/$subdir $ldflags $objfile"] { - fail $testname + if ![ld_link $linker $outfile $options] { + fail $testname return } if ![ld_nm $nm "" $outfile] { @@ -53,6 +83,9 @@ proc test_gc { testname filename linker ldflags} { fail $testname return } + #ppc64_elf_gc_mark_hook needs to be taught how to look through + #the .toc section to properly mark variable sections for gc. + setup_xfail "powerpc64*-*-*" if {[info exists nm_output(unused_func)] \ || [info exists nm_output(unused_var)]} { send_log "unused section still here\n" @@ -69,3 +102,72 @@ test_gc "Check --gc-section/-r/-e" "gcrel" $ld "-r --gc-sections -e main" test_gc "Check --gc-section/-r/-u" "gcrel" $ld "-r --gc-sections -u used_func" run_dump_test "noent" +run_dump_test "abi-note" +run_dump_test "start" +run_dump_test "pr19167" +if { [is_elf_format] } then { + run_dump_test "all-debug-sections" + run_dump_test "pr20882" +} + +if { [is_elf_format] && [check_shared_lib_support] } then { + set gasopt "" + if { [istarget tic6x-*] } then { + set gasopt "-mpic -mpid=near" + } + if {![ld_assemble_flags $as $gasopt $srcdir/$subdir/libpersonality.s tmpdir/libpersonality.o] + || ![ld_link $ld tmpdir/libpersonality.so "-shared tmpdir/libpersonality.o"] } then { + fail libpersonality + } else { + run_dump_test "personality" + } + run_dump_test "pr18223" + if {![ld_assemble_flags $as $gasopt $srcdir/$subdir/pr20022a.s tmpdir/pr20022a.o] + || ![ld_link $ld tmpdir/pr20022.so "-shared --gc-sections tmpdir/pr20022a.o"] } then { + fail pr20022 + } else { + run_dump_test "pr20022" + } +} + +if { [is_remote host] || [which $CC] != 0 } { + if { [istarget "*-*-linux*"] + || [istarget "*-*-nacl*"] + || [istarget "*-*-gnu*"] } { + ld_compile "$CC -fPIC $CFLAGS $cflags" $srcdir/$subdir/pr11218-1.c tmpdir/pr11218-1.o + ld_link $ld tmpdir/pr11218-1.so "-shared tmpdir/pr11218-1.o" + ld_compile "$CC -c $CFLAGS $cflags" $srcdir/$subdir/pr11218-2.c tmpdir/pr11218-2.o + run_dump_test "pr11218" + } +} + +if { [is_remote host] || [which $CC] != 0 } { + ld_compile "$CC $CFLAGS $cflags" $srcdir/$subdir/pr13683.c tmpdir/pr13683.o + run_dump_test "pr13683" +} + +if { [is_remote host] || [which $CC] != 0 } { + ld_compile "$CC $CFLAGS $cflags $NOPIE_CFLAGS" $srcdir/$subdir/pr14265.c tmpdir/pr14265.o + run_dump_test "pr14265" +} + +if { [is_remote host] || [which $CC] != 0 } { + ld_compile "$CC $CFLAGS $cflags -O0" $srcdir/$subdir/pr19161-1.c tmpdir/pr19161-1.o + ld_compile "$CC $CFLAGS $cflags -O0" $srcdir/$subdir/pr19161-2.c tmpdir/pr19161-2.o + run_dump_test "pr19161" +} + +if { [is_elf_format] && [check_shared_lib_support] \ + && ([is_remote host] || [which $CC] != 0) } { + run_cc_link_tests [list \ + [list \ + "Build libpr20306.so" \ + "-shared" \ + "-fPIC" \ + {pr20306.c} \ + {} \ + "libpr20306.so" \ + ] \ + ] + run_dump_test "pr20306" +}