1# Expect script for simple PE tests that require the just-built binutils only. 2# Copyright (C) 2004-2016 Free Software Foundation, Inc. 3# 4# This file is part of the GNU Binutils. 5# 6# This program is free software; you can redistribute it and/or modify 7# it under the terms of the GNU General Public License as published by 8# the Free Software Foundation; either version 3 of the License, or 9# (at your option) any later version. 10# 11# This program is distributed in the hope that it will be useful, 12# but WITHOUT ANY WARRANTY; without even the implied warranty of 13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14# GNU General Public License for more details. 15# 16# You should have received a copy of the GNU General Public License 17# along with this program; if not, write to the Free Software 18# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, 19# MA 02110-1301, USA. 20# 21 22# These tests can only be run on PE/COFF platforms. 23if {![is_pecoff_format]} { 24 return 25} 26 27# This test can only be run on PE/COFF platforms that support .secrel32. 28if {[istarget i*86-*-cygwin*] 29 || [istarget i*86-*-pe] 30 || [istarget i*86-*-mingw*] 31 || [istarget x86_64-*-mingw*] 32 || [istarget arm-wince-pe] } { 33 34 if {[istarget x86_64-*-mingw*] } { 35 set pe_tests { 36 {".secrel32" "" "" "" {secrel1.s secrel2.s} 37 {{objdump -s secrel_64.d}} "secrel.x"} 38 {"Empty export table" "" "" "" "exports.s" 39 {{objdump -p exports64.d}} "exports.dll"} 40 {"TLS directory entry" "" "" "" "tlssec.s" 41 {{objdump -p tlssec64.d}} "tlssec.dll"} 42 } 43 } elseif {[istarget i*86-*-cygwin*] } { 44 set pe_tests { 45 {".secrel32" "--disable-auto-import" "" "" {secrel1.s secrel2.s} 46 {{objdump -s secrel.d}} "secrel.x"} 47 {"Empty export table" "" "" "" "exports.s" 48 {{objdump -p exports.d}} "exports.dll"} 49 {"TLS directory entry" "" "" "" "tlssec.s" 50 {{objdump -p tlssec32.d}} "tlssec.dll"} 51 } 52 } else { 53 set pe_tests { 54 {".secrel32" "" "" "" {secrel1.s secrel2.s} 55 {{objdump -s secrel.d}} "secrel.x"} 56 {"Empty export table" "" "" "" "exports.s" 57 {{objdump -p exports.d}} "exports.dll"} 58 {"TLS directory entry" "" "" "" "tlssec.s" 59 {{objdump -p tlssec32.d}} "tlssec.dll"} 60 } 61 } 62 63 run_ld_link_tests $pe_tests 64} 65 66run_dump_test "image_size" 67run_dump_test "export_dynamic_warning" 68 69run_dump_test "longsecn" 70run_dump_test "longsecn-1" 71run_dump_test "longsecn-2" 72run_dump_test "longsecn-3" 73run_dump_test "longsecn-4" 74run_dump_test "longsecn-5" 75 76run_dump_test "orphan" 77run_dump_test "orphan_nu" 78 79run_dump_test "pr19803" 80set pr19803_dll { 81 { "PR 19803: not exporting swept symbols" 82 "-shared --out-implib dx.dll --gc-sections" 83 "" "" {pr19803.s} 84 {{objdump "--syms dx.dll" pr19803.e}} 85 "a.exe"} 86} 87# This test is *supposed* to fail. If the symbol defined in pr19803.e is 88# found then it was not stripped from the export dll, despite the fact that 89# it (should have been) garbage collected from the executable. 90setup_xfail *-*-* 91run_ld_link_tests $pr19803_dll 92 93if {[istarget x86_64-*-mingw*] } { 94 run_dump_test "cfi" 95} elseif {[istarget i*86-*-cygwin*] || [istarget i*86-*-mingw*] } { 96 run_dump_test "cfi32" 97} 98 99set foreign_sym_test { 100 {"non-C aligned common" "" "" "" {non-c-lang-syms.s} 101 {{nm -C non-c-lang-syms.d}} "non-c-lang-syms.x"} 102} 103 104# MCore rearranges symbol order. 105setup_xfail mcore-*-pe 106run_ld_link_tests $foreign_sym_test 107