1da0c48c4Sopenharmony_ci#! /bin/sh 2da0c48c4Sopenharmony_ci# Copyright (C) 2018 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 run-readelf-loc.sh 21da0c48c4Sopenharmony_ci 22da0c48c4Sopenharmony_citestfiles testfileloc 23da0c48c4Sopenharmony_ci 24da0c48c4Sopenharmony_ci# Process values as offsets from base addresses and resolve to symbols. 25da0c48c4Sopenharmony_citestrun_compare ${abs_top_builddir}/src/readelf --debug-dump=ranges testfileloc<<\EOF 26da0c48c4Sopenharmony_ci 27da0c48c4Sopenharmony_ciDWARF section [34] '.debug_ranges' at offset 0xd94: 28da0c48c4Sopenharmony_ci 29da0c48c4Sopenharmony_ci CU [ b] base: 0x0000000000400480 <main> 30da0c48c4Sopenharmony_ci [ 0] range 0, 2 31da0c48c4Sopenharmony_ci 0x0000000000400480 <main>.. 32da0c48c4Sopenharmony_ci 0x0000000000400481 <main+0x1> 33da0c48c4Sopenharmony_ci range 5, d 34da0c48c4Sopenharmony_ci 0x0000000000400485 <main+0x5>.. 35da0c48c4Sopenharmony_ci 0x000000000040048c <main+0xc> 36da0c48c4Sopenharmony_ci 37da0c48c4Sopenharmony_ci CU [ e0] base: 0x00000000004004a0 <say> 38da0c48c4Sopenharmony_ci [ 30] range d, f 39da0c48c4Sopenharmony_ci 0x00000000004004ad <say+0xd>.. 40da0c48c4Sopenharmony_ci 0x00000000004004ae <say+0xe> 41da0c48c4Sopenharmony_ci range 12, 1a 42da0c48c4Sopenharmony_ci 0x00000000004004b2 <say+0x12>.. 43da0c48c4Sopenharmony_ci 0x00000000004004b9 <say+0x19> 44da0c48c4Sopenharmony_ciEOF 45da0c48c4Sopenharmony_ci 46da0c48c4Sopenharmony_ci# Don't resolve addresses to symbols. 47da0c48c4Sopenharmony_citestrun_compare ${abs_top_builddir}/src/readelf -N --debug-dump=ranges testfileloc<<\EOF 48da0c48c4Sopenharmony_ci 49da0c48c4Sopenharmony_ciDWARF section [34] '.debug_ranges' at offset 0xd94: 50da0c48c4Sopenharmony_ci 51da0c48c4Sopenharmony_ci CU [ b] base: 0x0000000000400480 52da0c48c4Sopenharmony_ci [ 0] range 0, 2 53da0c48c4Sopenharmony_ci 0x0000000000400480.. 54da0c48c4Sopenharmony_ci 0x0000000000400481 55da0c48c4Sopenharmony_ci range 5, d 56da0c48c4Sopenharmony_ci 0x0000000000400485.. 57da0c48c4Sopenharmony_ci 0x000000000040048c 58da0c48c4Sopenharmony_ci 59da0c48c4Sopenharmony_ci CU [ e0] base: 0x00000000004004a0 60da0c48c4Sopenharmony_ci [ 30] range d, f 61da0c48c4Sopenharmony_ci 0x00000000004004ad.. 62da0c48c4Sopenharmony_ci 0x00000000004004ae 63da0c48c4Sopenharmony_ci range 12, 1a 64da0c48c4Sopenharmony_ci 0x00000000004004b2.. 65da0c48c4Sopenharmony_ci 0x00000000004004b9 66da0c48c4Sopenharmony_ciEOF 67da0c48c4Sopenharmony_ci 68da0c48c4Sopenharmony_ci# Produce "raw" unprocessed content. 69da0c48c4Sopenharmony_citestrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=ranges testfileloc<<\EOF 70da0c48c4Sopenharmony_ci 71da0c48c4Sopenharmony_ciDWARF section [34] '.debug_ranges' at offset 0xd94: 72da0c48c4Sopenharmony_ci 73da0c48c4Sopenharmony_ci CU [ b] base: 0x0000000000400480 74da0c48c4Sopenharmony_ci [ 0] range 0, 2 75da0c48c4Sopenharmony_ci range 5, d 76da0c48c4Sopenharmony_ci 77da0c48c4Sopenharmony_ci CU [ e0] base: 0x00000000004004a0 78da0c48c4Sopenharmony_ci [ 30] range d, f 79da0c48c4Sopenharmony_ci range 12, 1a 80da0c48c4Sopenharmony_ciEOF 81da0c48c4Sopenharmony_ci 82da0c48c4Sopenharmony_ci# .debug_rnglists (DWARF5), see tests/testfile-dwarf-45.source 83da0c48c4Sopenharmony_citestfiles testfile-dwarf-5 84da0c48c4Sopenharmony_citestrun_compare ${abs_top_builddir}/src/readelf --debug-dump=ranges testfile-dwarf-5<<\EOF 85da0c48c4Sopenharmony_ci 86da0c48c4Sopenharmony_ciDWARF section [33] '.debug_rnglists' at offset 0x1d9a: 87da0c48c4Sopenharmony_ciTable at Offset 0x0: 88da0c48c4Sopenharmony_ci 89da0c48c4Sopenharmony_ci Length: 45 90da0c48c4Sopenharmony_ci DWARF version: 5 91da0c48c4Sopenharmony_ci Address size: 8 92da0c48c4Sopenharmony_ci Segment size: 0 93da0c48c4Sopenharmony_ci Offset entries: 0 94da0c48c4Sopenharmony_ci CU [ 218] base: 000000000000000000 95da0c48c4Sopenharmony_ci 96da0c48c4Sopenharmony_ci Offset: c, Index: 0 97da0c48c4Sopenharmony_ci base_address 0x400583 98da0c48c4Sopenharmony_ci 0x0000000000400583 <calc+0x13> 99da0c48c4Sopenharmony_ci offset_pair 0, 2 100da0c48c4Sopenharmony_ci 0x0000000000400583 <calc+0x13>.. 101da0c48c4Sopenharmony_ci 0x0000000000400584 <calc+0x14> 102da0c48c4Sopenharmony_ci offset_pair 5, 15 103da0c48c4Sopenharmony_ci 0x0000000000400588 <calc+0x18>.. 104da0c48c4Sopenharmony_ci 0x0000000000400597 <calc+0x27> 105da0c48c4Sopenharmony_ci end_of_list 106da0c48c4Sopenharmony_ci 107da0c48c4Sopenharmony_ci Offset: 1c, Index: 10 108da0c48c4Sopenharmony_ci start_length 0x400570, 2b 109da0c48c4Sopenharmony_ci 0x0000000000400570 <calc>.. 110da0c48c4Sopenharmony_ci 0x000000000040059a <calc+0x2a> 111da0c48c4Sopenharmony_ci start_length 0x400410, 20 112da0c48c4Sopenharmony_ci 0x0000000000400410 <main>.. 113da0c48c4Sopenharmony_ci 0x000000000040042f <main+0x1f> 114da0c48c4Sopenharmony_ci end_of_list 115da0c48c4Sopenharmony_ci 116da0c48c4Sopenharmony_ciEOF 117da0c48c4Sopenharmony_ci 118da0c48c4Sopenharmony_ci# Same as above, but for DWARF4, note no header, and base address is not 119da0c48c4Sopenharmony_ci# given, but ranges are the same. 120da0c48c4Sopenharmony_citestfiles testfile-dwarf-4 121da0c48c4Sopenharmony_citestrun_compare ${abs_top_builddir}/src/readelf --debug-dump=ranges testfile-dwarf-4<<\EOF 122da0c48c4Sopenharmony_ci 123da0c48c4Sopenharmony_ciDWARF section [32] '.debug_ranges' at offset 0x1f96: 124da0c48c4Sopenharmony_ci 125da0c48c4Sopenharmony_ci CU [ 21c] base: 000000000000000000 126da0c48c4Sopenharmony_ci [ 0] range 400583, 400585 127da0c48c4Sopenharmony_ci 0x0000000000400583 <calc+0x13>.. 128da0c48c4Sopenharmony_ci 0x0000000000400584 <calc+0x14> 129da0c48c4Sopenharmony_ci range 400588, 400598 130da0c48c4Sopenharmony_ci 0x0000000000400588 <calc+0x18>.. 131da0c48c4Sopenharmony_ci 0x0000000000400597 <calc+0x27> 132da0c48c4Sopenharmony_ci [ 30] range 400570, 40059b 133da0c48c4Sopenharmony_ci 0x0000000000400570 <calc>.. 134da0c48c4Sopenharmony_ci 0x000000000040059a <calc+0x2a> 135da0c48c4Sopenharmony_ci range 400410, 400430 136da0c48c4Sopenharmony_ci 0x0000000000400410 <main>.. 137da0c48c4Sopenharmony_ci 0x000000000040042f <main+0x1f> 138da0c48c4Sopenharmony_ciEOF 139da0c48c4Sopenharmony_ci 140da0c48c4Sopenharmony_ci# Now with split dwarf. See tests/testfile-dwarf-45.source. 141da0c48c4Sopenharmony_ci# Note that this will have an offsets table that the .dwo can refer to. 142da0c48c4Sopenharmony_citestfiles testfile-splitdwarf-5 testfile-hello5.dwo testfile-world5.dwo 143da0c48c4Sopenharmony_citestrun_compare ${abs_top_builddir}/src/readelf --debug-dump=ranges testfile-splitdwarf-5<<\EOF 144da0c48c4Sopenharmony_ci 145da0c48c4Sopenharmony_ciDWARF section [35] '.debug_rnglists' at offset 0x393a: 146da0c48c4Sopenharmony_ciTable at Offset 0x0: 147da0c48c4Sopenharmony_ci 148da0c48c4Sopenharmony_ci Length: 53 149da0c48c4Sopenharmony_ci DWARF version: 5 150da0c48c4Sopenharmony_ci Address size: 8 151da0c48c4Sopenharmony_ci Segment size: 0 152da0c48c4Sopenharmony_ci Offset entries: 2 153da0c48c4Sopenharmony_ci CU [ 49] base: 000000000000000000 154da0c48c4Sopenharmony_ci 155da0c48c4Sopenharmony_ci Offsets starting at 0xc: 156da0c48c4Sopenharmony_ci [ 0] 0x8 157da0c48c4Sopenharmony_ci [ 1] 0x18 158da0c48c4Sopenharmony_ci 159da0c48c4Sopenharmony_ci Offset: 14, Index: 8 160da0c48c4Sopenharmony_ci base_address 0x4011d3 161da0c48c4Sopenharmony_ci 0x00000000004011d3 <calc+0x13> 162da0c48c4Sopenharmony_ci offset_pair 0, 2 163da0c48c4Sopenharmony_ci 0x00000000004011d3 <calc+0x13>.. 164da0c48c4Sopenharmony_ci 0x00000000004011d4 <calc+0x14> 165da0c48c4Sopenharmony_ci offset_pair 5, 15 166da0c48c4Sopenharmony_ci 0x00000000004011d8 <calc+0x18>.. 167da0c48c4Sopenharmony_ci 0x00000000004011e7 <calc+0x27> 168da0c48c4Sopenharmony_ci end_of_list 169da0c48c4Sopenharmony_ci 170da0c48c4Sopenharmony_ci Offset: 24, Index: 18 171da0c48c4Sopenharmony_ci start_length 0x4011c0, 2b 172da0c48c4Sopenharmony_ci 0x00000000004011c0 <calc>.. 173da0c48c4Sopenharmony_ci 0x00000000004011ea <calc+0x2a> 174da0c48c4Sopenharmony_ci start_length 0x401060, 20 175da0c48c4Sopenharmony_ci 0x0000000000401060 <main>.. 176da0c48c4Sopenharmony_ci 0x000000000040107f <main+0x1f> 177da0c48c4Sopenharmony_ci end_of_list 178da0c48c4Sopenharmony_ci 179da0c48c4Sopenharmony_ciEOF 180da0c48c4Sopenharmony_ci 181da0c48c4Sopenharmony_ci# Note that the rnglist_base attribute of the second CU points to the offsets 182da0c48c4Sopenharmony_ci# above 0xc [c]. 183da0c48c4Sopenharmony_citestrun_compare ${abs_top_builddir}/src/readelf --debug-dump=info testfile-splitdwarf-5<<\EOF 184da0c48c4Sopenharmony_ci 185da0c48c4Sopenharmony_ciDWARF section [28] '.debug_info' at offset 0x3102: 186da0c48c4Sopenharmony_ci [Offset] 187da0c48c4Sopenharmony_ci Compilation unit at offset 0: 188da0c48c4Sopenharmony_ci Version: 5, Abbreviation section offset: 0, Address size: 8, Offset size: 4 189da0c48c4Sopenharmony_ci Unit type: skeleton (4), Unit id: 0xc422aa5c31fec205 190da0c48c4Sopenharmony_ci [ 14] skeleton_unit abbrev: 1 191da0c48c4Sopenharmony_ci low_pc (addr) 0x0000000000401160 <foo> 192da0c48c4Sopenharmony_ci high_pc (data8) 81 (0x00000000004011b1) 193da0c48c4Sopenharmony_ci stmt_list (sec_offset) 0 194da0c48c4Sopenharmony_ci dwo_name (strp) "testfile-hello5.dwo" 195da0c48c4Sopenharmony_ci comp_dir (strp) "/home/mark/src/elfutils/tests" 196da0c48c4Sopenharmony_ci GNU_pubnames (flag_present) yes 197da0c48c4Sopenharmony_ci addr_base (sec_offset) address base [ 8] 198da0c48c4Sopenharmony_ci Compilation unit at offset 53: 199da0c48c4Sopenharmony_ci Version: 5, Abbreviation section offset: 21, Address size: 8, Offset size: 4 200da0c48c4Sopenharmony_ci Unit type: skeleton (4), Unit id: 0xb6c8b9d97e6dfdfe 201da0c48c4Sopenharmony_ci [ 49] skeleton_unit abbrev: 1 202da0c48c4Sopenharmony_ci ranges (sec_offset) range list [ 24] 203da0c48c4Sopenharmony_ci low_pc (addr) 000000000000000000 204da0c48c4Sopenharmony_ci stmt_list (sec_offset) 655 205da0c48c4Sopenharmony_ci dwo_name (strp) "testfile-world5.dwo" 206da0c48c4Sopenharmony_ci comp_dir (strp) "/home/mark/src/elfutils/tests" 207da0c48c4Sopenharmony_ci GNU_pubnames (flag_present) yes 208da0c48c4Sopenharmony_ci addr_base (sec_offset) address base [ a8] 209da0c48c4Sopenharmony_ci rnglists_base (sec_offset) range list [ c] 210da0c48c4Sopenharmony_ciEOF 211da0c48c4Sopenharmony_ci 212da0c48c4Sopenharmony_ci# Same for DWARF4 GNU DebugFission. But now we need to scan the .dwo 213da0c48c4Sopenharmony_ci# explicitly to know it will use the first ranges. 214da0c48c4Sopenharmony_citestfiles testfile-splitdwarf-4 testfile-hello4.dwo testfile-world4.dwo 215da0c48c4Sopenharmony_citestrun_compare ${abs_top_builddir}/src/readelf --debug-dump=ranges testfile-splitdwarf-4<<\EOF 216da0c48c4Sopenharmony_ci 217da0c48c4Sopenharmony_ciDWARF section [32] '.debug_ranges' at offset 0x3611: 218da0c48c4Sopenharmony_ci 219da0c48c4Sopenharmony_ci CU [ b] base: 000000000000000000 220da0c48c4Sopenharmony_ci [ 0] range 4011d3, 4011d5 221da0c48c4Sopenharmony_ci 0x00000000004011d3 <calc+0x13>.. 222da0c48c4Sopenharmony_ci 0x00000000004011d4 <calc+0x14> 223da0c48c4Sopenharmony_ci range 4011d8, 4011e8 224da0c48c4Sopenharmony_ci 0x00000000004011d8 <calc+0x18>.. 225da0c48c4Sopenharmony_ci 0x00000000004011e7 <calc+0x27> 226da0c48c4Sopenharmony_ci 227da0c48c4Sopenharmony_ci CU [ 3f] base: 000000000000000000 228da0c48c4Sopenharmony_ci [ 30] range 4011c0, 4011eb 229da0c48c4Sopenharmony_ci 0x00000000004011c0 <calc>.. 230da0c48c4Sopenharmony_ci 0x00000000004011ea <calc+0x2a> 231da0c48c4Sopenharmony_ci range 401060, 401080 232da0c48c4Sopenharmony_ci 0x0000000000401060 <main>.. 233da0c48c4Sopenharmony_ci 0x000000000040107f <main+0x1f> 234da0c48c4Sopenharmony_ciEOF 235da0c48c4Sopenharmony_ci 236da0c48c4Sopenharmony_ciexit 0 237