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