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