1#! /bin/sh
2# Copyright (C) 2007, 2008 Red Hat, Inc.
3# This file is part of Red Hat elfutils.
4#
5# Red Hat elfutils is free software; you can redistribute it and/or modify
6# it under the terms of the GNU General Public License as published by the
7# Free Software Foundation; version 2 of the License.
8#
9# Red Hat elfutils is distributed in the hope that it will be useful, but
10# WITHOUT ANY WARRANTY; without even the implied warranty of
11# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12# General Public License for more details.
13#
14# You should have received a copy of the GNU General Public License along
15# with Red Hat elfutils; if not, write to the Free Software Foundation,
16# Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA.
17#
18# Red Hat elfutils is an included package of the Open Invention Network.
19# An included package of the Open Invention Network is a package for which
20# Open Invention Network licensees cross-license their patents.  No patent
21# license is granted, either expressly or impliedly, by designation as an
22# included package.  Should you wish to participate in the Open Invention
23# Network licensing program, please visit www.openinventionnetwork.com
24# <http://www.openinventionnetwork.com>.
25
26. $srcdir/test-subr.sh
27
28testfiles testfile34 testfile38 testfile41 testfile49
29
30testrun_compare ../src/addr2line -f -e testfile34 \
31				 0x08048074 0x08048075 0x08048076 \
32				 0x08049078 0x08048080 0x08049080 <<\EOF
33foo
34??:0
35bar
36??:0
37_etext
38??:0
39data1
40??:0
41??
42??:0
43_end
44??:0
45EOF
46
47testrun_compare ../src/addr2line -S -e testfile38 0x02 0x10a 0x211 0x31a <<\EOF
48t1_global_outer+0x2
49??:0
50t2_global_symbol+0x2
51??:0
52t3_global_after_0+0x1
53??:0
54(.text)+0x31a
55??:0
56EOF
57
58testrun_compare ../src/addr2line -S -e testfile41 0x1 0x104 <<\EOF
59small_global_at_large_global+0x1
60??:0
61small_global_first_at_large_global+0x1
62??:0
63EOF
64
65testfiles testfile12 testfile14
66tempfiles testmaps
67
68cat > testmaps <<EOF
6900400000-00401000 r-xp 00000000 fd:01 4006812                            `pwd`/testfile14
7000500000-00501000 rw-p 00000000 fd:01 4006812                            `pwd`/testfile14
7101000000-01001000 r-xp 00000000 fd:01 1234567				 `pwd`/testfile12
7201100000-01011000 rw-p 00000000 fd:01 1234567				 `pwd`/testfile12
732aaaaaaab000-2aaaaaaad000 rw-p 2aaaaaaab000 00:00 0 
742aaaaaae2000-2aaaaaae3000 rw-p 2aaaaaae2000 00:00 0 
757fff61068000-7fff6107d000 rw-p 7ffffffea000 00:00 0                      [stack]
767fff611fe000-7fff61200000 r-xp 7fff611fe000 00:00 0                      [vdso]
77ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]
78EOF
79
80testrun_compare ../src/addr2line -S -M testmaps 0x40047c 0x10009db <<\EOF
81caller+0x14
82/home/drepper/local/elfutils-build/20050425/v.c:11
83foo+0xb
84/home/drepper/local/elfutils-build/20030710/u.c:5
85EOF
86
87#	.section .text
88#	nop #0
89#sizeless_foo:
90#	nop #1
91#	nop #2
92#sized_bar:
93#	nop #3
94#	nop #4
95#sizeless_baz:
96#	nop #5
97#	nop #6
98#	.size sized_bar, . - sized_bar
99#	nop #7
100#	nop #8
101#sizeless_x:
102#	nop #9
103#	.org 0x100
104#	nop #0
105#	.globl global_outer
106#global_outer:
107#	nop #1
108#	nop #2
109#	.globl global_in_global
110#global_in_global:
111#	nop #3
112#	nop #4
113#	.size global_in_global, . - global_in_global
114#local_in_global:
115#	nop #5 
116#	nop #6 
117#	.size local_in_global, . - local_in_global
118#	nop #7
119#	nop #8
120#.Lsizeless1:
121#	nop #9
122#	nop #10
123#	.size global_outer, . - global_outer
124#	nop #11
125#	.org 0x200
126#	nop #0
127#local_outer:
128#	nop #1
129#	nop #2
130#	.globl global_in_local
131#global_in_local:
132#	nop #3
133#	nop #4
134#	.size global_in_local, . - global_in_local
135#local_in_local:
136#	nop #5 
137#	nop #6 
138#	.size local_in_local, . - local_in_local
139#	nop #7
140#	nop #8
141#.Lsizeless2:
142#	nop #9
143#	nop #10
144#	.size local_outer, . - local_outer
145#	nop #11
146testrun_compare ../src/addr2line -S -e testfile49 \
147    		0 1 2 3 4 5 6 7 8 9 \
148		0x100 0x101 0x102 0x103 0x104 0x105 \
149		0x106 0x107 0x108 0x109 0x10a 0x10b \
150		0x200 0x201 0x202 0x203 0x204 0x205 \
151		0x206 0x207 0x208 0x209 0x20a 0x20b <<\EOF
152(.text)+0
153??:0
154sizeless_foo
155??:0
156sizeless_foo+0x1
157??:0
158sized_bar
159??:0
160sized_bar+0x1
161??:0
162sized_bar+0x2
163??:0
164sized_bar+0x3
165??:0
166(.text)+0x7
167??:0
168(.text)+0x8
169??:0
170sizeless_x
171??:0
172sizeless_x+0xf7
173??:0
174global_outer
175??:0
176global_outer+0x1
177??:0
178global_in_global
179??:0
180global_in_global+0x1
181??:0
182global_outer+0x4
183??:0
184global_outer+0x5
185??:0
186global_outer+0x6
187??:0
188global_outer+0x7
189??:0
190global_outer+0x8
191??:0
192global_outer+0x9
193??:0
194(.text)+0x10b
195??:0
196(.text)+0x200
197??:0
198local_outer
199??:0
200local_outer+0x1
201??:0
202global_in_local
203??:0
204global_in_local+0x1
205??:0
206local_in_local
207??:0
208local_in_local+0x1
209??:0
210local_outer+0x6
211??:0
212local_outer+0x7
213??:0
214local_outer+0x8
215??:0
216local_outer+0x9
217??:0
218(.text)+0x20b
219??:0
220EOF
221
222exit 0
223