| # Expect script for ld --undefined and --require-defined testing. | |
| # Copyright (C) 2015-2021 Free Software Foundation, Inc. | |
| # | |
| # This file is part of the GNU Binutils. | |
| # | |
| # This program is free software; you can redistribute it and/or modify | |
| # it under the terms of the GNU General Public License as published by | |
| # the Free Software Foundation; either version 3 of the License, or | |
| # (at your option) any later version. | |
| # | |
| # This program is distributed in the hope that it will be useful, | |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| # GNU General Public License for more details. | |
| # | |
| # You should have received a copy of the GNU General Public License | |
| # along with this program; if not, write to the Free Software | |
| # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, | |
| # MA 02110-1301, USA. | |
| # | |
| # Some of these tests use --gc-sections. For now we don't attempt any | |
| # if --gc-sections is unavailable, as most major targets do support | |
| # this option. | |
| if ![check_gc_sections_available] { | |
| unsupported "require-defined testing" | |
| return | |
| } | |
| # The following targets all fail these tests for reasons that appear | |
| # to be unrelated to the test themselves (for example some of these | |
| # targets require more complex linker scripts). Given the small | |
| # number of targets, I'm just skipping the tests in these cases.] | |
| if { [istarget "powerpcle-*-*"] \ | |
| || [istarget "cris-axis-elf"] \ | |
| || [istarget "ns32k-*-*"] \ | |
| || [istarget "*-*-coff"] \ | |
| || [istarget "*-*-*aout*"] \ | |
| || [is_xcoff_format] } { | |
| unsupported "require-defined testing" | |
| return | |
| } | |
| set build_tests { | |
| {"Build libfoo.a" | |
| "" "" "" | |
| {entry.s} {} "libfoo.a"} | |
| } | |
| run_ld_link_tests $build_tests | |
| set test_list [lsort [glob -nocomplain $srcdir/$subdir/require-defined*.d]] | |
| foreach t $test_list { | |
| # We need to strip the ".d", but can leave the dirname. | |
| verbose [file rootname $t] | |
| run_dump_test [file rootname $t] | |
| } |