blob: f954ee45db2b78118b941e9c8e4c63b445e9279e [file] [log] [blame]
Elliott Hughes03333822015-02-18 22:19:45 -08001#! /bin/sh
2# Copyright (C) 2007, 2008 Red Hat, Inc.
3# This file is part of elfutils.
4#
5# This file is free software; you can redistribute it and/or modify
6# it under the terms of the GNU General Public License as published by
7# the Free Software Foundation; either version 3 of the License, or
8# (at your option) any later version.
9#
10# elfutils is distributed in the hope that it will be useful, but
11# WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13# GNU General Public License for more details.
14#
15# You should have received a copy of the GNU General Public License
16# along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18. $srcdir/test-subr.sh
19
20testfiles testfile34 testfile38 testfile41 testfile49
21
22testrun_compare ${abs_top_builddir}/src/addr2line -f -e testfile34 \
23 0x08048074 0x08048075 0x08048076 \
24 0x08049078 0x08048080 0x08049080 <<\EOF
25foo
26??:0
27bar
28??:0
29_etext
30??:0
31data1
32??:0
33??
34??:0
35_end
36??:0
37EOF
38
39testrun_compare ${abs_top_builddir}/src/addr2line -S -e testfile38 0x02 0x10a 0x211 0x31a <<\EOF
40t1_global_outer+0x2
41??:0
42t2_global_symbol+0x2
43??:0
44t3_global_after_0+0x1
45??:0
46(.text)+0x31a
47??:0
48EOF
49
50testrun_compare ${abs_top_builddir}/src/addr2line -S -e testfile41 0x1 0x104 <<\EOF
51small_global_at_large_global+0x1
52??:0
53small_global_first_at_large_global+0x1
54??:0
55EOF
56
57testfiles testfile12 testfile14
58tempfiles testmaps
59
60cat > testmaps <<EOF
6100400000-00401000 r-xp 00000000 fd:01 4006812 `pwd`/testfile14
6200500000-00501000 rw-p 00000000 fd:01 4006812 `pwd`/testfile14
6301000000-01001000 r-xp 00000000 fd:01 1234567 `pwd`/testfile12
6401100000-01011000 rw-p 00000000 fd:01 1234567 `pwd`/testfile12
652aaaaaaab000-2aaaaaaad000 rw-p 2aaaaaaab000 00:00 0
662aaaaaae2000-2aaaaaae3000 rw-p 2aaaaaae2000 00:00 0
677fff61068000-7fff6107d000 rw-p 7ffffffea000 00:00 0 [stack]
687fff611fe000-7fff61200000 r-xp 7fff611fe000 00:00 0 [vdso]
69ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]
70EOF
71
72testrun_compare ${abs_top_builddir}/src/addr2line -S -M testmaps 0x40047c 0x10009db <<\EOF
73caller+0x14
74/home/drepper/local/elfutils-build/20050425/v.c:11
75foo+0xb
76/home/drepper/local/elfutils-build/20030710/u.c:5
77EOF
78
79# .section .text
80# nop #0
81#sizeless_foo:
82# nop #1
83# nop #2
84#sized_bar:
85# nop #3
86# nop #4
87#sizeless_baz:
88# nop #5
89# nop #6
90# .size sized_bar, . - sized_bar
91# nop #7
92# nop #8
93#sizeless_x:
94# nop #9
95# .org 0x100
96# nop #0
97# .globl global_outer
98#global_outer:
99# nop #1
100# nop #2
101# .globl global_in_global
102#global_in_global:
103# nop #3
104# nop #4
105# .size global_in_global, . - global_in_global
106#local_in_global:
107# nop #5
108# nop #6
109# .size local_in_global, . - local_in_global
110# nop #7
111# nop #8
112#.Lsizeless1:
113# nop #9
114# nop #10
115# .size global_outer, . - global_outer
116# nop #11
117# .org 0x200
118# nop #0
119#local_outer:
120# nop #1
121# nop #2
122# .globl global_in_local
123#global_in_local:
124# nop #3
125# nop #4
126# .size global_in_local, . - global_in_local
127#local_in_local:
128# nop #5
129# nop #6
130# .size local_in_local, . - local_in_local
131# nop #7
132# nop #8
133#.Lsizeless2:
134# nop #9
135# nop #10
136# .size local_outer, . - local_outer
137# nop #11
138testrun_compare ${abs_top_builddir}/src/addr2line -S -e testfile49 \
139 0 1 2 3 4 5 6 7 8 9 \
140 0x100 0x101 0x102 0x103 0x104 0x105 \
141 0x106 0x107 0x108 0x109 0x10a 0x10b \
142 0x200 0x201 0x202 0x203 0x204 0x205 \
143 0x206 0x207 0x208 0x209 0x20a 0x20b <<\EOF
144(.text)+0
145??:0
146sizeless_foo
147??:0
148sizeless_foo+0x1
149??:0
150sized_bar
151??:0
152sized_bar+0x1
153??:0
154sized_bar+0x2
155??:0
156sized_bar+0x3
157??:0
158(.text)+0x7
159??:0
160(.text)+0x8
161??:0
162sizeless_x
163??:0
164sizeless_x+0xf7
165??:0
166global_outer
167??:0
168global_outer+0x1
169??:0
170global_in_global
171??:0
172global_in_global+0x1
173??:0
174global_outer+0x4
175??:0
176global_outer+0x5
177??:0
178global_outer+0x6
179??:0
180global_outer+0x7
181??:0
182global_outer+0x8
183??:0
184global_outer+0x9
185??:0
186(.text)+0x10b
187??:0
188(.text)+0x200
189??:0
190local_outer
191??:0
192local_outer+0x1
193??:0
194global_in_local
195??:0
196global_in_local+0x1
197??:0
198local_in_local
199??:0
200local_in_local+0x1
201??:0
202local_outer+0x6
203??:0
204local_outer+0x7
205??:0
206local_outer+0x8
207??:0
208local_outer+0x9
209??:0
210(.text)+0x20b
211??:0
212EOF
213
214# .macro global label size
215#\label: .globl \label
216# .size \label, \size
217# .endm
218# .macro weak label size
219#\label: .weak \label
220# .size \label, \size
221# .endm
222# .macro local label size
223#\label: .size \label, \size
224# .endm
225# .macro offset val
226# .ifne (. - _start) - \val
227# .err
228# .endif
229# .byte \val
230# .endm
231#
232#_start:
233# offset 0
234#
235# local glocal, 1
236# weak gweak, 1
237# global gglobal1, 2
238# global gglobal2, 1
239# global gglobal3, 1
240# offset 1
241# /* Symbols end here. */
242# offset 2
243# /* gglobal1 ends here. */
244# offset 3
245#
246# local g0local, 0
247# weak g0weak, 0
248# global g0global1, 0
249# global g0global2, 0
250# offset 4
251#
252# local wlocal, 1
253# weak wweak1, 2
254# weak wweak2, 1
255# weak wweak3, 1
256# offset 5
257# /* Symbols end here. */
258# offset 6
259# /* wweak1 ends here. */
260# offset 7
261#
262# local w0local, 0
263# weak w0weak1, 0
264# weak w0weak2, 0
265# offset 8
266#
267# local llocal1, 2
268# local llocal2, 1
269# local llocal3, 1
270# offset 9
271# /* Symbols end here. */
272# offset 10
273# /* llocal1 ends here. */
274# offset 11
275#
276# local l0local1, 0
277# local l0local2, 0
278# offset 12
279testfiles testfile64
280testrun_compare ${abs_top_builddir}/src/addr2line -S -e testfile64 1 4 5 8 9 12 <<\EOF
281gglobal2
282??:0
283g0global2
284??:0
285wweak2
286??:0
287w0weak2
288??:0
289llocal2
290??:0
291l0local2
292??:0
293EOF
294
295testfiles testfile65
296testrun_compare ${abs_top_builddir}/src/addr2line -S --core=testfile65 0x7fff94bffa30 <<\EOF
297__vdso_time
298??:0
299EOF
300
301# .section ".text"
302# .globl _start
303# .section ".opd","aw"
304#_start: .quad .L._start,.TOC.@tocbase
305# .previous
306# .type _start, @function
307#.L._start:
308# .byte 0x7d, 0x82, 0x10, 0x08
309# .size _start,.-.L._start
310testfiles testfile66 testfile66.core
311testrun_compare ${abs_top_builddir}/src/addr2line -x -e testfile66 _start 0x2d8 0x2db 0x2dc 0x103d0 0x103d3 0x103d4<<EOF
312_start (.text)
313??:0
314_start (.text)
315??:0
316_start+0x3 (.text)
317??:0
318()+0x2dc
319??:0
320_start (.opd)
321??:0
322_start+0x3 (.opd)
323??:0
324()+0x103d4
325??:0
326EOF
327testrun_compare ${abs_top_builddir}/src/addr2line -x -e testfile66 --core=testfile66.core _start 0x461b02d8 0x461c03d0<<\EOF
328_start (.text)
329??:0
330_start (.text)
331??:0
332_start (.opd)
333??:0
334EOF
335
336testfiles testfile69.core testfile69.so
337testrun_compare ${abs_top_builddir}/src/addr2line --core=./testfile69.core -S 0x7f0bc6a33535 0x7f0bc6a33546 <<\EOF
338libstatic+0x9
339??:0
340libglobal+0x9
341??:0
342EOF
343
344testfiles testfile70.exec testfile70.core
345testrun_compare ${abs_top_builddir}/src/addr2line -S -e testfile70.exec --core=testfile70.core 0x7ff2cfe9b6b5 <<\EOF
346main+0x9
347??:0
348EOF
349testrun_compare ${abs_top_builddir}/src/addr2line -S --core=testfile70.core -e testfile70.exec 0x7ff2cfe9b6b5 <<\EOF
350main+0x9
351??:0
352EOF
353
354testfiles test-core-lib.so test-core.core test-core.exec
355testrun_compare ${abs_top_builddir}/src/addr2line -S -e test-core.exec --core=test-core.core 0x7f67f2aaf619 <<\EOF
356libfunc+0x9
357??:0
358EOF
359
360exit 0