]>
Commit | Line | Data |
---|---|---|
33a301ba | 1 | # Test address printed by --print-map |
fd67aa11 | 2 | # Copyright (C) 2002-2024 Free Software Foundation, Inc. |
33a301ba | 3 | # |
f96b4a7b NC |
4 | # This file is part of the GNU Binutils. |
5 | # | |
6 | # This program is free software; you can redistribute it and/or modify | |
33a301ba | 7 | # it under the terms of the GNU General Public License as published by |
f96b4a7b | 8 | # the Free Software Foundation; either version 3 of the License, or |
33a301ba | 9 | # (at your option) any later version. |
f96b4a7b | 10 | # |
33a301ba RS |
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. | |
f96b4a7b | 15 | # |
33a301ba RS |
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 | |
f96b4a7b NC |
18 | # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, |
19 | # MA 02110-1301, USA. | |
33a301ba RS |
20 | |
21 | set testname "map addresses" | |
22 | ||
23 | # The source file doesn't matter. Pinch one from the sizeof test. | |
a155881b | 24 | if {![ld_assemble $as $srcdir/$subdir/sizeof.s tmpdir/map-address.o]} { |
5b1f6c95 | 25 | unsupported $testname |
33a301ba RS |
26 | return |
27 | } | |
28 | ||
d4e5db4e JB |
29 | if { [is_pecoff_format] } then { |
30 | set IMAGE_BASE "--image-base 0" | |
31 | } else { | |
32 | set IMAGE_BASE "" | |
33 | } | |
34 | ||
d9816402 | 35 | if {![ld_link $ld tmpdir/map-address \ |
740341b9 | 36 | "$LDFLAGS -T $srcdir/$subdir/map-address.t \ |
d4e5db4e | 37 | $IMAGE_BASE tmpdir/map-address.o \ |
a155881b | 38 | -Map tmpdir/map-address.map"]} { |
33a301ba | 39 | fail $testname |
7f6a71ff JM |
40 | return |
41 | } | |
42 | ||
43 | if [is_remote host] then { | |
44 | remote_upload host "tmpdir/map_address.map" | |
45 | } | |
46 | ||
47 | if {[regexp_diff \ | |
a155881b RS |
48 | "tmpdir/map-address.map" \ |
49 | "$srcdir/$subdir/map-address.d"]} { | |
33a301ba RS |
50 | fail $testname |
51 | } else { | |
52 | pass $testname | |
53 | } | |
198204a7 | 54 | |
2c72361c | 55 | |
198204a7 NC |
56 | set testname "map to directory" |
57 | ||
58 | if {![ld_link $ld tmpdir/map-address \ | |
740341b9 | 59 | "$LDFLAGS -T $srcdir/$subdir/map-address.t \ |
d4e5db4e | 60 | $IMAGE_BASE tmpdir/map-address.o \ |
198204a7 NC |
61 | -Map tmpdir --output fred"]} { |
62 | fail $testname | |
63 | return | |
64 | } | |
65 | ||
66 | if [is_remote host] then { | |
67 | remote_upload host "tmpdir/fred.map" | |
68 | } | |
69 | ||
70 | if {[regexp_diff \ | |
71 | "tmpdir/fred.map" \ | |
72 | "$srcdir/$subdir/map-address.d"]} { | |
73 | fail $testname | |
74 | } else { | |
75 | pass $testname | |
76 | } | |
2c72361c NC |
77 | |
78 | ||
79 | set testname "map to % directory" | |
80 | ||
81 | if {![ld_link $ld tmpdir/map-address \ | |
82 | "$LDFLAGS -T $srcdir/$subdir/map-address.t \ | |
d4e5db4e | 83 | $IMAGE_BASE tmpdir/map-address.o \ |
2c72361c NC |
84 | -Map=tmpdir/% --output fred"]} { |
85 | fail $testname | |
86 | return | |
87 | } | |
88 | ||
89 | if [is_remote host] then { | |
90 | remote_upload host "tmpdir/fred.map" | |
91 | } | |
92 | ||
93 | if {[regexp_diff \ | |
94 | "tmpdir/fred.map" \ | |
95 | "$srcdir/$subdir/map-address.d"]} { | |
96 | fail $testname | |
97 | } else { | |
98 | pass $testname | |
99 | } | |
100 | ||
101 | ||
102 | set testname "map to %.foo directory" | |
103 | ||
104 | if {![ld_link $ld tmpdir/map-address \ | |
105 | "$LDFLAGS -T $srcdir/$subdir/map-address.t \ | |
d4e5db4e | 106 | $IMAGE_BASE tmpdir/map-address.o \ |
2c72361c NC |
107 | -Map=tmpdir/%.foo --output fred"]} { |
108 | fail $testname | |
109 | return | |
110 | } | |
111 | ||
112 | if [is_remote host] then { | |
113 | remote_upload host "tmpdir/fred.foo" | |
114 | } | |
115 | ||
116 | if {[regexp_diff \ | |
117 | "tmpdir/fred.foo" \ | |
118 | "$srcdir/$subdir/map-address.d"]} { | |
119 | fail $testname | |
120 | } else { | |
121 | pass $testname | |
122 | } | |
496917ce NC |
123 | |
124 | if { [is_elf_format] } { | |
125 | set testname "map with locals" | |
126 | ||
127 | if {![ld_link $ld tmpdir/map-address \ | |
128 | "$LDFLAGS -T $srcdir/$subdir/map-address.t \ | |
129 | $IMAGE_BASE tmpdir/map-address.o \ | |
130 | -Map=tmpdir/map-locals.map --print-map-locals"]} { | |
131 | fail $testname | |
132 | return | |
133 | } | |
134 | ||
135 | if [is_remote host] then { | |
136 | remote_upload host "tmpdir/map-locals.map" | |
137 | } | |
138 | ||
139 | # Some ELF targets do not preserve their local symbols. | |
140 | setup_xfail "d30v-*-*" "dlx-*-*" "pj-*-*" "s12z-*-*" "xgate-*-*" | |
141 | ||
142 | if {[regexp_diff \ | |
143 | "tmpdir/map-locals.map" \ | |
144 | "$srcdir/$subdir/map-locals.d"]} { | |
145 | fail $testname | |
146 | } else { | |
147 | pass $testname | |
148 | } | |
149 | } |