# Expect script for simple PE tests that require the just-built binutils only. # Copyright (C) 2004-2019 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. # # These tests can only be run on PE/COFF platforms. if {![is_pecoff_format]} { return } # This test can only be run on PE/COFF platforms that support .secrel32. if {[istarget i*86-*-cygwin*] || [istarget i*86-*-pe] || [istarget i*86-*-mingw*] || [istarget x86_64-*-mingw*] || [istarget arm-wince-pe] } { if {[istarget x86_64-*-mingw*] } { set pe_tests { {".secrel32" "" "" "" {secrel1.s secrel2.s} {{objdump -s secrel_64.d}} "secrel.x"} {"Empty export table" "" "" "" "exports.s" {{objdump -p exports64.d}} "exports.dll"} {"TLS directory entry" "" "" "" "tlssec.s" {{objdump -p tlssec64.d}} "tlssec.dll"} } } elseif {[istarget i*86-*-cygwin*] } { set pe_tests { {".secrel32" "--disable-auto-import" "" "" {secrel1.s secrel2.s} {{objdump -s secrel.d}} "secrel.x"} {"Empty export table" "" "" "" "exports.s" {{objdump -p exports.d}} "exports.dll"} {"TLS directory entry" "" "" "" "tlssec.s" {{objdump -p tlssec32.d}} "tlssec.dll"} } } else { set pe_tests { {".secrel32" "" "" "" {secrel1.s secrel2.s} {{objdump -s secrel.d}} "secrel.x"} {"Empty export table" "" "" "" "exports.s" {{objdump -p exports.d}} "exports.dll"} {"TLS directory entry" "" "" "" "tlssec.s" {{objdump -p tlssec32.d}} "tlssec.dll"} } } run_ld_link_tests $pe_tests } run_dump_test "image_size" run_dump_test "export_dynamic_warning" run_dump_test "longsecn" run_dump_test "longsecn-1" run_dump_test "longsecn-2" run_dump_test "longsecn-3" run_dump_test "longsecn-4" run_dump_test "longsecn-5" run_dump_test "orphan" run_dump_test "orphan_nu" run_dump_test "weakdef-1" run_dump_test "pr19803" set pr19803_dll { { "PR 19803: not exporting swept symbols" "-shared --out-implib dx.dll --gc-sections" "" "" {pr19803.s} {{objdump "--syms dx.dll" pr19803.e}} "a.exe"} } # This test is *supposed* to fail. If the symbol defined in pr19803.e is # found then it was not stripped from the export dll, despite the fact that # it (should have been) garbage collected from the executable. setup_xfail *-*-* run_ld_link_tests $pr19803_dll if {[istarget x86_64-*-mingw*] } { run_dump_test "cfi" } elseif {[istarget i*86-*-cygwin*] || [istarget i*86-*-mingw*] } { run_dump_test "cfi32" } set foreign_sym_test { {"non-C aligned common" "" "" "" {non-c-lang-syms.s} {{nm -C non-c-lang-syms.d}} "non-c-lang-syms.x"} } # MCore rearranges symbol order. setup_xfail mcore-*-pe run_ld_link_tests $foreign_sym_test