rework crossref test
[deliverable/binutils-gdb.git] / ld / testsuite / ld-scripts / crossref.exp
1 # Test NOCROSSREFS in a linker script.
2 # By Ian Lance Taylor, Cygnus Support.
3
4 set test1 "NOCROSSREFS 1"
5 set test2 "NOCROSSREFS 2"
6
7 if { [which $CC] == 0 } {
8 untested $test1
9 untested $test2
10 return
11 }
12
13 if { ![ld_compile $CC "$srcdir/$subdir/cross1.c" tmpdir/cross1.o] \
14 || ![ld_compile $CC "$srcdir/$subdir/cross2.c" tmpdir/cross2.o] } {
15 unresolved $test1
16 unresolved $test2
17 return
18 }
19
20 verbose -log "$ld -o tmpdir/cross1 -T $srcdir/$subdir/cross1.t tmpdir/cross1.o tmpdir/cross2.o"
21
22 catch "exec $ld -o tmpdir/cross1 -T $srcdir/$subdir/cross1.t tmpdir/cross1.o tmpdir/cross2.o" exec_output
23
24 set exec_output [prune_system_crud $host_triplet $exec_output]
25
26 regsub -all "(^|\n)($ld: warning: cannot find entry symbol\[^\n\]*\n?)" $exec_output "\\1" exec_output
27
28 if [string match "" $exec_output] then {
29 fail $test1
30 } else {
31 verbose -log "$exec_output"
32 if [regexp "prohibited cross reference from .* to `foo' in" $exec_output] {
33 pass $test1
34 } else {
35 fail $test1
36 }
37 }
38
39 # Check cross references within a single object.
40
41 if { ![ld_compile $CC "$srcdir/$subdir/cross3.c" tmpdir/cross3.o] } {
42 unresolved $test2
43 return
44 }
45
46 verbose -log "$ld -o tmpdir/cross2 -T $srcdir/$subdir/cross2.t tmpdir/cross3.o"
47
48 catch "exec $ld -o tmpdir/cross2 -T $srcdir/$subdir/cross2.t tmpdir/cross3.o" exec_output
49
50 set exec_output [prune_system_crud $host_triplet $exec_output]
51
52 regsub -all "(^|\n)($ld: warning: cannot find entry symbol\[^\n\]*\n?)" $exec_output "\\1" exec_output
53
54 if [string match "" $exec_output] then {
55 fail $test2
56 } else {
57 verbose -log "$exec_output"
58 if [regexp "prohibited cross reference from .* to `.*' in" $exec_output] {
59 pass $test2
60 } else {
61 fail $test2
62 }
63 }
This page took 0.041248 seconds and 5 git commands to generate.