#! /bin/sh # Test for displaying DW_AT_const_types with the "correct" sign. # Copyright (C) 2018 Red Hat, Inc. # This file is part of elfutils. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # elfutils is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . . $srcdir/test-subr.sh # = s.c # # int s() # { # int i = -1; # int j = -1; # # return i - j; # } # # = m.c # # extern int s(); # # int # main () # { # const signed char sc = -2; # const unsigned char uc = 254; # # const signed short ss = -16; # const unsigned short us = 65520; # # const signed int si = -3; # const unsigned int ui = 4200000000; # # signed long sl = -1; # unsigned long ul = 0xffffffffffffffffUL; # # return s (); # } # # gcc -gdwarf-5 -O2 -c s.c # gcc -gdwarf-4 -O2 -c m.c # gcc -o testfile-const-values s.o m.o # eu-strip -g -f testfile-const-values.debug testfile-const-values testfiles testfile-const-values.debug testrun_compare ${abs_top_builddir}/src/readelf --debug-dump=info testfile-const-values.debug << EOF DWARF section [28] '.debug_info' at offset 0x2e0: [Offset] Compilation unit at offset 0: Version: 5, Abbreviation section offset: 0, Address size: 8, Offset size: 4 Unit type: compile (1) [ c] compile_unit abbrev: 2 producer (strp) "GNU C11 7.3.1 20180303 (Red Hat 7.3.1-5) -mtune=generic -march=x86-64 -gdwarf-5 -O2" language (data1) C11 (29) name (string) "s.c" comp_dir (strp) "/home/mark/build/elfutils-obj" low_pc (addr) 0x00000000004004d0 high_pc (data8) 3 (0x00000000004004d3) stmt_list (sec_offset) 0 [ 2e] subprogram abbrev: 3 external (flag_present) yes name (string) "s" decl_file (data1) s.c (1) decl_line (data1) 1 type (ref4) [ 5e] low_pc (addr) 0x00000000004004d0 high_pc (data8) 3 (0x00000000004004d3) frame_base (exprloc) [ 0] call_frame_cfa call_all_calls (flag_present) yes sibling (ref4) [ 5e] [ 4d] variable abbrev: 1 name (string) "i" decl_file (implicit_const) s.c (1) decl_line (data1) 3 type (ref4) [ 5e] const_value (implicit_const) -1 [ 55] variable abbrev: 1 name (string) "j" decl_file (implicit_const) s.c (1) decl_line (data1) 4 type (ref4) [ 5e] const_value (implicit_const) -1 [ 5e] base_type abbrev: 4 byte_size (data1) 4 encoding (data1) signed (5) name (string) "int" Compilation unit at offset 102: Version: 4, Abbreviation section offset: 73, Address size: 8, Offset size: 4 [ 71] compile_unit abbrev: 1 producer (strp) "GNU C11 7.3.1 20180303 (Red Hat 7.3.1-5) -mtune=generic -march=x86-64 -gdwarf-4 -O2" language (data1) C99 (12) name (string) "m.c" comp_dir (strp) "/home/mark/build/elfutils-obj" ranges (sec_offset) range list [ 0] low_pc (addr) 000000000000000000 stmt_list (sec_offset) 54 [ 8f] subprogram abbrev: 2 external (flag_present) yes name (strp) "main" decl_file (data1) m.c (1) decl_line (data1) 4 type (ref4) [ 119] low_pc (addr) 0x00000000004003e0 high_pc (data8) 7 (0x00000000004003e7) frame_base (exprloc) [ 0] call_frame_cfa GNU_all_call_sites (flag_present) yes sibling (ref4) [ 119] [ b0] variable abbrev: 3 name (string) "sc" decl_file (data1) m.c (1) decl_line (data1) 6 type (ref4) [ 12c] const_value (sdata) -2 [ bb] variable abbrev: 3 name (string) "uc" decl_file (data1) m.c (1) decl_line (data1) 7 type (ref4) [ 138] const_value (sdata) 254 (-2) [ c6] variable abbrev: 3 name (string) "ss" decl_file (data1) m.c (1) decl_line (data1) 9 type (ref4) [ 144] const_value (sdata) -16 [ d1] variable abbrev: 3 name (string) "us" decl_file (data1) m.c (1) decl_line (data1) 10 type (ref4) [ 150] const_value (sdata) 65520 (-16) [ dc] variable abbrev: 3 name (string) "si" decl_file (data1) m.c (1) decl_line (data1) 12 type (ref4) [ 120] const_value (sdata) -3 [ e7] variable abbrev: 3 name (string) "ui" decl_file (data1) m.c (1) decl_line (data1) 13 type (ref4) [ 15c] const_value (sdata) 4200000000 (-94967296) [ f5] variable abbrev: 3 name (string) "sl" decl_file (data1) m.c (1) decl_line (data1) 15 type (ref4) [ 161] const_value (sdata) -1 [ 100] variable abbrev: 3 name (string) "ul" decl_file (data1) m.c (1) decl_line (data1) 16 type (ref4) [ 168] const_value (sdata) 18446744073709551615 (-1) [ 10b] GNU_call_site abbrev: 4 low_pc (addr) 0x00000000004003e7 GNU_tail_call (flag_present) yes abstract_origin (ref4) [ 16f] [ 119] base_type abbrev: 5 byte_size (data1) 4 encoding (data1) signed (5) name (string) "int" [ 120] const_type abbrev: 6 type (ref4) [ 119] [ 125] base_type abbrev: 7 byte_size (data1) 1 encoding (data1) signed_char (6) name (strp) "signed char" [ 12c] const_type abbrev: 6 type (ref4) [ 125] [ 131] base_type abbrev: 7 byte_size (data1) 1 encoding (data1) unsigned_char (8) name (strp) "unsigned char" [ 138] const_type abbrev: 6 type (ref4) [ 131] [ 13d] base_type abbrev: 7 byte_size (data1) 2 encoding (data1) signed (5) name (strp) "short int" [ 144] const_type abbrev: 6 type (ref4) [ 13d] [ 149] base_type abbrev: 7 byte_size (data1) 2 encoding (data1) unsigned (7) name (strp) "short unsigned int" [ 150] const_type abbrev: 6 type (ref4) [ 149] [ 155] base_type abbrev: 7 byte_size (data1) 4 encoding (data1) unsigned (7) name (strp) "unsigned int" [ 15c] const_type abbrev: 6 type (ref4) [ 155] [ 161] base_type abbrev: 7 byte_size (data1) 8 encoding (data1) signed (5) name (strp) "long int" [ 168] base_type abbrev: 7 byte_size (data1) 8 encoding (data1) unsigned (7) name (strp) "long unsigned int" [ 16f] subprogram abbrev: 8 external (flag_present) yes declaration (flag_present) yes linkage_name (string) "s" name (string) "s" decl_file (data1) m.c (1) decl_line (data1) 1 EOF exit 0