1*7304104dSAndroid Build Coastguard Worker#! /bin/sh 2*7304104dSAndroid Build Coastguard Worker# Copyright (C) 2015 Red Hat, Inc. 3*7304104dSAndroid Build Coastguard Worker# This file is part of elfutils. 4*7304104dSAndroid Build Coastguard Worker# 5*7304104dSAndroid Build Coastguard Worker# This file is free software; you can redistribute it and/or modify 6*7304104dSAndroid Build Coastguard Worker# it under the terms of the GNU General Public License as published by 7*7304104dSAndroid Build Coastguard Worker# the Free Software Foundation; either version 3 of the License, or 8*7304104dSAndroid Build Coastguard Worker# (at your option) any later version. 9*7304104dSAndroid Build Coastguard Worker# 10*7304104dSAndroid Build Coastguard Worker# elfutils is distributed in the hope that it will be useful, but 11*7304104dSAndroid Build Coastguard Worker# WITHOUT ANY WARRANTY; without even the implied warranty of 12*7304104dSAndroid Build Coastguard Worker# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13*7304104dSAndroid Build Coastguard Worker# GNU General Public License for more details. 14*7304104dSAndroid Build Coastguard Worker# 15*7304104dSAndroid Build Coastguard Worker# You should have received a copy of the GNU General Public License 16*7304104dSAndroid Build Coastguard Worker# along with this program. If not, see <http://www.gnu.org/licenses/>. 17*7304104dSAndroid Build Coastguard Worker 18*7304104dSAndroid Build Coastguard Worker. $srcdir/test-subr.sh 19*7304104dSAndroid Build Coastguard Worker 20*7304104dSAndroid Build Coastguard Worker# - testfile-zdebug-rel.c 21*7304104dSAndroid Build Coastguard Worker# #define UINT64_MAX 18446744073709551615UL 22*7304104dSAndroid Build Coastguard Worker# 23*7304104dSAndroid Build Coastguard Worker# int 24*7304104dSAndroid Build Coastguard Worker# main (int argc, char **argv) 25*7304104dSAndroid Build Coastguard Worker# { 26*7304104dSAndroid Build Coastguard Worker# unsigned long a = UINT64_MAX - 8; 27*7304104dSAndroid Build Coastguard Worker# unsigned long b = 42 + argc; 28*7304104dSAndroid Build Coastguard Worker# 29*7304104dSAndroid Build Coastguard Worker# if ( a + b < b ) 30*7304104dSAndroid Build Coastguard Worker# argc = a + argc; 31*7304104dSAndroid Build Coastguard Worker# else 32*7304104dSAndroid Build Coastguard Worker# b--; 33*7304104dSAndroid Build Coastguard Worker# 34*7304104dSAndroid Build Coastguard Worker# return a - b; 35*7304104dSAndroid Build Coastguard Worker# } 36*7304104dSAndroid Build Coastguard Worker# 37*7304104dSAndroid Build Coastguard Worker# gcc -Og -g -Xassembler --compress-debug-sections=none \ 38*7304104dSAndroid Build Coastguard Worker# -c -o testfile-debug-rel.o testfile-zdebug-rel.c 39*7304104dSAndroid Build Coastguard Worker# gcc -Og -g -Xassembler --compress-debug-sections=zlib-gnu \ 40*7304104dSAndroid Build Coastguard Worker# -c -o testfile-debug-rel-g.o testfile-zdebug-rel.c 41*7304104dSAndroid Build Coastguard Worker# gcc -Og -g -Xassembler --compress-debug-sections=zlib-gabi \ 42*7304104dSAndroid Build Coastguard Worker# -c -o testfile-debug-rel-z.o testfile-zdebug-rel.c 43*7304104dSAndroid Build Coastguard Worker 44*7304104dSAndroid Build Coastguard Workertestfiles testfile-debug-rel.o testfile-debug-rel-g.o testfile-debug-rel-z.o 45*7304104dSAndroid Build Coastguard Workertempfiles readelf.out 46*7304104dSAndroid Build Coastguard Workertempfiles info.out loc.out 47*7304104dSAndroid Build Coastguard Worker 48*7304104dSAndroid Build Coastguard Workercat > info.out << \EOF 49*7304104dSAndroid Build Coastguard Worker 50*7304104dSAndroid Build Coastguard WorkerDWARF section [ 4] '.debug_info' at offset 0x58: 51*7304104dSAndroid Build Coastguard Worker [Offset] 52*7304104dSAndroid Build Coastguard Worker Compilation unit at offset 0: 53*7304104dSAndroid Build Coastguard Worker Version: 4, Abbreviation section offset: 0, Address size: 8, Offset size: 4 54*7304104dSAndroid Build Coastguard Worker [ b] compile_unit abbrev: 1 55*7304104dSAndroid Build Coastguard Worker producer (strp) "GNU C11 5.3.1 20151207 (Red Hat 5.3.1-2) -mtune=generic -march=x86-64 -g -Og" 56*7304104dSAndroid Build Coastguard Worker language (data1) C99 (12) 57*7304104dSAndroid Build Coastguard Worker name (strp) "testfile-zdebug-rel.c" 58*7304104dSAndroid Build Coastguard Worker comp_dir (strp) "/tmp" 59*7304104dSAndroid Build Coastguard Worker low_pc (addr) 000000000000000000 60*7304104dSAndroid Build Coastguard Worker high_pc (data8) 24 (0x0000000000000018) 61*7304104dSAndroid Build Coastguard Worker stmt_list (sec_offset) 0 62*7304104dSAndroid Build Coastguard Worker [ 2d] subprogram abbrev: 2 63*7304104dSAndroid Build Coastguard Worker external (flag_present) yes 64*7304104dSAndroid Build Coastguard Worker name (strp) "main" 65*7304104dSAndroid Build Coastguard Worker decl_file (data1) testfile-zdebug-rel.c (1) 66*7304104dSAndroid Build Coastguard Worker decl_line (data1) 4 67*7304104dSAndroid Build Coastguard Worker prototyped (flag_present) yes 68*7304104dSAndroid Build Coastguard Worker type (ref4) [ 80] 69*7304104dSAndroid Build Coastguard Worker low_pc (addr) 000000000000000000 70*7304104dSAndroid Build Coastguard Worker high_pc (data8) 24 (0x0000000000000018) 71*7304104dSAndroid Build Coastguard Worker frame_base (exprloc) 72*7304104dSAndroid Build Coastguard Worker [ 0] call_frame_cfa 73*7304104dSAndroid Build Coastguard Worker GNU_all_call_sites (flag_present) yes 74*7304104dSAndroid Build Coastguard Worker sibling (ref4) [ 80] 75*7304104dSAndroid Build Coastguard Worker [ 4e] formal_parameter abbrev: 3 76*7304104dSAndroid Build Coastguard Worker name (strp) "argc" 77*7304104dSAndroid Build Coastguard Worker decl_file (data1) testfile-zdebug-rel.c (1) 78*7304104dSAndroid Build Coastguard Worker decl_line (data1) 4 79*7304104dSAndroid Build Coastguard Worker type (ref4) [ 80] 80*7304104dSAndroid Build Coastguard Worker location (sec_offset) location list [ 0] 81*7304104dSAndroid Build Coastguard Worker [ 5d] formal_parameter abbrev: 4 82*7304104dSAndroid Build Coastguard Worker name (strp) "argv" 83*7304104dSAndroid Build Coastguard Worker decl_file (data1) testfile-zdebug-rel.c (1) 84*7304104dSAndroid Build Coastguard Worker decl_line (data1) 4 85*7304104dSAndroid Build Coastguard Worker type (ref4) [ 87] 86*7304104dSAndroid Build Coastguard Worker location (exprloc) 87*7304104dSAndroid Build Coastguard Worker [ 0] reg4 88*7304104dSAndroid Build Coastguard Worker [ 6a] variable abbrev: 5 89*7304104dSAndroid Build Coastguard Worker name (string) "a" 90*7304104dSAndroid Build Coastguard Worker decl_file (data1) testfile-zdebug-rel.c (1) 91*7304104dSAndroid Build Coastguard Worker decl_line (data1) 6 92*7304104dSAndroid Build Coastguard Worker type (ref4) [ 9a] 93*7304104dSAndroid Build Coastguard Worker const_value (sdata) 18446744073709551607 (-9) 94*7304104dSAndroid Build Coastguard Worker [ 74] variable abbrev: 6 95*7304104dSAndroid Build Coastguard Worker name (string) "b" 96*7304104dSAndroid Build Coastguard Worker decl_file (data1) testfile-zdebug-rel.c (1) 97*7304104dSAndroid Build Coastguard Worker decl_line (data1) 7 98*7304104dSAndroid Build Coastguard Worker type (ref4) [ 9a] 99*7304104dSAndroid Build Coastguard Worker location (exprloc) 100*7304104dSAndroid Build Coastguard Worker [ 0] reg5 101*7304104dSAndroid Build Coastguard Worker [ 80] base_type abbrev: 7 102*7304104dSAndroid Build Coastguard Worker byte_size (data1) 4 103*7304104dSAndroid Build Coastguard Worker encoding (data1) signed (5) 104*7304104dSAndroid Build Coastguard Worker name (string) "int" 105*7304104dSAndroid Build Coastguard Worker [ 87] pointer_type abbrev: 8 106*7304104dSAndroid Build Coastguard Worker byte_size (data1) 8 107*7304104dSAndroid Build Coastguard Worker type (ref4) [ 8d] 108*7304104dSAndroid Build Coastguard Worker [ 8d] pointer_type abbrev: 8 109*7304104dSAndroid Build Coastguard Worker byte_size (data1) 8 110*7304104dSAndroid Build Coastguard Worker type (ref4) [ 93] 111*7304104dSAndroid Build Coastguard Worker [ 93] base_type abbrev: 9 112*7304104dSAndroid Build Coastguard Worker byte_size (data1) 1 113*7304104dSAndroid Build Coastguard Worker encoding (data1) signed_char (6) 114*7304104dSAndroid Build Coastguard Worker name (strp) "char" 115*7304104dSAndroid Build Coastguard Worker [ 9a] base_type abbrev: 9 116*7304104dSAndroid Build Coastguard Worker byte_size (data1) 8 117*7304104dSAndroid Build Coastguard Worker encoding (data1) unsigned (7) 118*7304104dSAndroid Build Coastguard Worker name (strp) "long unsigned int" 119*7304104dSAndroid Build Coastguard WorkerEOF 120*7304104dSAndroid Build Coastguard Worker 121*7304104dSAndroid Build Coastguard Workercat info.out | testrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=info testfile-debug-rel.o 122*7304104dSAndroid Build Coastguard Worker 123*7304104dSAndroid Build Coastguard Workercat info.out | sed -e "s/'.debug_info'/'.zdebug_info'/" | testrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=info testfile-debug-rel-g.o 124*7304104dSAndroid Build Coastguard Worker 125*7304104dSAndroid Build Coastguard Workercat info.out | testrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=info testfile-debug-rel-z.o 126*7304104dSAndroid Build Coastguard Worker 127*7304104dSAndroid Build Coastguard Workercat > loc.out << \EOF 128*7304104dSAndroid Build Coastguard Worker 129*7304104dSAndroid Build Coastguard WorkerDWARF section [ 7] '.debug_loc' at offset 0x185: 130*7304104dSAndroid Build Coastguard Worker 131*7304104dSAndroid Build Coastguard Worker CU [ b] base: 000000000000000000 132*7304104dSAndroid Build Coastguard Worker [ 0] range 0, 3 133*7304104dSAndroid Build Coastguard Worker [ 0] reg5 134*7304104dSAndroid Build Coastguard Worker range 3, 10 135*7304104dSAndroid Build Coastguard Worker [ 0] breg5 -42 136*7304104dSAndroid Build Coastguard Worker [ 2] stack_value 137*7304104dSAndroid Build Coastguard Worker range 10, 18 138*7304104dSAndroid Build Coastguard Worker [ 0] GNU_entry_value: 139*7304104dSAndroid Build Coastguard Worker [ 0] reg5 140*7304104dSAndroid Build Coastguard Worker [ 3] stack_value 141*7304104dSAndroid Build Coastguard WorkerEOF 142*7304104dSAndroid Build Coastguard Worker 143*7304104dSAndroid Build Coastguard Workercat loc.out | testrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=loc testfile-debug-rel.o 144*7304104dSAndroid Build Coastguard Worker 145*7304104dSAndroid Build Coastguard Workercat loc.out | sed -e "s/'.debug_loc' at offset 0x185/'.zdebug_loc' at offset 0x138/" | testrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=loc testfile-debug-rel-g.o 146*7304104dSAndroid Build Coastguard Worker 147*7304104dSAndroid Build Coastguard Workercat loc.out | sed -e "s/at offset 0x185/at offset 0x150/" | testrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=loc testfile-debug-rel-z.o 148*7304104dSAndroid Build Coastguard Worker 149*7304104dSAndroid Build Coastguard Worker# Same as above, but on ppc64 150*7304104dSAndroid Build Coastguard Workertestfiles testfile-debug-rel-ppc64.o 151*7304104dSAndroid Build Coastguard Workertestfiles testfile-debug-rel-ppc64-g.o testfile-debug-rel-ppc64-z.o 152*7304104dSAndroid Build Coastguard Worker 153*7304104dSAndroid Build Coastguard Workercat > info.out << \EOF 154*7304104dSAndroid Build Coastguard Worker 155*7304104dSAndroid Build Coastguard WorkerDWARF section [ 6] '.debug_info' at offset 0x80: 156*7304104dSAndroid Build Coastguard Worker [Offset] 157*7304104dSAndroid Build Coastguard Worker Compilation unit at offset 0: 158*7304104dSAndroid Build Coastguard Worker Version: 4, Abbreviation section offset: 0, Address size: 8, Offset size: 4 159*7304104dSAndroid Build Coastguard Worker [ b] compile_unit abbrev: 1 160*7304104dSAndroid Build Coastguard Worker producer (strp) "GNU C11 7.3.1 20180712 (Red Hat 7.3.1-6) -Asystem=linux -Asystem=unix -Asystem=posix -msecure-plt -g -Og" 161*7304104dSAndroid Build Coastguard Worker language (data1) C99 (12) 162*7304104dSAndroid Build Coastguard Worker name (strp) "testfile-zdebug-rel.c" 163*7304104dSAndroid Build Coastguard Worker comp_dir (strp) "/home/mjw" 164*7304104dSAndroid Build Coastguard Worker low_pc (addr) 000000000000000000 165*7304104dSAndroid Build Coastguard Worker high_pc (data8) 44 (0x000000000000002c) 166*7304104dSAndroid Build Coastguard Worker stmt_list (sec_offset) 0 167*7304104dSAndroid Build Coastguard Worker [ 2d] subprogram abbrev: 2 168*7304104dSAndroid Build Coastguard Worker external (flag_present) yes 169*7304104dSAndroid Build Coastguard Worker name (strp) "main" 170*7304104dSAndroid Build Coastguard Worker decl_file (data1) testfile-zdebug-rel.c (1) 171*7304104dSAndroid Build Coastguard Worker decl_line (data1) 4 172*7304104dSAndroid Build Coastguard Worker prototyped (flag_present) yes 173*7304104dSAndroid Build Coastguard Worker type (ref4) [ 82] 174*7304104dSAndroid Build Coastguard Worker low_pc (addr) 000000000000000000 175*7304104dSAndroid Build Coastguard Worker high_pc (data8) 44 (0x000000000000002c) 176*7304104dSAndroid Build Coastguard Worker frame_base (exprloc) 177*7304104dSAndroid Build Coastguard Worker [ 0] call_frame_cfa 178*7304104dSAndroid Build Coastguard Worker GNU_all_call_sites (flag_present) yes 179*7304104dSAndroid Build Coastguard Worker sibling (ref4) [ 82] 180*7304104dSAndroid Build Coastguard Worker [ 4e] formal_parameter abbrev: 3 181*7304104dSAndroid Build Coastguard Worker name (strp) "argc" 182*7304104dSAndroid Build Coastguard Worker decl_file (data1) testfile-zdebug-rel.c (1) 183*7304104dSAndroid Build Coastguard Worker decl_line (data1) 4 184*7304104dSAndroid Build Coastguard Worker type (ref4) [ 82] 185*7304104dSAndroid Build Coastguard Worker location (sec_offset) location list [ 0] 186*7304104dSAndroid Build Coastguard Worker [ 5d] formal_parameter abbrev: 4 187*7304104dSAndroid Build Coastguard Worker name (strp) "argv" 188*7304104dSAndroid Build Coastguard Worker decl_file (data1) testfile-zdebug-rel.c (1) 189*7304104dSAndroid Build Coastguard Worker decl_line (data1) 4 190*7304104dSAndroid Build Coastguard Worker type (ref4) [ 89] 191*7304104dSAndroid Build Coastguard Worker location (exprloc) 192*7304104dSAndroid Build Coastguard Worker [ 0] reg4 193*7304104dSAndroid Build Coastguard Worker [ 6a] variable abbrev: 5 194*7304104dSAndroid Build Coastguard Worker name (string) "a" 195*7304104dSAndroid Build Coastguard Worker decl_file (data1) testfile-zdebug-rel.c (1) 196*7304104dSAndroid Build Coastguard Worker decl_line (data1) 6 197*7304104dSAndroid Build Coastguard Worker type (ref4) [ 9c] 198*7304104dSAndroid Build Coastguard Worker const_value (sdata) 18446744073709551607 (-9) 199*7304104dSAndroid Build Coastguard Worker [ 74] variable abbrev: 6 200*7304104dSAndroid Build Coastguard Worker name (string) "b" 201*7304104dSAndroid Build Coastguard Worker decl_file (data1) testfile-zdebug-rel.c (1) 202*7304104dSAndroid Build Coastguard Worker decl_line (data1) 7 203*7304104dSAndroid Build Coastguard Worker type (ref4) [ 9c] 204*7304104dSAndroid Build Coastguard Worker location (sec_offset) location list [ 4e] 205*7304104dSAndroid Build Coastguard Worker [ 82] base_type abbrev: 7 206*7304104dSAndroid Build Coastguard Worker byte_size (data1) 4 207*7304104dSAndroid Build Coastguard Worker encoding (data1) signed (5) 208*7304104dSAndroid Build Coastguard Worker name (string) "int" 209*7304104dSAndroid Build Coastguard Worker [ 89] pointer_type abbrev: 8 210*7304104dSAndroid Build Coastguard Worker byte_size (data1) 8 211*7304104dSAndroid Build Coastguard Worker type (ref4) [ 8f] 212*7304104dSAndroid Build Coastguard Worker [ 8f] pointer_type abbrev: 8 213*7304104dSAndroid Build Coastguard Worker byte_size (data1) 8 214*7304104dSAndroid Build Coastguard Worker type (ref4) [ 95] 215*7304104dSAndroid Build Coastguard Worker [ 95] base_type abbrev: 9 216*7304104dSAndroid Build Coastguard Worker byte_size (data1) 1 217*7304104dSAndroid Build Coastguard Worker encoding (data1) unsigned_char (8) 218*7304104dSAndroid Build Coastguard Worker name (strp) "char" 219*7304104dSAndroid Build Coastguard Worker [ 9c] base_type abbrev: 9 220*7304104dSAndroid Build Coastguard Worker byte_size (data1) 8 221*7304104dSAndroid Build Coastguard Worker encoding (data1) unsigned (7) 222*7304104dSAndroid Build Coastguard Worker name (strp) "long unsigned int" 223*7304104dSAndroid Build Coastguard WorkerEOF 224*7304104dSAndroid Build Coastguard Worker 225*7304104dSAndroid Build Coastguard Workercat info.out | testrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=info testfile-debug-rel-ppc64.o 226*7304104dSAndroid Build Coastguard Worker 227*7304104dSAndroid Build Coastguard Workercat info.out | sed -e "s/'.debug_info'/'.zdebug_info'/" | testrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=info testfile-debug-rel-ppc64-g.o 228*7304104dSAndroid Build Coastguard Worker 229*7304104dSAndroid Build Coastguard Workercat info.out | testrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=info testfile-debug-rel-ppc64-z.o 230*7304104dSAndroid Build Coastguard Worker 231*7304104dSAndroid Build Coastguard Workercat > loc.out << \EOF 232*7304104dSAndroid Build Coastguard Worker 233*7304104dSAndroid Build Coastguard WorkerDWARF section [ 9] '.debug_loc' at offset 0x1af: 234*7304104dSAndroid Build Coastguard Worker 235*7304104dSAndroid Build Coastguard Worker CU [ b] base: 000000000000000000 236*7304104dSAndroid Build Coastguard Worker [ 0] range 0, 4 237*7304104dSAndroid Build Coastguard Worker [ 0] reg3 238*7304104dSAndroid Build Coastguard Worker range 4, 14 239*7304104dSAndroid Build Coastguard Worker [ 0] breg3 -42 240*7304104dSAndroid Build Coastguard Worker [ 2] stack_value 241*7304104dSAndroid Build Coastguard Worker range 14, 2c 242*7304104dSAndroid Build Coastguard Worker [ 0] GNU_entry_value: 243*7304104dSAndroid Build Coastguard Worker [ 0] reg3 244*7304104dSAndroid Build Coastguard Worker [ 3] stack_value 245*7304104dSAndroid Build Coastguard Worker [ 4e] range 8, 18 246*7304104dSAndroid Build Coastguard Worker [ 0] reg3 247*7304104dSAndroid Build Coastguard WorkerEOF 248*7304104dSAndroid Build Coastguard Worker 249*7304104dSAndroid Build Coastguard Workercat loc.out | testrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=loc testfile-debug-rel-ppc64.o 250*7304104dSAndroid Build Coastguard Worker 251*7304104dSAndroid Build Coastguard Workercat loc.out | sed -e "s/'.debug_loc' at offset 0x1af/'.zdebug_loc' at offset 0x15f/" | testrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=loc testfile-debug-rel-ppc64-g.o 252*7304104dSAndroid Build Coastguard Worker 253*7304104dSAndroid Build Coastguard Workercat loc.out | sed -e "s/at offset 0x1af/at offset 0x177/" | testrun_compare ${abs_top_builddir}/src/readelf -U --debug-dump=loc testfile-debug-rel-ppc64-z.o 254*7304104dSAndroid Build Coastguard Worker 255*7304104dSAndroid Build Coastguard Workerexit 0 256