]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - ld/testsuite/ld-pe/pe-compile.exp
Update year range in copyright notice of binutils files
[thirdparty/binutils-gdb.git] / ld / testsuite / ld-pe / pe-compile.exp
CommitLineData
c1711530
DK
1# Expect script for complex PE tests that require a C compiler
2# in addition to the just-built binutils.
d87bef3a 3# Copyright (C) 2009-2023 Free Software Foundation, Inc.
09e2aba4
DK
4#
5# This file is part of the GNU Binutils.
6#
7# This program is free software; you can redistribute it and/or modify
8# it under the terms of the GNU General Public License as published by
9# the Free Software Foundation; either version 3 of the License, or
10# (at your option) any later version.
11#
12# This program is distributed in the hope that it will be useful,
13# but WITHOUT ANY WARRANTY; without even the implied warranty of
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15# GNU General Public License for more details.
16#
17# You should have received a copy of the GNU General Public License
18# along with this program; if not, write to the Free Software
19# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
20# MA 02110-1301, USA.
21#
22
c1711530 23# These tests can only be run on PE/COFF platforms.
09e2aba4
DK
24if {![is_pecoff_format]} {
25 return
26}
27
28# No compiler, no test.
44ed8092 29if { ![check_compiler_available] } {
09e2aba4 30 untested "PE version scripts"
c1711530
DK
31 untested "aligned common tests"
32 # Add more "untested" directives here when adding more tests below.
09e2aba4
DK
33 return
34}
35
1e972e65 36proc build_basefile1_o {} {
ad77db1c 37 global CC_FOR_TARGET
1e972e65
KT
38 global srcdir
39 global subdir
40
41 # Compile the object file.
669d5115 42 if ![ld_compile $CC_FOR_TARGET $srcdir/$subdir/basefile1.s tmpdir/basefile1.o] {
1e972e65
KT
43 fail "compiling basefile1 object"
44 }
45}
46
47proc run_basefile_test { testname } {
48 global LD
49 global DLLTOOL
50 global srcdir
51 global subdir
52 global verbose
53
d9816402 54 if ![ld_link "$LD -e start \
1e972e65
KT
55 --base-file=tmpdir/$testname.base \
56 --export-all-symbols" tmpdir/$testname.dll \
57 "tmpdir/basefile1.o"] {
58 fail "linking DLL"
59 return
60 }
61
62 if { $verbose > 2 } then { verbose "output is [file_contents tmpdir/$testname.base]" 3 }
63
64 catch "exec wc -c tmpdir/$testname.base" err
65
77aabdd2 66 if ![string match "0 tmpdir/$testname.base" [string trim $err]] then {
1e972e65
KT
67 send_log "$err\n"
68 if { $verbose == 2 } then { verbose "$err" 2 }
69 fail $testname
70 return
71 }
72
73 pass "$testname"
74}
75
09e2aba4 76proc build_vers_script_dll_o {} {
ad77db1c 77 global CC_FOR_TARGET
09e2aba4
DK
78 global srcdir
79 global subdir
c1711530 80
09e2aba4 81 # Compile the object file.
669d5115 82 if ![ld_compile "$CC_FOR_TARGET -shared" $srcdir/$subdir/vers-script-dll.c tmpdir/vers-script-dll.o] {
09e2aba4
DK
83 fail "compiling shared lib object"
84 }
85}
86
87proc run_ver_script_test { testname } {
ad77db1c 88 global CC_FOR_TARGET
09e2aba4
DK
89 global srcdir
90 global subdir
91 global verbose
92
ad77db1c 93 if ![ld_link "$CC_FOR_TARGET -shared \
09e2aba4
DK
94 -Wl,--version-script,$srcdir/$subdir/$testname.ver \
95 -Wl,--output-def,tmpdir/$testname.def" tmpdir/$testname.dll \
96 "tmpdir/vers-script-dll.o"] {
97 fail "linking DLL"
98 }
99
100 if { $verbose > 2 } then { verbose "output is [file_contents tmpdir/$testname.def]" 3 }
101 if { [regexp_diff tmpdir/$testname.def $srcdir/$subdir/$testname.d] } then {
102 fail $testname
103 if { $verbose == 2 } then { verbose "output is [file_contents tmpdir/$testname.def]" 2 }
104 return
105 }
106
107 pass "$testname"
108}
109
110
111build_vers_script_dll_o
112
113run_ver_script_test "vers-script-1"
114run_ver_script_test "vers-script-2"
115run_ver_script_test "vers-script-3"
116run_ver_script_test "vers-script-4"
117
1e972e65
KT
118if {[istarget i*86-*-cygwin*]
119 || [istarget i*86-*-pe]
120 || [istarget i*86-*-mingw*]
121 || [istarget x86_64-*-mingw*] } {
122
123 build_basefile1_o
124 run_basefile_test "basefile-secrel"
125 } else {
126 untested "PE basefile test"
127 }
128
c1711530 129set align_tests {
897aea50 130 {"aligned common 1" "" "" "" {aligncomm-1.c}
c1711530 131 {{nm -C aligncomm.d}} "aligncomm-1.x"}
897aea50 132 {"aligned common 2" "" "" "" {aligncomm-2.c}
c1711530 133 {{nm -C aligncomm.d}} "aligncomm-2.x"}
897aea50 134 {"aligned common 3" "" "" "" {aligncomm-3.c}
c1711530 135 {{nm -C aligncomm.d}} "aligncomm-3.x"}
897aea50 136 {"aligned common 4" "" "" "" {aligncomm-4.c}
c1711530
DK
137 {{nm -C aligncomm.d}} "aligncomm-4.x"}
138}
139
140run_ld_link_tests $align_tests