1da0c48c4Sopenharmony_ci#! /bin/sh 2da0c48c4Sopenharmony_ci# Copyright (C) 2013 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_ci# See the source files testfile_const_type.c testfile_implicit_value.c 21da0c48c4Sopenharmony_ci# testfile_entry_value.c testfile_parameter_ref.c testfile_implicit_pointer.c 22da0c48c4Sopenharmony_ci# how to regenerate the test files (needs GCC 4.8+). 23da0c48c4Sopenharmony_ci 24da0c48c4Sopenharmony_citestfiles testfile_const_type testfile_implicit_value testfile_entry_value 25da0c48c4Sopenharmony_citestfiles testfile_parameter_ref testfile_implicit_pointer 26da0c48c4Sopenharmony_ci 27da0c48c4Sopenharmony_citestrun_compare ${abs_top_builddir}/tests/varlocs -e testfile_const_type <<\EOF 28da0c48c4Sopenharmony_cimodule 'testfile_const_type' 29da0c48c4Sopenharmony_ci[b] CU 'const_type.c'@0 30da0c48c4Sopenharmony_ci [33] function 'f1'@80483f0 31da0c48c4Sopenharmony_ci frame_base: {call_frame_cfa {bregx(4,4)}} 32da0c48c4Sopenharmony_ci [4b] parameter 'd' 33da0c48c4Sopenharmony_ci [80483f0,804841b) {fbreg(0)} 34da0c48c4Sopenharmony_ci [57] variable 'w' 35da0c48c4Sopenharmony_ci [80483f0,804841b) {fbreg(0), GNU_deref_type(8){long long int,signed,64@[25]}, GNU_const_type{long long int,signed,64@[25]}(8)[0000806745230100], div, GNU_convert{long long unsigned int,unsigned,64@[2c]}, stack_value} 36da0c48c4Sopenharmony_ci [7d] function 'main'@80482f0 37da0c48c4Sopenharmony_ci frame_base: {call_frame_cfa {bregx(4,4)}} 38da0c48c4Sopenharmony_ciEOF 39da0c48c4Sopenharmony_ci 40da0c48c4Sopenharmony_citestrun_compare ${abs_top_builddir}/tests/varlocs -e testfile_implicit_value <<\EOF 41da0c48c4Sopenharmony_cimodule 'testfile_implicit_value' 42da0c48c4Sopenharmony_ci[b] CU 'implicit_value.c'@0 43da0c48c4Sopenharmony_ci [25] function 'foo'@80483f0 44da0c48c4Sopenharmony_ci frame_base: {call_frame_cfa {bregx(4,4)}} 45da0c48c4Sopenharmony_ci [3e] variable 'a' 46da0c48c4Sopenharmony_ci [80483f0,80483f6) {implicit_value(8){0200000000000000}, piece(8), implicit_value(8){1500000000000000}, piece(8)} 47da0c48c4Sopenharmony_ci [86] function 'main'@80482f0 48da0c48c4Sopenharmony_ci frame_base: {call_frame_cfa {bregx(4,4)}} 49da0c48c4Sopenharmony_ciEOF 50da0c48c4Sopenharmony_ci 51da0c48c4Sopenharmony_citestrun_compare ${abs_top_builddir}/tests/varlocs -e testfile_entry_value <<\EOF 52da0c48c4Sopenharmony_cimodule 'testfile_entry_value' 53da0c48c4Sopenharmony_ci[b] CU 'entry_value.c'@0 54da0c48c4Sopenharmony_ci [29] function 'foo'@400500 55da0c48c4Sopenharmony_ci frame_base: {call_frame_cfa {bregx(7,8)}} 56da0c48c4Sopenharmony_ci [4a] parameter 'x' 57da0c48c4Sopenharmony_ci [400500,400504) {reg5} 58da0c48c4Sopenharmony_ci [55] parameter 'y' 59da0c48c4Sopenharmony_ci [400500,400504) {reg4} 60da0c48c4Sopenharmony_ci [68] function 'bar'@400510 61da0c48c4Sopenharmony_ci frame_base: {call_frame_cfa {bregx(7,8)}} 62da0c48c4Sopenharmony_ci [89] parameter 'x' 63da0c48c4Sopenharmony_ci [400510,40051c) {reg5} 64da0c48c4Sopenharmony_ci [40051c,40052b) {reg6} 65da0c48c4Sopenharmony_ci [40052b,400531) {GNU_entry_value(1) {reg5}, stack_value} 66da0c48c4Sopenharmony_ci [96] parameter 'y' 67da0c48c4Sopenharmony_ci [400510,40051c) {reg4} 68da0c48c4Sopenharmony_ci [40051c,40052a) {reg3} 69da0c48c4Sopenharmony_ci [40052a,400531) {GNU_entry_value(1) {reg4}, stack_value} 70da0c48c4Sopenharmony_ci [a3] variable 'z' 71da0c48c4Sopenharmony_ci [400524,400528) {reg0} 72da0c48c4Sopenharmony_ci [400528,400529) {reg12} 73da0c48c4Sopenharmony_ci [400529,40052e) {breg0(0), breg12(0), plus, stack_value} 74da0c48c4Sopenharmony_ci [40052e,400531) {reg0} 75da0c48c4Sopenharmony_ci [e9] function 'main'@400400 76da0c48c4Sopenharmony_ci frame_base: {call_frame_cfa {bregx(7,8)}} 77da0c48c4Sopenharmony_ci [10a] parameter 'argc' 78da0c48c4Sopenharmony_ci [400400,400406) {reg5} 79da0c48c4Sopenharmony_ci [400406,40040a) {breg5(-1), stack_value} 80da0c48c4Sopenharmony_ci [40040a,40040b) {GNU_entry_value(1) {reg5}, stack_value} 81da0c48c4Sopenharmony_ci [119] parameter 'argv' 82da0c48c4Sopenharmony_ci [400400,400403) {reg4} 83da0c48c4Sopenharmony_ci [400403,40040b) {GNU_entry_value(1) {reg4}, stack_value} 84da0c48c4Sopenharmony_ciEOF 85da0c48c4Sopenharmony_ci 86da0c48c4Sopenharmony_citestrun_compare ${abs_top_builddir}/tests/varlocs -e testfile_parameter_ref <<\EOF 87da0c48c4Sopenharmony_cimodule 'testfile_parameter_ref' 88da0c48c4Sopenharmony_ci[b] CU 'parameter_ref.c'@0 89da0c48c4Sopenharmony_ci [77] function 'foo'@400510 90da0c48c4Sopenharmony_ci frame_base: {call_frame_cfa {bregx(7,8)}} 91da0c48c4Sopenharmony_ci [92] parameter 'x' 92da0c48c4Sopenharmony_ci [400510,400523) {reg5} 93da0c48c4Sopenharmony_ci [99] parameter 'y' 94da0c48c4Sopenharmony_ci [400510,400523) {GNU_parameter_ref[42], stack_value} 95da0c48c4Sopenharmony_ci [a5] variable 'a' 96da0c48c4Sopenharmony_ci [400510,400523) {breg5(0), lit1, shl, stack_value} 97da0c48c4Sopenharmony_ci [b0] variable 'b' 98da0c48c4Sopenharmony_ci [400510,400523) {GNU_parameter_ref[42], lit1, shl, stack_value} 99da0c48c4Sopenharmony_ci [be] variable 'c' 100da0c48c4Sopenharmony_ci <constant value> 101da0c48c4Sopenharmony_ci [c4] parameter 'z' 102da0c48c4Sopenharmony_ci <constant value> 103da0c48c4Sopenharmony_ci [cb] function 'main'@400400 104da0c48c4Sopenharmony_ci frame_base: {call_frame_cfa {bregx(7,8)}} 105da0c48c4Sopenharmony_ci [ec] parameter 'x' 106da0c48c4Sopenharmony_ci [400400,400408) {reg5} 107da0c48c4Sopenharmony_ci [400408,400421) {reg3} 108da0c48c4Sopenharmony_ci [400421,400423) {GNU_entry_value(1) {reg5}, stack_value} 109da0c48c4Sopenharmony_ci [f9] parameter 'argv' 110da0c48c4Sopenharmony_ci [400400,400408) {reg4} 111da0c48c4Sopenharmony_ci [400408,400423) {GNU_entry_value(1) {reg4}, stack_value} 112da0c48c4Sopenharmony_ciEOF 113da0c48c4Sopenharmony_ci 114da0c48c4Sopenharmony_citestrun_compare ${abs_top_builddir}/tests/varlocs -e testfile_implicit_pointer <<\EOF 115da0c48c4Sopenharmony_cimodule 'testfile_implicit_pointer' 116da0c48c4Sopenharmony_ci[b] CU 'implicit_pointer.c'@0 117da0c48c4Sopenharmony_ci [29] function 'foo'@400500 118da0c48c4Sopenharmony_ci frame_base: {call_frame_cfa {bregx(7,8)}} 119da0c48c4Sopenharmony_ci [4a] parameter 'i' 120da0c48c4Sopenharmony_ci [400500,400503) {reg5} 121da0c48c4Sopenharmony_ci [55] variable 'p' 122da0c48c4Sopenharmony_ci [400500,400503) {GNU_implicit_pointer([4a],0) {reg5}} 123da0c48c4Sopenharmony_ci [73] function 'main'@400400 124da0c48c4Sopenharmony_ci frame_base: {call_frame_cfa {bregx(7,8)}} 125da0c48c4Sopenharmony_ciEOF 126da0c48c4Sopenharmony_ci 127da0c48c4Sopenharmony_ci# Multi CU DWARF5. See run-dwarf-ranges.sh. 128da0c48c4Sopenharmony_citestfiles testfileranges5.debug 129da0c48c4Sopenharmony_citestrun_compare ${abs_top_builddir}/tests/varlocs --debug -e testfileranges5.debug <<\EOF 130da0c48c4Sopenharmony_cimodule 'testfileranges5.debug' 131da0c48c4Sopenharmony_ci[c] CU 'hello.c'@0 132da0c48c4Sopenharmony_ci [2a] function 'no_say'@401160 133da0c48c4Sopenharmony_ci frame_base: {call_frame_cfa {...}} 134da0c48c4Sopenharmony_ci [4a] parameter 'prefix' 135da0c48c4Sopenharmony_ci [401160,401169) {reg5} 136da0c48c4Sopenharmony_ci [401169,40116a) {entry_value(1) {reg5}, stack_value} 137da0c48c4Sopenharmony_ci [40116a,401175) {reg5} 138da0c48c4Sopenharmony_ci [401175,40117a) {entry_value(1) {reg5}, stack_value} 139da0c48c4Sopenharmony_ci [59] variable 'world' 140da0c48c4Sopenharmony_ci [401160,40117a) {addr(0x402004), stack_value} 141da0c48c4Sopenharmony_ci [bd] function 'main'@401050 142da0c48c4Sopenharmony_ci frame_base: {call_frame_cfa {...}} 143da0c48c4Sopenharmony_ci [dd] parameter 'argc' 144da0c48c4Sopenharmony_ci [401050,401062) {reg5} 145da0c48c4Sopenharmony_ci [401062,401067) {entry_value(1) {reg5}, stack_value} 146da0c48c4Sopenharmony_ci [ec] parameter 'argv' 147da0c48c4Sopenharmony_ci [401050,401066) {reg4} 148da0c48c4Sopenharmony_ci [401066,401067) {entry_value(1) {reg4}, stack_value} 149da0c48c4Sopenharmony_ci [fb] inlined function 'subject'@401053 150da0c48c4Sopenharmony_ci [117] parameter 'count' 151da0c48c4Sopenharmony_ci [401053,40105f) {reg5} 152da0c48c4Sopenharmony_ci [120] parameter 'word' 153da0c48c4Sopenharmony_ci [401053,40105f) {reg0} 154da0c48c4Sopenharmony_ci [168] function 'subject'@401150 155da0c48c4Sopenharmony_ci frame_base: {call_frame_cfa {...}} 156da0c48c4Sopenharmony_ci [183] parameter 'word' 157da0c48c4Sopenharmony_ci [401150,401160) {reg5} 158da0c48c4Sopenharmony_ci [18a] parameter 'count' 159da0c48c4Sopenharmony_ci [401150,401160) {reg4} 160da0c48c4Sopenharmony_cimodule 'testfileranges5.debug' 161da0c48c4Sopenharmony_ci[1ab] CU 'world.c'@401180 162da0c48c4Sopenharmony_ci [1cd] function 'no_main'@4011d0 163da0c48c4Sopenharmony_ci frame_base: {call_frame_cfa {...}} 164da0c48c4Sopenharmony_ci [1ef] parameter 'argc' 165da0c48c4Sopenharmony_ci [4011d0,4011e2) {reg5} 166da0c48c4Sopenharmony_ci [4011e2,4011e7) {entry_value(1) {reg5}, stack_value} 167da0c48c4Sopenharmony_ci [1fe] parameter 'argv' 168da0c48c4Sopenharmony_ci [4011d0,4011e6) {reg4} 169da0c48c4Sopenharmony_ci [4011e6,4011e7) {entry_value(1) {reg4}, stack_value} 170da0c48c4Sopenharmony_ci [20d] inlined function 'no_subject'@4011d3 171da0c48c4Sopenharmony_ci [229] parameter 'count' 172da0c48c4Sopenharmony_ci [4011d3,4011df) {reg5} 173da0c48c4Sopenharmony_ci [232] parameter 'word' 174da0c48c4Sopenharmony_ci [4011d3,4011df) {reg0} 175da0c48c4Sopenharmony_ci [28d] function 'say'@401180 176da0c48c4Sopenharmony_ci frame_base: {call_frame_cfa {...}} 177da0c48c4Sopenharmony_ci [2af] parameter 'prefix' 178da0c48c4Sopenharmony_ci [401180,40118e) {reg5} 179da0c48c4Sopenharmony_ci [40118e,40119c) {reg3} 180da0c48c4Sopenharmony_ci [40119c,4011a7) {entry_value(1) {reg5}, stack_value} 181da0c48c4Sopenharmony_ci [4011a7,4011b5) {reg3} 182da0c48c4Sopenharmony_ci [4011b5,4011c0) {entry_value(1) {reg5}, stack_value} 183da0c48c4Sopenharmony_ci [2be] variable 'world' 184da0c48c4Sopenharmony_ci [401193,40119b) {reg0} 185da0c48c4Sopenharmony_ci [4011a7,4011b4) {reg0} 186da0c48c4Sopenharmony_ci [2ce] inlined function 'happy'@40119b 187da0c48c4Sopenharmony_ci [2e6] parameter 'w' 188da0c48c4Sopenharmony_ci [4011a7,4011b4) {reg0} 189da0c48c4Sopenharmony_ci [2ef] inlined function 'sad'@40119b 190da0c48c4Sopenharmony_ci [303] parameter 'c' 191da0c48c4Sopenharmony_ci [40119b,4011a6) {reg0} 192da0c48c4Sopenharmony_ci [4011a6,4011a7) {entry_value(1) {reg5}} 193da0c48c4Sopenharmony_ci [4011b4,4011bf) {reg0} 194da0c48c4Sopenharmony_ci [36b] function 'no_subject'@4011c0 195da0c48c4Sopenharmony_ci frame_base: {call_frame_cfa {...}} 196da0c48c4Sopenharmony_ci [386] parameter 'word' 197da0c48c4Sopenharmony_ci [4011c0,4011d0) {reg5} 198da0c48c4Sopenharmony_ci [38d] parameter 'count' 199da0c48c4Sopenharmony_ci [4011c0,4011d0) {reg4} 200da0c48c4Sopenharmony_ciEOF 201da0c48c4Sopenharmony_ci 202da0c48c4Sopenharmony_ci# Multi CU Split DWARF5. See run-dwarf-ranges.sh. 203da0c48c4Sopenharmony_ci# Note that the DIE numbers change, but the actual location addresses are 204da0c48c4Sopenharmony_ci# the same as above, even though the representation is totally different. 205da0c48c4Sopenharmony_citestfiles testfilesplitranges5.debug 206da0c48c4Sopenharmony_citestfiles testfile-ranges-hello5.dwo testfile-ranges-world5.dwo 207da0c48c4Sopenharmony_citestrun_compare ${abs_top_builddir}/tests/varlocs --debug -e testfilesplitranges5.debug <<\EOF 208da0c48c4Sopenharmony_cimodule 'testfilesplitranges5.debug' 209da0c48c4Sopenharmony_ci[14] CU 'hello.c' 210da0c48c4Sopenharmony_ci [1d] function 'no_say'@401160 211da0c48c4Sopenharmony_ci frame_base: {call_frame_cfa {...}} 212da0c48c4Sopenharmony_ci [33] parameter 'prefix' 213da0c48c4Sopenharmony_ci [401160,401169) {reg5} 214da0c48c4Sopenharmony_ci [401169,40116a) {entry_value(1) {reg5}, stack_value} 215da0c48c4Sopenharmony_ci [40116a,401175) {reg5} 216da0c48c4Sopenharmony_ci [401175,40117a) {entry_value(1) {reg5}, stack_value} 217da0c48c4Sopenharmony_ci [3c] variable 'world' 218da0c48c4Sopenharmony_ci [401160,40117a) {addr: 0x402004, stack_value} 219da0c48c4Sopenharmony_ci [7e] function 'main'@401050 220da0c48c4Sopenharmony_ci frame_base: {call_frame_cfa {...}} 221da0c48c4Sopenharmony_ci [94] parameter 'argc' 222da0c48c4Sopenharmony_ci [401050,401062) {reg5} 223da0c48c4Sopenharmony_ci [401062,401067) {entry_value(1) {reg5}, stack_value} 224da0c48c4Sopenharmony_ci [9d] parameter 'argv' 225da0c48c4Sopenharmony_ci [401050,401066) {reg4} 226da0c48c4Sopenharmony_ci [401066,401067) {entry_value(1) {reg4}, stack_value} 227da0c48c4Sopenharmony_ci [a6] inlined function 'subject'@401053 228da0c48c4Sopenharmony_ci [bb] parameter 'count' 229da0c48c4Sopenharmony_ci [401053,40105f) {reg5} 230da0c48c4Sopenharmony_ci [c1] parameter 'word' 231da0c48c4Sopenharmony_ci [401053,40105f) {reg0} 232da0c48c4Sopenharmony_ci [f6] function 'subject'@401150 233da0c48c4Sopenharmony_ci frame_base: {call_frame_cfa {...}} 234da0c48c4Sopenharmony_ci [10a] parameter 'word' 235da0c48c4Sopenharmony_ci [401150,401160) {reg5} 236da0c48c4Sopenharmony_ci [111] parameter 'count' 237da0c48c4Sopenharmony_ci [401150,401160) {reg4} 238da0c48c4Sopenharmony_cimodule 'testfilesplitranges5.debug' 239da0c48c4Sopenharmony_ci[14] CU 'world.c' 240da0c48c4Sopenharmony_ci [1d] function 'no_main'@4011d0 241da0c48c4Sopenharmony_ci frame_base: {call_frame_cfa {...}} 242da0c48c4Sopenharmony_ci [35] parameter 'argc' 243da0c48c4Sopenharmony_ci [4011d0,4011e2) {reg5} 244da0c48c4Sopenharmony_ci [4011e2,4011e7) {entry_value(1) {reg5}, stack_value} 245da0c48c4Sopenharmony_ci [3e] parameter 'argv' 246da0c48c4Sopenharmony_ci [4011d0,4011e6) {reg4} 247da0c48c4Sopenharmony_ci [4011e6,4011e7) {entry_value(1) {reg4}, stack_value} 248da0c48c4Sopenharmony_ci [47] inlined function 'no_subject'@4011d3 249da0c48c4Sopenharmony_ci [5c] parameter 'count' 250da0c48c4Sopenharmony_ci [4011d3,4011df) {reg5} 251da0c48c4Sopenharmony_ci [62] parameter 'word' 252da0c48c4Sopenharmony_ci [4011d3,4011df) {reg0} 253da0c48c4Sopenharmony_ci [a7] function 'say'@401180 254da0c48c4Sopenharmony_ci frame_base: {call_frame_cfa {...}} 255da0c48c4Sopenharmony_ci [c2] parameter 'prefix' 256da0c48c4Sopenharmony_ci [401180,40118e) {reg5} 257da0c48c4Sopenharmony_ci [40118e,40119c) {reg3} 258da0c48c4Sopenharmony_ci [40119c,4011a7) {entry_value(1) {reg5}, stack_value} 259da0c48c4Sopenharmony_ci [4011a7,4011b5) {reg3} 260da0c48c4Sopenharmony_ci [4011b5,4011c0) {entry_value(1) {reg5}, stack_value} 261da0c48c4Sopenharmony_ci [cb] variable 'world' 262da0c48c4Sopenharmony_ci [401193,40119b) {reg0} 263da0c48c4Sopenharmony_ci [4011a7,4011b4) {reg0} 264da0c48c4Sopenharmony_ci [d5] inlined function 'happy'@40119b 265da0c48c4Sopenharmony_ci [e3] parameter 'w' 266da0c48c4Sopenharmony_ci [4011a7,4011b4) {reg0} 267da0c48c4Sopenharmony_ci [e9] inlined function 'sad'@40119b 268da0c48c4Sopenharmony_ci [f3] parameter 'c' 269da0c48c4Sopenharmony_ci [40119b,4011a6) {reg0} 270da0c48c4Sopenharmony_ci [4011a6,4011a7) {entry_value(1) {reg5}} 271da0c48c4Sopenharmony_ci [4011b4,4011bf) {reg0} 272da0c48c4Sopenharmony_ci [147] function 'no_subject'@4011c0 273da0c48c4Sopenharmony_ci frame_base: {call_frame_cfa {...}} 274da0c48c4Sopenharmony_ci [15b] parameter 'word' 275da0c48c4Sopenharmony_ci [4011c0,4011d0) {reg5} 276da0c48c4Sopenharmony_ci [162] parameter 'count' 277da0c48c4Sopenharmony_ci [4011c0,4011d0) {reg4} 278da0c48c4Sopenharmony_ciEOF 279da0c48c4Sopenharmony_ci 280da0c48c4Sopenharmony_ci# GNU DebugFissuon Multi CU Split DWARF. See run-dwarf-ranges.sh. 281da0c48c4Sopenharmony_citestfiles testfilesplitranges4.debug 282da0c48c4Sopenharmony_citestfiles testfile-ranges-hello.dwo testfile-ranges-world.dwo 283da0c48c4Sopenharmony_citestrun_compare ${abs_top_builddir}/tests/varlocs --debug -e testfilesplitranges4.debug <<\EOF 284da0c48c4Sopenharmony_cimodule 'testfilesplitranges4.debug' 285da0c48c4Sopenharmony_ci[b] CU 'hello.c' 286da0c48c4Sopenharmony_ci [18] function 'no_say'@4004f0 287da0c48c4Sopenharmony_ci frame_base: {call_frame_cfa {...}} 288da0c48c4Sopenharmony_ci [2f] parameter 'prefix' 289da0c48c4Sopenharmony_ci [4004f0,4004fa) {reg5} 290da0c48c4Sopenharmony_ci [4004fa,4004ff) {GNU_entry_value(1) {reg5}, stack_value} 291da0c48c4Sopenharmony_ci [3b] variable 'world' 292da0c48c4Sopenharmony_ci <no value> 293da0c48c4Sopenharmony_ci [60] function 'main'@4003e0 294da0c48c4Sopenharmony_ci frame_base: {call_frame_cfa {...}} 295da0c48c4Sopenharmony_ci [77] parameter 'argc' 296da0c48c4Sopenharmony_ci [4003e0,4003f2) {reg5} 297da0c48c4Sopenharmony_ci [4003f2,4003f7) {GNU_entry_value(1) {reg5}, stack_value} 298da0c48c4Sopenharmony_ci [83] parameter 'argv' 299da0c48c4Sopenharmony_ci [4003e0,4003f6) {reg4} 300da0c48c4Sopenharmony_ci [4003f6,1004003f5) {GNU_entry_value(1) {reg4}, stack_value} 301da0c48c4Sopenharmony_ci [8f] inlined function 'subject'@4003e3 302da0c48c4Sopenharmony_ci [a3] parameter 'count' 303da0c48c4Sopenharmony_ci [4003e3,4003ef) {reg5} 304da0c48c4Sopenharmony_ci [ac] parameter 'word' 305da0c48c4Sopenharmony_ci [4003e3,4003ef) {reg0} 306da0c48c4Sopenharmony_ci [e7] function 'subject'@4004e0 307da0c48c4Sopenharmony_ci frame_base: {call_frame_cfa {...}} 308da0c48c4Sopenharmony_ci [fb] parameter 'word' 309da0c48c4Sopenharmony_ci [4004e0,4004f0) {reg5} 310da0c48c4Sopenharmony_ci [102] parameter 'count' 311da0c48c4Sopenharmony_ci [4004e0,4004f0) {reg4} 312da0c48c4Sopenharmony_cimodule 'testfilesplitranges4.debug' 313da0c48c4Sopenharmony_ci[b] CU 'world.c' 314da0c48c4Sopenharmony_ci [18] function 'no_main'@400550 315da0c48c4Sopenharmony_ci frame_base: {call_frame_cfa {...}} 316da0c48c4Sopenharmony_ci [2f] parameter 'argc' 317da0c48c4Sopenharmony_ci [400550,400562) {reg5} 318da0c48c4Sopenharmony_ci [400562,400567) {GNU_entry_value(1) {reg5}, stack_value} 319da0c48c4Sopenharmony_ci [3b] parameter 'argv' 320da0c48c4Sopenharmony_ci [400550,400566) {reg4} 321da0c48c4Sopenharmony_ci [400566,100400565) {GNU_entry_value(1) {reg4}, stack_value} 322da0c48c4Sopenharmony_ci [47] inlined function 'no_subject'@400553 323da0c48c4Sopenharmony_ci [5b] parameter 'count' 324da0c48c4Sopenharmony_ci [400553,40055f) {reg5} 325da0c48c4Sopenharmony_ci [64] parameter 'word' 326da0c48c4Sopenharmony_ci [400553,40055f) {reg0} 327da0c48c4Sopenharmony_ci [af] function 'say'@400500 328da0c48c4Sopenharmony_ci frame_base: {call_frame_cfa {...}} 329da0c48c4Sopenharmony_ci [c9] parameter 'prefix' 330da0c48c4Sopenharmony_ci [400500,40050e) {reg5} 331da0c48c4Sopenharmony_ci [40050e,40051c) {reg3} 332da0c48c4Sopenharmony_ci [40051c,400527) {GNU_entry_value(1) {reg5}, stack_value} 333da0c48c4Sopenharmony_ci [400527,400535) {reg3} 334da0c48c4Sopenharmony_ci [400535,400540) {GNU_entry_value(1) {reg5}, stack_value} 335da0c48c4Sopenharmony_ci [d5] variable 'world' 336da0c48c4Sopenharmony_ci [400513,40051b) {reg0} 337da0c48c4Sopenharmony_ci [400527,400534) {reg0} 338da0c48c4Sopenharmony_ci [e1] inlined function 'happy'@40051c 339da0c48c4Sopenharmony_ci [f1] parameter 'w' 340da0c48c4Sopenharmony_ci [400527,400534) {reg0} 341da0c48c4Sopenharmony_ci [fa] inlined function 'sad'@40051c 342da0c48c4Sopenharmony_ci [106] parameter 'c' 343da0c48c4Sopenharmony_ci [40051b,400526) {reg0} 344da0c48c4Sopenharmony_ci [400526,400527) {GNU_entry_value(1) {reg5}} 345da0c48c4Sopenharmony_ci [400534,40053f) {reg0} 346da0c48c4Sopenharmony_ci [15c] function 'no_subject'@400540 347da0c48c4Sopenharmony_ci frame_base: {call_frame_cfa {...}} 348da0c48c4Sopenharmony_ci [170] parameter 'word' 349da0c48c4Sopenharmony_ci [400540,400550) {reg5} 350da0c48c4Sopenharmony_ci [177] parameter 'count' 351da0c48c4Sopenharmony_ci [400540,400550) {reg4} 352da0c48c4Sopenharmony_ciEOF 353da0c48c4Sopenharmony_ci 354da0c48c4Sopenharmony_ci# DW_OP_addrx and DW_OP_constx testcases. 355da0c48c4Sopenharmony_ci# 356da0c48c4Sopenharmony_ci# int i, j, k; 357da0c48c4Sopenharmony_ci# __thread int l, m, n; 358da0c48c4Sopenharmony_ci# 359da0c48c4Sopenharmony_ci# int main () 360da0c48c4Sopenharmony_ci# { 361da0c48c4Sopenharmony_ci# int r1 = i + j + k; 362da0c48c4Sopenharmony_ci# int r2 = l + m + n; 363da0c48c4Sopenharmony_ci# int res = r1 + r2; 364da0c48c4Sopenharmony_ci# 365da0c48c4Sopenharmony_ci# return res; 366da0c48c4Sopenharmony_ci# } 367da0c48c4Sopenharmony_ci# 368da0c48c4Sopenharmony_ci# gcc -O2 -gdwarf-5 -gsplit-dwarf -o addrx_constx-5.o -c addrx_constx.c 369da0c48c4Sopenharmony_ci# gcc -O2 -gdwarf-5 -gsplit-dwarf -o testfile-addrx_constx-5 addrx_constx-5.o 370da0c48c4Sopenharmony_ci# gcc -O2 -gdwarf-4 -gsplit-dwarf -o addrx_constx-4.o -c addrx_constx.c 371da0c48c4Sopenharmony_ci# gcc -O2 -gdwarf-4 -gsplit-dwarf -o testfile-addrx_constx-4 addrx_constx-4.o 372da0c48c4Sopenharmony_ci 373da0c48c4Sopenharmony_citestfiles testfile-addrx_constx-5 addrx_constx-5.dwo 374da0c48c4Sopenharmony_citestrun_compare ${abs_top_builddir}/tests/varlocs --exprlocs -e testfile-addrx_constx-5 <<\EOF 375da0c48c4Sopenharmony_cimodule 'testfile-addrx_constx-5' 376da0c48c4Sopenharmony_ci[14] CU 'addrx_constx.c' 377da0c48c4Sopenharmony_ci producer (strx) 378da0c48c4Sopenharmony_ci language (data1) 379da0c48c4Sopenharmony_ci name (strx) 380da0c48c4Sopenharmony_ci comp_dir (strx) 381da0c48c4Sopenharmony_ci [19] variable "i" 382da0c48c4Sopenharmony_ci name (string) 383da0c48c4Sopenharmony_ci decl_file (implicit_const) 384da0c48c4Sopenharmony_ci decl_line (data1) 385da0c48c4Sopenharmony_ci decl_column (data1) 386da0c48c4Sopenharmony_ci type (ref4) 387da0c48c4Sopenharmony_ci external (flag_present) 388da0c48c4Sopenharmony_ci location (exprloc) {addr: 0x404038} 389da0c48c4Sopenharmony_ci [25] base_type "int" 390da0c48c4Sopenharmony_ci byte_size (data1) 391da0c48c4Sopenharmony_ci encoding (data1) 392da0c48c4Sopenharmony_ci name (string) 393da0c48c4Sopenharmony_ci [2c] variable "j" 394da0c48c4Sopenharmony_ci name (string) 395da0c48c4Sopenharmony_ci decl_file (implicit_const) 396da0c48c4Sopenharmony_ci decl_line (data1) 397da0c48c4Sopenharmony_ci decl_column (data1) 398da0c48c4Sopenharmony_ci type (ref4) 399da0c48c4Sopenharmony_ci external (flag_present) 400da0c48c4Sopenharmony_ci location (exprloc) {addr: 0x404034} 401da0c48c4Sopenharmony_ci [38] variable "k" 402da0c48c4Sopenharmony_ci name (string) 403da0c48c4Sopenharmony_ci decl_file (implicit_const) 404da0c48c4Sopenharmony_ci decl_line (data1) 405da0c48c4Sopenharmony_ci decl_column (data1) 406da0c48c4Sopenharmony_ci type (ref4) 407da0c48c4Sopenharmony_ci external (flag_present) 408da0c48c4Sopenharmony_ci location (exprloc) {addr: 0x40403c} 409da0c48c4Sopenharmony_ci [44] variable "l" 410da0c48c4Sopenharmony_ci name (string) 411da0c48c4Sopenharmony_ci decl_file (implicit_const) 412da0c48c4Sopenharmony_ci decl_line (data1) 413da0c48c4Sopenharmony_ci decl_column (data1) 414da0c48c4Sopenharmony_ci type (ref4) 415da0c48c4Sopenharmony_ci external (flag_present) 416da0c48c4Sopenharmony_ci location (exprloc) {const: 0x403e10, form_tls_address} 417da0c48c4Sopenharmony_ci [51] variable "m" 418da0c48c4Sopenharmony_ci name (string) 419da0c48c4Sopenharmony_ci decl_file (implicit_const) 420da0c48c4Sopenharmony_ci decl_line (data1) 421da0c48c4Sopenharmony_ci decl_column (data1) 422da0c48c4Sopenharmony_ci type (ref4) 423da0c48c4Sopenharmony_ci external (flag_present) 424da0c48c4Sopenharmony_ci location (exprloc) {const: 0x403e0c, form_tls_address} 425da0c48c4Sopenharmony_ci [5e] variable "n" 426da0c48c4Sopenharmony_ci name (string) 427da0c48c4Sopenharmony_ci decl_file (implicit_const) 428da0c48c4Sopenharmony_ci decl_line (data1) 429da0c48c4Sopenharmony_ci decl_column (data1) 430da0c48c4Sopenharmony_ci type (ref4) 431da0c48c4Sopenharmony_ci external (flag_present) 432da0c48c4Sopenharmony_ci location (exprloc) {const: 0x403e08, form_tls_address} 433da0c48c4Sopenharmony_ci [6b] subprogram "main" 434da0c48c4Sopenharmony_ci external (flag_present) 435da0c48c4Sopenharmony_ci name (strx) 436da0c48c4Sopenharmony_ci decl_file (data1) 437da0c48c4Sopenharmony_ci decl_line (data1) 438da0c48c4Sopenharmony_ci decl_column (data1) 439da0c48c4Sopenharmony_ci type (ref4) 440da0c48c4Sopenharmony_ci low_pc (addrx) 441da0c48c4Sopenharmony_ci high_pc (data8) 442da0c48c4Sopenharmony_ci frame_base (exprloc) {call_frame_cfa {bregx(7,8)}} 443da0c48c4Sopenharmony_ci call_all_calls (flag_present) 444da0c48c4Sopenharmony_ci [7f] variable "r1" 445da0c48c4Sopenharmony_ci name (string) 446da0c48c4Sopenharmony_ci decl_file (implicit_const) 447da0c48c4Sopenharmony_ci decl_line (data1) 448da0c48c4Sopenharmony_ci decl_column (implicit_const) 449da0c48c4Sopenharmony_ci type (ref4) 450da0c48c4Sopenharmony_ci location (exprloc) {addr: 0x404038, deref_size(4), addr: 0x404034, deref_size(4), plus, addr: 0x40403c, deref_size(4), plus, stack_value} 451da0c48c4Sopenharmony_ci [98] variable "r2" 452da0c48c4Sopenharmony_ci name (string) 453da0c48c4Sopenharmony_ci decl_file (implicit_const) 454da0c48c4Sopenharmony_ci decl_line (data1) 455da0c48c4Sopenharmony_ci decl_column (implicit_const) 456da0c48c4Sopenharmony_ci type (ref4) 457da0c48c4Sopenharmony_ci location (exprloc) {form_tls_address, const: 0x403e10, deref_size(4), form_tls_address, const: 0x403e0c, deref_size(4), plus, form_tls_address, const: 0x403e08, deref_size(4), plus, stack_value} 458da0c48c4Sopenharmony_ci [b4] variable "res" 459da0c48c4Sopenharmony_ci name (string) 460da0c48c4Sopenharmony_ci decl_file (implicit_const) 461da0c48c4Sopenharmony_ci decl_line (data1) 462da0c48c4Sopenharmony_ci decl_column (implicit_const) 463da0c48c4Sopenharmony_ci type (ref4) 464da0c48c4Sopenharmony_ci location (exprloc) {addr: 0x404038, deref_size(4), form_tls_address, const: 0x403e08, deref_size(4), plus, form_tls_address, const: 0x403e0c, deref_size(4), plus, form_tls_address, const: 0x403e10, deref_size(4), plus, addr: 0x404034, deref_size(4), plus, addr: 0x40403c, deref_size(4), plus, stack_value} 465da0c48c4Sopenharmony_ciEOF 466da0c48c4Sopenharmony_ci 467da0c48c4Sopenharmony_citestfiles testfile-addrx_constx-4 addrx_constx-4.dwo 468da0c48c4Sopenharmony_citestrun_compare ${abs_top_builddir}/tests/varlocs --exprlocs -e testfile-addrx_constx-4 <<\EOF 469da0c48c4Sopenharmony_cimodule 'testfile-addrx_constx-4' 470da0c48c4Sopenharmony_ci[b] CU 'addrx_constx.c' 471da0c48c4Sopenharmony_ci producer (GNU_str_index) 472da0c48c4Sopenharmony_ci language (data1) 473da0c48c4Sopenharmony_ci name (GNU_str_index) 474da0c48c4Sopenharmony_ci comp_dir (GNU_str_index) 475da0c48c4Sopenharmony_ci GNU_dwo_id (data8) 476da0c48c4Sopenharmony_ci [18] variable "i" 477da0c48c4Sopenharmony_ci name (string) 478da0c48c4Sopenharmony_ci decl_file (data1) 479da0c48c4Sopenharmony_ci decl_line (data1) 480da0c48c4Sopenharmony_ci decl_column (data1) 481da0c48c4Sopenharmony_ci type (ref4) 482da0c48c4Sopenharmony_ci external (flag_present) 483da0c48c4Sopenharmony_ci location (exprloc) {addr: 0x404038} 484da0c48c4Sopenharmony_ci [25] base_type "int" 485da0c48c4Sopenharmony_ci byte_size (data1) 486da0c48c4Sopenharmony_ci encoding (data1) 487da0c48c4Sopenharmony_ci name (string) 488da0c48c4Sopenharmony_ci [2c] variable "j" 489da0c48c4Sopenharmony_ci name (string) 490da0c48c4Sopenharmony_ci decl_file (data1) 491da0c48c4Sopenharmony_ci decl_line (data1) 492da0c48c4Sopenharmony_ci decl_column (data1) 493da0c48c4Sopenharmony_ci type (ref4) 494da0c48c4Sopenharmony_ci external (flag_present) 495da0c48c4Sopenharmony_ci location (exprloc) {addr: 0x404034} 496da0c48c4Sopenharmony_ci [39] variable "k" 497da0c48c4Sopenharmony_ci name (string) 498da0c48c4Sopenharmony_ci decl_file (data1) 499da0c48c4Sopenharmony_ci decl_line (data1) 500da0c48c4Sopenharmony_ci decl_column (data1) 501da0c48c4Sopenharmony_ci type (ref4) 502da0c48c4Sopenharmony_ci external (flag_present) 503da0c48c4Sopenharmony_ci location (exprloc) {addr: 0x40403c} 504da0c48c4Sopenharmony_ci [46] variable "l" 505da0c48c4Sopenharmony_ci name (string) 506da0c48c4Sopenharmony_ci decl_file (data1) 507da0c48c4Sopenharmony_ci decl_line (data1) 508da0c48c4Sopenharmony_ci decl_column (data1) 509da0c48c4Sopenharmony_ci type (ref4) 510da0c48c4Sopenharmony_ci external (flag_present) 511da0c48c4Sopenharmony_ci location (exprloc) {const: 0x403e10, GNU_push_tls_address} 512da0c48c4Sopenharmony_ci [54] variable "m" 513da0c48c4Sopenharmony_ci name (string) 514da0c48c4Sopenharmony_ci decl_file (data1) 515da0c48c4Sopenharmony_ci decl_line (data1) 516da0c48c4Sopenharmony_ci decl_column (data1) 517da0c48c4Sopenharmony_ci type (ref4) 518da0c48c4Sopenharmony_ci external (flag_present) 519da0c48c4Sopenharmony_ci location (exprloc) {const: 0x403e0c, GNU_push_tls_address} 520da0c48c4Sopenharmony_ci [62] variable "n" 521da0c48c4Sopenharmony_ci name (string) 522da0c48c4Sopenharmony_ci decl_file (data1) 523da0c48c4Sopenharmony_ci decl_line (data1) 524da0c48c4Sopenharmony_ci decl_column (data1) 525da0c48c4Sopenharmony_ci type (ref4) 526da0c48c4Sopenharmony_ci external (flag_present) 527da0c48c4Sopenharmony_ci location (exprloc) {const: 0x403e08, GNU_push_tls_address} 528da0c48c4Sopenharmony_ci [70] subprogram "main" 529da0c48c4Sopenharmony_ci external (flag_present) 530da0c48c4Sopenharmony_ci name (GNU_str_index) 531da0c48c4Sopenharmony_ci decl_file (data1) 532da0c48c4Sopenharmony_ci decl_line (data1) 533da0c48c4Sopenharmony_ci decl_column (data1) 534da0c48c4Sopenharmony_ci type (ref4) 535da0c48c4Sopenharmony_ci low_pc (GNU_addr_index) 536da0c48c4Sopenharmony_ci high_pc (data8) 537da0c48c4Sopenharmony_ci frame_base (exprloc) {call_frame_cfa {bregx(7,8)}} 538da0c48c4Sopenharmony_ci GNU_all_call_sites (flag_present) 539da0c48c4Sopenharmony_ci [84] variable "r1" 540da0c48c4Sopenharmony_ci name (string) 541da0c48c4Sopenharmony_ci decl_file (data1) 542da0c48c4Sopenharmony_ci decl_line (data1) 543da0c48c4Sopenharmony_ci decl_column (data1) 544da0c48c4Sopenharmony_ci type (ref4) 545da0c48c4Sopenharmony_ci location (exprloc) {addr: 0x404038, deref_size(4), addr: 0x404034, deref_size(4), plus, addr: 0x40403c, deref_size(4), plus, stack_value} 546da0c48c4Sopenharmony_ci [9f] variable "r2" 547da0c48c4Sopenharmony_ci name (string) 548da0c48c4Sopenharmony_ci decl_file (data1) 549da0c48c4Sopenharmony_ci decl_line (data1) 550da0c48c4Sopenharmony_ci decl_column (data1) 551da0c48c4Sopenharmony_ci type (ref4) 552da0c48c4Sopenharmony_ci location (exprloc) {GNU_push_tls_address, const: 0x403e10, deref_size(4), GNU_push_tls_address, const: 0x403e0c, deref_size(4), plus, GNU_push_tls_address, const: 0x403e08, deref_size(4), plus, stack_value} 553da0c48c4Sopenharmony_ci [bd] variable "res" 554da0c48c4Sopenharmony_ci name (string) 555da0c48c4Sopenharmony_ci decl_file (data1) 556da0c48c4Sopenharmony_ci decl_line (data1) 557da0c48c4Sopenharmony_ci decl_column (data1) 558da0c48c4Sopenharmony_ci type (ref4) 559da0c48c4Sopenharmony_ci location (exprloc) {addr: 0x404038, deref_size(4), GNU_push_tls_address, const: 0x403e08, deref_size(4), plus, GNU_push_tls_address, const: 0x403e0c, deref_size(4), plus, GNU_push_tls_address, const: 0x403e10, deref_size(4), plus, addr: 0x404034, deref_size(4), plus, addr: 0x40403c, deref_size(4), plus, stack_value} 560da0c48c4Sopenharmony_ciEOF 561da0c48c4Sopenharmony_ci 562da0c48c4Sopenharmony_ci# See run-readelf-loc.sh 563da0c48c4Sopenharmony_citestfiles testfile-splitdwarf4-not-split4.debug 564da0c48c4Sopenharmony_citestfiles splitdwarf4-not-split4.dwo 565da0c48c4Sopenharmony_ci 566da0c48c4Sopenharmony_citestrun_compare ${abs_top_builddir}/tests/varlocs --debug -e testfile-splitdwarf4-not-split4.debug <<\EOF 567da0c48c4Sopenharmony_cimodule 'testfile-splitdwarf4-not-split4.debug' 568da0c48c4Sopenharmony_ci[b] CU 'splitdwarf4-not-split4.c' 569da0c48c4Sopenharmony_ci [18] function 'main'@401050 570da0c48c4Sopenharmony_ci frame_base: {call_frame_cfa {...}} 571da0c48c4Sopenharmony_ci [30] parameter 'argc' 572da0c48c4Sopenharmony_ci [401050,40106e) {reg5} 573da0c48c4Sopenharmony_ci [40106e,401086) {reg12} 574da0c48c4Sopenharmony_ci [401086,401095) {GNU_entry_value(1) {reg5}, stack_value} 575da0c48c4Sopenharmony_ci [401095,40109c) {reg5} 576da0c48c4Sopenharmony_ci [3d] parameter 'argv' 577da0c48c4Sopenharmony_ci [401050,40106e) {reg4} 578da0c48c4Sopenharmony_ci [40106e,401095) {GNU_entry_value(1) {reg4}, stack_value} 579da0c48c4Sopenharmony_ci [401095,40109c) {reg4} 580da0c48c4Sopenharmony_ci [4a] variable 'i' 581da0c48c4Sopenharmony_ci [401050,40106e) {lit0, stack_value} 582da0c48c4Sopenharmony_ci [401086,40108e) {breg12(0), breg6(0), plus, stack_value} 583da0c48c4Sopenharmony_ci [40108e,401095) {reg0} 584da0c48c4Sopenharmony_ci [401095,40109c) {lit0, stack_value} 585da0c48c4Sopenharmony_ci [58] variable 'p' 586da0c48c4Sopenharmony_ci [401050,40106e) {reg5} 587da0c48c4Sopenharmony_ci [40106e,401090) {reg6} 588da0c48c4Sopenharmony_ci [401095,40109c) {reg5} 589da0c48c4Sopenharmony_cimodule 'testfile-splitdwarf4-not-split4.debug' 590da0c48c4Sopenharmony_ci[3f] CU 'popcount.c'@401180 591da0c48c4Sopenharmony_ci [61] function 'popcount'@401180 592da0c48c4Sopenharmony_ci frame_base: {call_frame_cfa {...}} 593da0c48c4Sopenharmony_ci [83] parameter 'u' 594da0c48c4Sopenharmony_ci [401180,401189) {reg5} 595da0c48c4Sopenharmony_ci [401189,40119b) {reg1} 596da0c48c4Sopenharmony_ci [40119b,40119d) {breg1(0), lit1, shr, stack_value} 597da0c48c4Sopenharmony_ci [40119d,4011a1) {reg1} 598da0c48c4Sopenharmony_ci [91] variable 'c' 599da0c48c4Sopenharmony_ci [401180,401189) {lit0, stack_value} 600da0c48c4Sopenharmony_ci [401189,4011a0) {reg0} 601da0c48c4Sopenharmony_ci [4011a0,4011a1) {lit0, stack_value} 602da0c48c4Sopenharmony_ciEOF 603da0c48c4Sopenharmony_ci 604da0c48c4Sopenharmony_ciexit 0 605