1*7304104dSAndroid Build Coastguard Worker#! /bin/sh 2*7304104dSAndroid Build Coastguard Worker# Test for displaying DW_AT_const_types with the "correct" sign. 3*7304104dSAndroid Build Coastguard Worker# Copyright (C) 2018 Red Hat, Inc. 4*7304104dSAndroid Build Coastguard Worker# This file is part of elfutils. 5*7304104dSAndroid Build Coastguard Worker# 6*7304104dSAndroid Build Coastguard Worker# This file is free software; you can redistribute it and/or modify 7*7304104dSAndroid Build Coastguard Worker# it under the terms of the GNU General Public License as published by 8*7304104dSAndroid Build Coastguard Worker# the Free Software Foundation; either version 3 of the License, or 9*7304104dSAndroid Build Coastguard Worker# (at your option) any later version. 10*7304104dSAndroid Build Coastguard Worker# 11*7304104dSAndroid Build Coastguard Worker# elfutils is distributed in the hope that it will be useful, but 12*7304104dSAndroid Build Coastguard Worker# WITHOUT ANY WARRANTY; without even the implied warranty of 13*7304104dSAndroid Build Coastguard Worker# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14*7304104dSAndroid Build Coastguard Worker# GNU General Public License for more details. 15*7304104dSAndroid Build Coastguard Worker# 16*7304104dSAndroid Build Coastguard Worker# You should have received a copy of the GNU General Public License 17*7304104dSAndroid Build Coastguard Worker# along with this program. If not, see <http://www.gnu.org/licenses/>. 18*7304104dSAndroid Build Coastguard Worker 19*7304104dSAndroid Build Coastguard Worker. $srcdir/test-subr.sh 20*7304104dSAndroid Build Coastguard Worker 21*7304104dSAndroid Build Coastguard Worker# = s.c 22*7304104dSAndroid Build Coastguard Worker# 23*7304104dSAndroid Build Coastguard Worker# int s() 24*7304104dSAndroid Build Coastguard Worker# { 25*7304104dSAndroid Build Coastguard Worker# int i = -1; 26*7304104dSAndroid Build Coastguard Worker# int j = -1; 27*7304104dSAndroid Build Coastguard Worker# 28*7304104dSAndroid Build Coastguard Worker# return i - j; 29*7304104dSAndroid Build Coastguard Worker# } 30*7304104dSAndroid Build Coastguard Worker# 31*7304104dSAndroid Build Coastguard Worker# = m.c 32*7304104dSAndroid Build Coastguard Worker# 33*7304104dSAndroid Build Coastguard Worker# extern int s(); 34*7304104dSAndroid Build Coastguard Worker# 35*7304104dSAndroid Build Coastguard Worker# int 36*7304104dSAndroid Build Coastguard Worker# main () 37*7304104dSAndroid Build Coastguard Worker# { 38*7304104dSAndroid Build Coastguard Worker# const signed char sc = -2; 39*7304104dSAndroid Build Coastguard Worker# const unsigned char uc = 254; 40*7304104dSAndroid Build Coastguard Worker# 41*7304104dSAndroid Build Coastguard Worker# const signed short ss = -16; 42*7304104dSAndroid Build Coastguard Worker# const unsigned short us = 65520; 43*7304104dSAndroid Build Coastguard Worker# 44*7304104dSAndroid Build Coastguard Worker# const signed int si = -3; 45*7304104dSAndroid Build Coastguard Worker# const unsigned int ui = 4200000000; 46*7304104dSAndroid Build Coastguard Worker# 47*7304104dSAndroid Build Coastguard Worker# signed long sl = -1; 48*7304104dSAndroid Build Coastguard Worker# unsigned long ul = 0xffffffffffffffffUL; 49*7304104dSAndroid Build Coastguard Worker# 50*7304104dSAndroid Build Coastguard Worker# return s (); 51*7304104dSAndroid Build Coastguard Worker# } 52*7304104dSAndroid Build Coastguard Worker# 53*7304104dSAndroid Build Coastguard Worker# gcc -gdwarf-5 -O2 -c s.c 54*7304104dSAndroid Build Coastguard Worker# gcc -gdwarf-4 -O2 -c m.c 55*7304104dSAndroid Build Coastguard Worker# gcc -o testfile-const-values s.o m.o 56*7304104dSAndroid Build Coastguard Worker# eu-strip -g -f testfile-const-values.debug testfile-const-values 57*7304104dSAndroid Build Coastguard Worker 58*7304104dSAndroid Build Coastguard Workertestfiles testfile-const-values.debug 59*7304104dSAndroid Build Coastguard Worker 60*7304104dSAndroid Build Coastguard Workertestrun_compare ${abs_top_builddir}/src/readelf --debug-dump=info testfile-const-values.debug << EOF 61*7304104dSAndroid Build Coastguard Worker 62*7304104dSAndroid Build Coastguard WorkerDWARF section [28] '.debug_info' at offset 0x2e0: 63*7304104dSAndroid Build Coastguard Worker [Offset] 64*7304104dSAndroid Build Coastguard Worker Compilation unit at offset 0: 65*7304104dSAndroid Build Coastguard Worker Version: 5, Abbreviation section offset: 0, Address size: 8, Offset size: 4 66*7304104dSAndroid Build Coastguard Worker Unit type: compile (1) 67*7304104dSAndroid Build Coastguard Worker [ c] compile_unit abbrev: 2 68*7304104dSAndroid Build Coastguard Worker producer (strp) "GNU C11 7.3.1 20180303 (Red Hat 7.3.1-5) -mtune=generic -march=x86-64 -gdwarf-5 -O2" 69*7304104dSAndroid Build Coastguard Worker language (data1) C11 (29) 70*7304104dSAndroid Build Coastguard Worker name (string) "s.c" 71*7304104dSAndroid Build Coastguard Worker comp_dir (strp) "/home/mark/build/elfutils-obj" 72*7304104dSAndroid Build Coastguard Worker low_pc (addr) 0x00000000004004d0 73*7304104dSAndroid Build Coastguard Worker high_pc (data8) 3 (0x00000000004004d3) 74*7304104dSAndroid Build Coastguard Worker stmt_list (sec_offset) 0 75*7304104dSAndroid Build Coastguard Worker [ 2e] subprogram abbrev: 3 76*7304104dSAndroid Build Coastguard Worker external (flag_present) yes 77*7304104dSAndroid Build Coastguard Worker name (string) "s" 78*7304104dSAndroid Build Coastguard Worker decl_file (data1) s.c (1) 79*7304104dSAndroid Build Coastguard Worker decl_line (data1) 1 80*7304104dSAndroid Build Coastguard Worker type (ref4) [ 5e] 81*7304104dSAndroid Build Coastguard Worker low_pc (addr) 0x00000000004004d0 82*7304104dSAndroid Build Coastguard Worker high_pc (data8) 3 (0x00000000004004d3) 83*7304104dSAndroid Build Coastguard Worker frame_base (exprloc) 84*7304104dSAndroid Build Coastguard Worker [ 0] call_frame_cfa 85*7304104dSAndroid Build Coastguard Worker call_all_calls (flag_present) yes 86*7304104dSAndroid Build Coastguard Worker sibling (ref4) [ 5e] 87*7304104dSAndroid Build Coastguard Worker [ 4d] variable abbrev: 1 88*7304104dSAndroid Build Coastguard Worker name (string) "i" 89*7304104dSAndroid Build Coastguard Worker decl_file (implicit_const) s.c (1) 90*7304104dSAndroid Build Coastguard Worker decl_line (data1) 3 91*7304104dSAndroid Build Coastguard Worker type (ref4) [ 5e] 92*7304104dSAndroid Build Coastguard Worker const_value (implicit_const) -1 93*7304104dSAndroid Build Coastguard Worker [ 55] variable abbrev: 1 94*7304104dSAndroid Build Coastguard Worker name (string) "j" 95*7304104dSAndroid Build Coastguard Worker decl_file (implicit_const) s.c (1) 96*7304104dSAndroid Build Coastguard Worker decl_line (data1) 4 97*7304104dSAndroid Build Coastguard Worker type (ref4) [ 5e] 98*7304104dSAndroid Build Coastguard Worker const_value (implicit_const) -1 99*7304104dSAndroid Build Coastguard Worker [ 5e] base_type abbrev: 4 100*7304104dSAndroid Build Coastguard Worker byte_size (data1) 4 101*7304104dSAndroid Build Coastguard Worker encoding (data1) signed (5) 102*7304104dSAndroid Build Coastguard Worker name (string) "int" 103*7304104dSAndroid Build Coastguard Worker Compilation unit at offset 102: 104*7304104dSAndroid Build Coastguard Worker Version: 4, Abbreviation section offset: 73, Address size: 8, Offset size: 4 105*7304104dSAndroid Build Coastguard Worker [ 71] compile_unit abbrev: 1 106*7304104dSAndroid Build Coastguard Worker producer (strp) "GNU C11 7.3.1 20180303 (Red Hat 7.3.1-5) -mtune=generic -march=x86-64 -gdwarf-4 -O2" 107*7304104dSAndroid Build Coastguard Worker language (data1) C99 (12) 108*7304104dSAndroid Build Coastguard Worker name (string) "m.c" 109*7304104dSAndroid Build Coastguard Worker comp_dir (strp) "/home/mark/build/elfutils-obj" 110*7304104dSAndroid Build Coastguard Worker ranges (sec_offset) range list [ 0] 111*7304104dSAndroid Build Coastguard Worker low_pc (addr) 000000000000000000 112*7304104dSAndroid Build Coastguard Worker stmt_list (sec_offset) 54 113*7304104dSAndroid Build Coastguard Worker [ 8f] subprogram abbrev: 2 114*7304104dSAndroid Build Coastguard Worker external (flag_present) yes 115*7304104dSAndroid Build Coastguard Worker name (strp) "main" 116*7304104dSAndroid Build Coastguard Worker decl_file (data1) m.c (1) 117*7304104dSAndroid Build Coastguard Worker decl_line (data1) 4 118*7304104dSAndroid Build Coastguard Worker type (ref4) [ 119] 119*7304104dSAndroid Build Coastguard Worker low_pc (addr) 0x00000000004003e0 120*7304104dSAndroid Build Coastguard Worker high_pc (data8) 7 (0x00000000004003e7) 121*7304104dSAndroid Build Coastguard Worker frame_base (exprloc) 122*7304104dSAndroid Build Coastguard Worker [ 0] call_frame_cfa 123*7304104dSAndroid Build Coastguard Worker GNU_all_call_sites (flag_present) yes 124*7304104dSAndroid Build Coastguard Worker sibling (ref4) [ 119] 125*7304104dSAndroid Build Coastguard Worker [ b0] variable abbrev: 3 126*7304104dSAndroid Build Coastguard Worker name (string) "sc" 127*7304104dSAndroid Build Coastguard Worker decl_file (data1) m.c (1) 128*7304104dSAndroid Build Coastguard Worker decl_line (data1) 6 129*7304104dSAndroid Build Coastguard Worker type (ref4) [ 12c] 130*7304104dSAndroid Build Coastguard Worker const_value (sdata) -2 131*7304104dSAndroid Build Coastguard Worker [ bb] variable abbrev: 3 132*7304104dSAndroid Build Coastguard Worker name (string) "uc" 133*7304104dSAndroid Build Coastguard Worker decl_file (data1) m.c (1) 134*7304104dSAndroid Build Coastguard Worker decl_line (data1) 7 135*7304104dSAndroid Build Coastguard Worker type (ref4) [ 138] 136*7304104dSAndroid Build Coastguard Worker const_value (sdata) 254 (-2) 137*7304104dSAndroid Build Coastguard Worker [ c6] variable abbrev: 3 138*7304104dSAndroid Build Coastguard Worker name (string) "ss" 139*7304104dSAndroid Build Coastguard Worker decl_file (data1) m.c (1) 140*7304104dSAndroid Build Coastguard Worker decl_line (data1) 9 141*7304104dSAndroid Build Coastguard Worker type (ref4) [ 144] 142*7304104dSAndroid Build Coastguard Worker const_value (sdata) -16 143*7304104dSAndroid Build Coastguard Worker [ d1] variable abbrev: 3 144*7304104dSAndroid Build Coastguard Worker name (string) "us" 145*7304104dSAndroid Build Coastguard Worker decl_file (data1) m.c (1) 146*7304104dSAndroid Build Coastguard Worker decl_line (data1) 10 147*7304104dSAndroid Build Coastguard Worker type (ref4) [ 150] 148*7304104dSAndroid Build Coastguard Worker const_value (sdata) 65520 (-16) 149*7304104dSAndroid Build Coastguard Worker [ dc] variable abbrev: 3 150*7304104dSAndroid Build Coastguard Worker name (string) "si" 151*7304104dSAndroid Build Coastguard Worker decl_file (data1) m.c (1) 152*7304104dSAndroid Build Coastguard Worker decl_line (data1) 12 153*7304104dSAndroid Build Coastguard Worker type (ref4) [ 120] 154*7304104dSAndroid Build Coastguard Worker const_value (sdata) -3 155*7304104dSAndroid Build Coastguard Worker [ e7] variable abbrev: 3 156*7304104dSAndroid Build Coastguard Worker name (string) "ui" 157*7304104dSAndroid Build Coastguard Worker decl_file (data1) m.c (1) 158*7304104dSAndroid Build Coastguard Worker decl_line (data1) 13 159*7304104dSAndroid Build Coastguard Worker type (ref4) [ 15c] 160*7304104dSAndroid Build Coastguard Worker const_value (sdata) 4200000000 (-94967296) 161*7304104dSAndroid Build Coastguard Worker [ f5] variable abbrev: 3 162*7304104dSAndroid Build Coastguard Worker name (string) "sl" 163*7304104dSAndroid Build Coastguard Worker decl_file (data1) m.c (1) 164*7304104dSAndroid Build Coastguard Worker decl_line (data1) 15 165*7304104dSAndroid Build Coastguard Worker type (ref4) [ 161] 166*7304104dSAndroid Build Coastguard Worker const_value (sdata) -1 167*7304104dSAndroid Build Coastguard Worker [ 100] variable abbrev: 3 168*7304104dSAndroid Build Coastguard Worker name (string) "ul" 169*7304104dSAndroid Build Coastguard Worker decl_file (data1) m.c (1) 170*7304104dSAndroid Build Coastguard Worker decl_line (data1) 16 171*7304104dSAndroid Build Coastguard Worker type (ref4) [ 168] 172*7304104dSAndroid Build Coastguard Worker const_value (sdata) 18446744073709551615 (-1) 173*7304104dSAndroid Build Coastguard Worker [ 10b] GNU_call_site abbrev: 4 174*7304104dSAndroid Build Coastguard Worker low_pc (addr) 0x00000000004003e7 175*7304104dSAndroid Build Coastguard Worker GNU_tail_call (flag_present) yes 176*7304104dSAndroid Build Coastguard Worker abstract_origin (ref4) [ 16f] 177*7304104dSAndroid Build Coastguard Worker [ 119] base_type abbrev: 5 178*7304104dSAndroid Build Coastguard Worker byte_size (data1) 4 179*7304104dSAndroid Build Coastguard Worker encoding (data1) signed (5) 180*7304104dSAndroid Build Coastguard Worker name (string) "int" 181*7304104dSAndroid Build Coastguard Worker [ 120] const_type abbrev: 6 182*7304104dSAndroid Build Coastguard Worker type (ref4) [ 119] 183*7304104dSAndroid Build Coastguard Worker [ 125] base_type abbrev: 7 184*7304104dSAndroid Build Coastguard Worker byte_size (data1) 1 185*7304104dSAndroid Build Coastguard Worker encoding (data1) signed_char (6) 186*7304104dSAndroid Build Coastguard Worker name (strp) "signed char" 187*7304104dSAndroid Build Coastguard Worker [ 12c] const_type abbrev: 6 188*7304104dSAndroid Build Coastguard Worker type (ref4) [ 125] 189*7304104dSAndroid Build Coastguard Worker [ 131] base_type abbrev: 7 190*7304104dSAndroid Build Coastguard Worker byte_size (data1) 1 191*7304104dSAndroid Build Coastguard Worker encoding (data1) unsigned_char (8) 192*7304104dSAndroid Build Coastguard Worker name (strp) "unsigned char" 193*7304104dSAndroid Build Coastguard Worker [ 138] const_type abbrev: 6 194*7304104dSAndroid Build Coastguard Worker type (ref4) [ 131] 195*7304104dSAndroid Build Coastguard Worker [ 13d] base_type abbrev: 7 196*7304104dSAndroid Build Coastguard Worker byte_size (data1) 2 197*7304104dSAndroid Build Coastguard Worker encoding (data1) signed (5) 198*7304104dSAndroid Build Coastguard Worker name (strp) "short int" 199*7304104dSAndroid Build Coastguard Worker [ 144] const_type abbrev: 6 200*7304104dSAndroid Build Coastguard Worker type (ref4) [ 13d] 201*7304104dSAndroid Build Coastguard Worker [ 149] base_type abbrev: 7 202*7304104dSAndroid Build Coastguard Worker byte_size (data1) 2 203*7304104dSAndroid Build Coastguard Worker encoding (data1) unsigned (7) 204*7304104dSAndroid Build Coastguard Worker name (strp) "short unsigned int" 205*7304104dSAndroid Build Coastguard Worker [ 150] const_type abbrev: 6 206*7304104dSAndroid Build Coastguard Worker type (ref4) [ 149] 207*7304104dSAndroid Build Coastguard Worker [ 155] base_type abbrev: 7 208*7304104dSAndroid Build Coastguard Worker byte_size (data1) 4 209*7304104dSAndroid Build Coastguard Worker encoding (data1) unsigned (7) 210*7304104dSAndroid Build Coastguard Worker name (strp) "unsigned int" 211*7304104dSAndroid Build Coastguard Worker [ 15c] const_type abbrev: 6 212*7304104dSAndroid Build Coastguard Worker type (ref4) [ 155] 213*7304104dSAndroid Build Coastguard Worker [ 161] base_type abbrev: 7 214*7304104dSAndroid Build Coastguard Worker byte_size (data1) 8 215*7304104dSAndroid Build Coastguard Worker encoding (data1) signed (5) 216*7304104dSAndroid Build Coastguard Worker name (strp) "long int" 217*7304104dSAndroid Build Coastguard Worker [ 168] base_type abbrev: 7 218*7304104dSAndroid Build Coastguard Worker byte_size (data1) 8 219*7304104dSAndroid Build Coastguard Worker encoding (data1) unsigned (7) 220*7304104dSAndroid Build Coastguard Worker name (strp) "long unsigned int" 221*7304104dSAndroid Build Coastguard Worker [ 16f] subprogram abbrev: 8 222*7304104dSAndroid Build Coastguard Worker external (flag_present) yes 223*7304104dSAndroid Build Coastguard Worker declaration (flag_present) yes 224*7304104dSAndroid Build Coastguard Worker linkage_name (string) "s" 225*7304104dSAndroid Build Coastguard Worker name (string) "s" 226*7304104dSAndroid Build Coastguard Worker decl_file (data1) m.c (1) 227*7304104dSAndroid Build Coastguard Worker decl_line (data1) 1 228*7304104dSAndroid Build Coastguard WorkerEOF 229*7304104dSAndroid Build Coastguard Worker 230*7304104dSAndroid Build Coastguard Workerexit 0 231